You have a vision to execute and milestones to meet along the way. You’ve hired a solid team of developers that’s backed by a strong product management group. Despite these efforts, it seems like your projects are always missing their deadlines. You’re not sure how to fix these issues—is it your developers? Your product managers? What can be done?
In this article, we will take a look at four common reasons that software development projects experience delays and how to remedy them to meet your milestones on time.You have a solid team of developers, but you keep missing project deadlines. What’s happening? Click To Tweet
You’re Working on the Wrong Things
Suppose that a product manager writes a specification for user registration, but leaves out some of the required fields. Rather than asking for clarification, the developer tries to “fill-in the blanks” by making assumptions. These assumptions turn out to be incorrect, but the requirement defects don’t surface after the code has moved to production.
The quality assurance team discovers the problem and files a bug report that’s escalated to top priority. Developers are pulled from the current sprint to fix the problem that could have been avoided with a simple request for clarification. The current sprint experiences a delay and the entire project deadline is pushed back by the simple mistake.
We believe that quality is everyone’s job. Even if you have a quality assurance team, developers should take responsibility for poor requirements and request clarification before moving forward with the specification. They should avoid making any assumptions and provide constructive pushback to product managers to ensure quality code on a timely schedule.
Your Processes Are Slowing You Down
Suppose that you’re an entrepreneur working on a minimum viable product (MVP). You aren’t worried about writing tests or setting up continuous integration because you’re not even sure that there’s a market for the product. After several months, you’ve achieved product-market fit and you start onboarding developers—but suddenly, you start running into delays.
Every development team has a set of processes to help ensure a smooth development process, such as code reviews, acceptance processes, code merge procedures, continuous integration, and deployment processes. Advanced techniques might include feature flipping and limited rollouts of new capabilities. And each of these processes are supported by their own software tools.
It’s important to have the right processes in place to avoid missing project deadlines. For example, continuous integration can ensure that a developer doesn’t introduce any new bugs to a production code base—bugs that can significantly delay a project. Code reviews and pair programming processes can also help ensure that everyone is working at optimal speeds.
Your Team Lacks the Right Expertise
Suppose that you have an embedded systems development team, but you’re expanding into web development. While the developers may be very experienced with hardware programming, they may lack the expertise when it comes to web development and be incapable of writing high-quality code. Unit testing, code reviews, and merge procedures may be unfamiliar to them.
It’s important to ensure that your development team has the right mix of skills to execute a project. If you decide to hire junior developers and train them in-house, you should have an adequate base of senior developers to train them. There may also be different expertise required for different projects, such as differences between CRUD and real-time web applications.
There’s also the issue of non-technical skills. In some cases, developers may have solid technical abilities, but may not grasp the business implications and severity of defects that they encounter. These issues are so prominent among developers that we recently created the 10X Dev Academy to provide this kind of training to help developers improve their non-technical skills.
You Have Made Poor Architecture Choices
Suppose that you have a developer that’s very interested in open source projects. They insist on using the latest new technologies in core projects, claiming that they will help make the entire application more secure and performant. Early successes could encourage managers to allow even more cutting-edge technologies into the project.
The use of cutting-edge technologies has two big disadvantages:
- New developers may not understand how to use these technologies. If the original developer leaves, the project could be left in a lurch, particularly if a lot of code has been rewritten to leverage the new technology.
- There’s no guarantee that new technologies will be well-maintained. If the open source project loses steam, you may need to migrate to a new solution or take on maintenance of an entirely new project—the open source component.
We believe that every project has an “experimentation budget”—that is, the amount of uncertainty or problems that it can tolerate from experimental or unproven technology. Often times, we only allow one major unproven piece of technology, such as a newer open source project, and the entire team has to understand how to use the technology.
How to Get Back on Track
It’s tempting to throw more engineers at a problem to make it go away, but in reality, more people doesn’t equal more performance. In fact, adding more engineers can complicate the problem and make it even more difficult to solve over time. New developers may have their own idea of how to implement certain functionality and further delay a project.
At AELOGICA, we have pioneered the idea of team augmentation, which is capacity-oriented rather than project-orientated outsourcing. We provide a team of stable capacity for long-duration engagements for a fixed monthly fee. If you need specific expertise, you have access to an immediate team member that can step in and help out.
Team augmentation works especially well for established and growing businesses with large code bases or multiple applications to maintain. We can take over some of the repetitive tasks that most developers avoid, such as writing tests, quality assurance, or fixing bugs. Significant knowledge is also built-up by the team over time.
If you’re interested in learning more, contact us for a free consultation.