Managing software projects is the most challenging, frustrating, humbling, job you can accept. It’s also the most rewarding, fulfilling, fun, job I’ve come to love. Projects will fail for a multitude of reasons. Sometimes a project manager has complete control over and other times they have little or none. Using these failures as learning opportunities is key. On the flip side, successful projects tend to build confidence and morale. A few things I have learned over the course of managing both successful and unsuccessful projects are:
Team dynamics make the project
Whether a project is long or short, the team working together has to mesh and trust one another. This can be especially challenging for short term projects, as teams are created as needed for clients. More times than not, it is a group of Developers, Quality Analysts, Project Managers, Designers, etc. being put together as a new team to accomplish a goal. While at times it is hard to want to take the time to allow the team to become cohesive, it is essential. As a remote employee, I find it to be even more important, as team members do not see each other around the office or know one another at all.
One great way to do this is by having an internal project kickoff to allow the team to get to know one another before work starts. Also, having team only retrospectives can add a lot of value. Try adding some fun “get to know each other” items, so team members can feel relaxed and more comfortable with one another. What career would you pursue if you weren’t doing what you do now and What animal would you want to be and why are two easy, fun questions.
Shield developers from as much “noise” as possible
While there are probably some developers who love business talk, the majority I have had the pleasure of working with seem to want to avoid non-technical meetings more often than not. As a project manager, I try to keep as many distractions away from the development team as possible. Since I do not have a technical background, I never try to speak for them, but always take questions back to them that I don’t feel comfortable answering. Usually, these take a few minutes for them to answer, and saved them from sitting through a 30 or 60 minute meeting. When meetings are required for the whole team, always have an agenda and keep the meeting short and focused.
Agile is best
The Agile Manifesto has helped define what is important for teams to focus on. It reads:
Individuals and interactionsover processes and tools
Working softwareover comprehensive documentation
Customer collaborationover contract negotiation
Responding to changeover following a plan
It ends by stating:
That is, while there is value in the items in black, we value the items in purple more.
As a project manager, I tend to see teams flourish in environments that support the ideas in purple. That’s not to say all projects will fail without valuing agile principles, but constant inspection and adaption of processes, tools, teams, and work is important. The future is impossible to predict so why try to do it? Agile acknowledges changes will come, and provides the framework to address them as they are presented.
Ensure the team has a groomed backlog
Project managers should create or ensure the appropriate individual has created a backlog of user stories that represent the needs of the application. Each story should clearly lay out what is expected with acceptance criteria describing what satisfies the requirement.
Before each new sprint starts, re-prioritize the stories and features with your product manager or client team, so that the most important thing is always the next thing to be worked on. Keep the stories small and manageable, so re-work is reduced and users/customers can continuously see progress and provide feedback in a timely manner. This will help eliminate the end of project “gotchas” that the customer and development team despise.
Put the target on your back
No one wants to be the responsible one for a project failing. As a project manager, I feel it is my responsibility to accept the failure. This is different than saying the failure was all my fault. You win as a team just like you lose as a team. Somewhere along the way, as a project manager and the eyes of the project, I must have missed something. Whether that was not recognizing lack of progress or struggles from the development team, unresponsiveness of a client, or a multitude of other issues that cause failures, it is my job to recognize these as early in the process as possible and remedy as needed. The project manager is the go-to person for both the client and the development team and needs to bridge the gaps throughout the process, ensuring everyone is on the same page (this is at least true of the PM jobs I’ve had- I understand this is not always the case.)
Keep the goal in sight
For projects both large and small, it is important to ensure the team knows what they are working toward and what “done” means. Endless sprints and iterations of work with no vision to a goal can be nerve-wracking. For longer term projects, this can be hard. Many times, a large goal will be in place such as Re-write current application with an anticipated completion date associated. As time progresses and more unknowns are found, the end goal remains, but the path of getting there diverts many times. Transparency is important here. Make sure the team continues to understand what the goal is, if the timeline has changed, and how this affects them. In the interim, celebrate the small wins. As feature sets are finished, communicate this, and how it is a step toward the bigger goal. Nothing feels as good as putting the bow on and shipping a completed project.
Above everything else, having fun on your projects is key. No matter how monotonous or frustrating the work can get, a strong, cohesive team that trusts each other can continue to have fun. When work is challenging, figure out ways to help the team be able to connect. This tends to be a bit easier with a co-located team versus a remote team, as the team can grab lunch, happy hour, or do other fun team building activities. With a remote team, there are other options. Have a virtual happy hour. Send the team members a gift card to show your appreciation. Share photos of fun activities people partake in outside of work. As the project manager, take the time to recognize the morale of the team. If people do not seem to be themselves or seem to be unhappy, reach out to understand what problems they are facing and see if you can help.
Managing projects and development teams is challenging. Even with tight deadlines, diverse teams and demanding customers, continuing to focus on the above points has helped me ensure projects move as successfully as possible. While failures do and have happened, learn from them and adjust for the future. Nothing beats collaborating with a strong, fun team working toward a common goal and shipping a product customers delight over.