Healthy sales often depend on being first to market. Innovation and rapid deployment are important to tech and startup companies. This is why Agile software development methods are so popular. It can deliver software quickly while allowing for flexibility, feedback, and risk and change management.
Making development predictable
But fast turnaround is only the first phase. Speed has to be balanced against performance, reliability, and costs. Your product has to be sustainable in the long term. It has to integrate with existing systems, often across a variety of platforms.
What this all boils down to is predictability – software development that can be consistently delivered on time and trusted to meet requirements, pass quality assurance testing, and bring value to partners and customers.
The level of uncertainty
Many companies adopt Agile or hybrid Waterfall approaches because they’ve seen and heard that it works for today’s development environments. But because it’s flexible, small and large companies may not be using it the same way or for the same reasons.
These methods require defining and identifying requirements and risks, planning, estimation, and incremental development through Agile timeboxes. But discovering and designing as you go along is often too big and complex, depending on both the size of the project and the size of the team. Too many people. too many components, and undisciplined management can cause things to be overlooked. Changing requirements and priorities can make an iterative process essentially useless.
Enterprise Agile software development depends on control and visibility to reduce uncertainty. Using velocity, story points, and release reporting help create early confidence on progress and more accurate timelines. Relying on the methodology itself to reduce time and costs is a fallacy.
Redefining the process
The software development process should involve doing enough investigation upfront to create more reliable plans and estimates. This in turn means more faith in commitments to meeting requirements while assuring higher levels of quality. Using Agile is not about responding to changes in plans, but sticking to a plan that can incorporate change. A better plan is more likely to accommodate change without disrupting the project.
Agile software development can reduce the “cone of uncertainty” by delivering smaller, working pieces of code, and correlating the progress with project data through velocity. As the project moves forward, predictability comes with increasing ability to deliver on estimates, and the experience translates to future projects. There is still going to be a need for changes and priorities, but these can be viewed in terms of the incremental rather than the iterative process.
Small projects may be better realized by iteration and fast, adaptive change, depending on the team and the requirements. But larger, more complex problems will have to involve predictability in obtaining results, and that’s gained from making everything align with an incremental, controlled process. Big projects may be slowed not by requirements, risks, or even the size of the team, but by bad planning.
Want to learn more on techniques of agile development – learn here for comparison on scrum and kanban.