Get a weekly article in your inbox about marketing, contracts, invoicing, sales for your awesome small business.
Software development is hard. Whether you’re a team of two or two hundred, the same issues seem to pop up. What if you knew some of the problems to expect so you could plan for them, or avoid them altogether? It won’t make the job easy, but it might make success possible.
Before you rouse the troops, buy management software and start drawing on whiteboards, take a lesson from an odd source–board games. In the rules for most games, the very first paragraph is labeled “Victory Conditions.” That paragraph clearly states what you must do to win.
So what do you need to do to make your project a success? Think hard about this, because you and your team need a clear goal. The details may change during the course of the project, but you need to work out with the client what you need to achieve for both parties to be satisfied.
Depending on the size of the project and the number of folks involved, you might use software project management software, software to track changes and bugs, plus the software you’re working on. That’s a lot. Is everyone on the team familiar with these tools, or do you need to factor in time for them to learn? Does the software match with your development style?
Maybe you’re using the Scrum Development model of Agile Development. In Scrum Development, there is no Project Manager. There’s a Scrum Master, but their role is far different from that of a traditional Project Manager. The model might be useful, but has your team used it before? Are they comfortable in their assigned roles?
Agile Development is very flexible because it uses evolutionary development and adaptive planning. This takes into account the idea that the client’s requirements may change during the process. Flexibility is good, but you want to bend, not break. If the client keeps changing things, it’s inevitable that you will miss both your timeline and your budget.
Communication comes in two flavors during a project, and they’re both critical. The flow between you and your client, and the flow within the development team.
From the start, try to get a clear understanding of what your client wants. Yes, it’s impossible to write perfect Requirements and Specifications documents because changes are inevitable, but at least give your team a decent starting point. If your client drags their feet when sending you important files, or is slow to respond to emails and calls, you must be direct with them. Oftentimes, they won’t realize they’re part of the problem until you explain it to them.
The second area of communication is within your team. Sometimes people with coding skills struggle with people skills. You need to guide your team, but not micromanage them. The Agile Development model calls for daily meetings, but you have to customize for your project until you have just enough face time to keep moving forward.
You want to please your client, but ask yourself if you are being realistic about your timeline for the project. Sprints and rapid development are great, but are you killing your programmers? Multitasking wrecks productivity. If you’ve given your best programmer three different projects to work on, can they really keep up with tracking changes, documentation and accurate billing?
Your employee is busy tracking bugs, but are they tracking their hours? For a business that bills hourly, this is hugely important. When employees don’t properly track their time worked, you’re losing out on revenue. How do you get employees to track their time?
When choosing your toolbox, consider the cloud-based software Basecamp to organize your project and help everyone keep in touch. Trello and Asana assist with the critical area of communications. GatherContent aids you and your client in collaborating on website content. And Sifter facilitates bug and issue tracking.
So make sure your team knows the “victory conditions,” and how to use their tools, and then step back and let them do their thing.