Managing a software development team is akin to herding cats. Does this sound familiar? Have you been involved in projects as a stakeholder or project manager where you have a constant uneasy feeling the project is not on the right track? No other engineering discipline allows team members to so easily stray from the planned course at any given time in the project. From the first line of code to the last bug fixed before the product is chucked in the waste bin, there is ample opportunity to run off and write the War and Peace of solutions, and possibly miss the mark entirely when doing so.
Process makes mostly perfect
Enter Process. You can take the most brilliant team of engineers and quality assurance staff, give them a seemingly well-defined project, and without process, your odds of getting what you envisioned are 50/50. Okay, I made those numbers up, but I think we can agree that your odds are significantly reduced. Don’t agree? Read on and see if I can convince you.
When your vision doesn’t match reality
The outcome you envisioned is typically a combination of business objectives including functionality, usability, visual appeal, cost and timeline. Missing the boat on any one of these could be considered failure depending on the stakeholder priorities. Programmers and testers are pretty good at functionality, if it is clearly defined, however usability and visual appeal are highly subjective. Cost and timeline seem pretty clear cut, these should be determined at the beginning of the project and determination of success is a binary decision. Unless something changes, but then that never happens in software.
Consistent process, in our case, Agile-based, holds the key to neutralizing the problems that doom so many software development projects to failure. Oh yes, and an experienced project manager to orchestrate the process.
Not an exhaustive list, but some critical high points to include in your process are:
- Daily development meetings to ensure team members are not off in the wrong direction or spinning their wheels on a tricky problem. Course corrections can be made quickly, with little impact to the project.
- Properly sized sprints with customer reviewable results and user acceptance testing to ensure the team is on the right track.
- Regular budget and progress reports sent to all stakeholders.
- Documented change requests to ensure schedule and budget impacts are clearly understood by all concerned.
- Online visibility for team members and stakeholders of project and progress information is critical.
Understanding the “why”
If you feel that you are already doing all of these things and not experiencing that warm fuzzy feeling that some level of certainty and control can bring, ask yourself if the team is really buying into the process.
- Is there a forum to gather feedback on your process?
- Are you implementing continuous improvements and refinements to the process?
- Are the staff properly educated on the process, and most importantly, the reasoning behind the process?
Agile is all about transparency and everyone being comfortable speaking plainly about the challenges they are encountering. Technical minds must know why they are doing something and even then they will have an opinion on how to make it better. Create those channels in your organization and the assimilation will begin.
I have been in the software engineering business long enough to have been part of many projects using the waterfall method, where design, development and tests were performed serially, and I don’t want to go back. Enduring long periods of radio silence from the development team while the stakeholders pray for good results is no way to run a project. And maybe it’s just me, but I’m not quite ready for the emerging trend, or attempts at a trend if you like, toward the structure-less organization that self-organizes. I know our customers certainly are not ready for that. A well-defined and evolving Agile process, designed to fit your organization, is the best answer for managing your projects.
It’s software development, mistakes will happen, wrong paths will be followed and there will definitely be surprises along the way. The key is to accept those as table stakes and develop a process that allows the team to quickly recognize and adapt to the changing course of the project. The alternative is chaos with a healthy dose of hope, much like herding cats.