Building new software takes a lot of time and coordination. Even with fantastic programmers, these types of projects can experience delays — just as with any project. While creating a program is different from building a new highway, all projects require some project management to keep things going and maintain communication across different groups and people with varying styles.
Here are our suggestions for ways to make your software project develop smoothly:
- Have a plan. Many projects start with a list of requirements and little more. How do you know where you’re going without a map? Wandering can be fun for travel. But you also realize if you want to see the Louvre, the Eiffel Tower, and the Arc de Triomphe in one day that a plan will help you efficiently do so. If your project requires X, Y, and Z, what paths will you take to get you there without stumbling into dead-ends?
- Have a Project and Technical Manager. A project manager handles the business end while a technical manager must approve all technical decisions during the process. Together, they work to see the project completed on time and correctly. As one project manager points out, one area software differs from other projects is in the risk and testing required at the end. “Software projects are hard to measure sometimes because some organizations do not have a mechanism in place to track their defects so they don’t know how to measure the success or the quality of the project,” she said.
- Understand things change. This is a challenge because in Tip No. 1 we told you to create a plan. But sometimes, we find new roadblocks and must deviate. The trick is to be ready and do so efficiently. Host daily stand-up meetings (15 minutes) for each developer or developer team lead (based on size) to clearly state what they did yesterday, what they did today, and any blockers they are facing (i.e., waiting on endpoints to finish log-in page). If you are familiar with the project management approach Agile, we recommend using it to assist with changing requirements.
- Architect the software system. This means to have a formal set of documents that design the system with technical decisions pre-made based upon a combination of past experience and experimentation. Only proven things should be included.
- Share the plan with all stakeholders. Do this before development starts and share widely with team members, developers, and anyone else involved in any way. That way everyone starts on the same page and has a place to return.
- Seek buy-in from stakeholders early. One common challenge: a team starts a project, but then someone halts it one-quarter of the way in. Maybe something wasn’t communicated correctly, or someone disagrees with the direction the project is headed. Use mock-up designs, diagrams, and documents to obtain buy-in from stakeholders for the system and its cost. Stakeholders should formally sign-off on all parts of the project before it begins. Using a collaboration tool such as Invision in which everyone can see and play with designs as they occur.
- Estimate work clearly with Fibonacci Numbers (1,3,5). The Fibonacci numbers are the numbers in an integer sequence, called the Fibonacci sequence; every number after the first two is the sum of the two preceding ones. The numbers equal the number of days estimated one part of the project to be completed. The sequence is used to account for uncertainty as the task gets larger. Thus, anything above five should be further divided so that all tasks fit into either one, three, or five days. The work then is divided into one- or two-week sprints.
- Eliminate distractions for developers. Meetings interrupt workflow, as does noise from other teams and conversations with people. While of course work can’t be a full grind every single minute, you can keep your team focused by reducing the number of meetings for developers, the number of people interacting with developers, and other distractions such as the sales team’s phone calls.
- Provide the team with the tools they need to succeed. Do not skimp on getting everyone what they need to do their best work. If a pre-built library will save a week of work, but costs $3,000 upfront, buy it. If a developer has a favorite integrated development environment (IDE) or editor, make sure he/she has it. Google goes as far as allowing developers to choose from among Linux, Mac, or Windows PC. Each member of the team may have a different machine and OS. Having your preferred tool is proven to make a difference in productive development.
- Reward people for good work done within the deadline. This may be an outside trip to a bowling alley at lunch for the developers or a day of go-karts or a gift card to somewhere they love. The important thing is to recognize effort and to give motivation for the team to do its best work.