It might be best to start by explaining what was happening before Agile Development became the latest IT development methodology.
Traditionally, software development has been a systematic, orderly four step process, starting with analysing what is required to complete the task, designing the software, coding, and finally testing. This is called the Waterfall method. This strategy has its own set of problems, because change is often inevitable and its rigid structure doesn’t cope with change too well.
- What happens if time is running out to get the job done? Does the testing phase get reduced, or worse still, bumped altogether?
- How do you really know where you are along the development path at any given moment? This can cause havoc if budgets are being stretched or the agreed deadline is fast approaching.
- What if you get to the end and it doesn’t work? Or it doesn’t do what it’s supposed to do? Will there be time or money to make changes that late in the game?
Where Agile Development is different, is all four stages (analysis, design, coding and testing) are happening at the same time for the duration of the process. In a nutshell, little pieces of the software are delivered at various stages along the way, rather than delivering everything at the end, praying it works and is what the client wants. Smartphone apps are a great example of Agile Development. The initial release is merely the first iteration, with extensions being added over time, allowing the end user to update their app as the software is developed.
How does Agile Development work?
- In collaboration with the client who has requested the software development, the project is broken down into smaller, manageable pieces of user functionality.
- These smaller pieces are prioritised according to what the client nominates as the most important parts. These are delivered in stages along the way to ensure they work (called iterations), and are what the client requires. The most important parts are developed and delivered first, with each subsequent part slightly less important than the previous, all the way down to the final least important part at the end.
- The development team starts designing, coding, testing and analysing, with the client providing ongoing feedback so continual improvement takes place.
- Planning will be far more flexible as you either realise you’re on track in terms of time and budget (which rarely happens), or realise you don’t have enough time and/or money to complete the project as initially hoped. However, because you’re doing the most important parts first, the ramifications aren’t anywhere near as profound, and you can plan and adapt for the best possible outcome.
What are the benefits of Agile Development?
It’s about the people
Instead of emphasising the process of software development, Agile Development emphasises the people involved in the process. Small teams with a wide range of skills come together to create a software solution for the client. In order for them to succeed, they must work together and communicate every step of the way, both within the team and with the client. Getting this outside perspective can help you discover errors and other functionality issues within your code. More experienced programmers can help you figure out how to monitor and manage your logs, which only improves the quality of your code. Often members of the team will find themselves diving in and helping out in areas outside of their area of expertise in order to get the job done on time and on budget.
It’s about the software
Because the software development process is a constantly moving beast, there is little need for detailed documentation. What is the point of creating time consuming detailed documentation, only to have it change constantly throughout the process? Instead, while there is still some planning and documentation, the focus primarily is on software development instead. This means simplifying the process by starting with the most important iterations, getting them right one step at a time, before moving onto the next part.
It’s about partnerships
The beauty of Agile Development is the collaborative effort of all involved. The involvement of the client throughout, combined with enthusiastic professionals who come together to create the software, provides an environment where teamwork is paramount. Every stakeholder feels ownership of the process, and there is a greater chance of everyone being satisfied with the final product.
It’s about flexibility
Instead of sticking to a rigid plan where the final outcome isn’t known until the end, Agile Development is all about constant change. While this concept can be daunting for some, working within a system where change is accepted, expected and easily achieved throughout the process is far more cost and time effective, and increases the chances of creating a final product that is satisfying to the client. This positive eventuality occurs because Agile Development teams work within their means (i.e. time and budget), the integrity of their plans remain intact throughout, and there’s no race to the finish line at the end causing stress and drama (and often mistakes).
At the end of the day, when you take into consideration time parameters and budget constraints, which in turn influence the quality of the final product, the number one measure of success for software development is – ‘does it work’? For those working within an Agile Development framework, you’ll know during every step. For those using the traditional Waterfall method, you won’t know until the end, and by then it may be too late!
For more detailed information about Agile Development, the Scrum framework, and the processes, systems and tools involved, make sure you download our Agile Development document.