For those unfamiliar with the basic definition, agile development is a way of managing IT development teams that ultimately returns the control to the businesses through customer focus and a process of continuous planning and feedback. It can reduce inefficiencies and maximise value for the client while allowing organisations to keep a close eye on costs and adapt quickly to change.
Based on a flexible framework, it helps teams maintain a clear focus on the rapid delivery of business value. In the current working environment the pace of change has accelerated and businesses need to be able to react to this – more traditional software development methods do not support change effectively. Agile Software Development allows organisations to prioritise what is important, respond to change and deliver results and business value early. As a result, they can significantly reduce the overall risk associated with software development.
Old vs. new
The difference between Agile, and a more traditional software development method known as Waterfall, is how they approach the various stages of development. Traditionalists spend large amounts of time designing the whole system before anything is actually built.
> See also: Future shock: the race to embrace agile development
Once development begins changes can impact the whole design and be very costly. Agile provides a system whereby planning and design are done in smaller ‘chunks’, uncovering any changes as soon as possible while keeping costs to a minimum. Additionally, Agile encourages the ‘client’ to be closely involved in each phase of the process, reducing the lag on feedback time.
Waterfall is a sequential design process, where the design and development requirements for a system are mapped out up front. By having all the requirements beforehand everyone knows exactly what they are aiming to achieve. This means the client knows what to expect and has an idea of the time frame, size and cost of the project.
The down side to this traditional approach is that the client may not get as many opportunities to feedback as they would with Agile development or have the room to change elements of the design/development. Because the process is sequential, once a stage of development has been completed you can’t easily go back to a previous stage to make changes. This is fairly risky for a business because if the initial requirements of the project change in any way, the project is almost guaranteed to fail. In turn businesses would then incur additional costs to rectifying any issues and the project would take longer than predicted.
Agile methodology follows an incremental approach to development and has a strong focus on the delivery of what the client needs rather than what they think they want. Developers start off with a simple project design instead of a large document, and work on small modules. As short iterations of work on the project are done (usually in weekly or fortnightly cycles) priorities of the project are reviewed, evaluated and tested. At each stage an increasingly complete product is provided to the client which they are able to use and provide feedback on.
Each methodology has its pros and cons, however, evidence shows that with the pace of change increasing many more companies are choosing to adopt an Agile Software Development approach.
Busted: agile myths
Agile is a silver bullet – there is nothing to say that an Agile project will succeed. Success very much depends on those driving the project. However, because Agile allows you to make changes, there is plenty of opportunity to review and refocus the project if needed.
Agile is not scalable- generally speaking, software development itself has scaling issues. The larger the project’s scope, the greater the possibility for failure; the greater the number of people involved in a project, the greater the communication risk and complexity. Agile development breaks one project down into smaller projects with shorter delivery time frames and smaller teams so the room for error is reduced and the activity is broken into small, manageable pieces.
Agile means no planning – this really relates to a lack of understanding of an Agile planning approach. Most Agile teams spend as much, if not more, time planning projects, however the planning is not all upfront much of this is spread across the lifetime of the project. Agile's focus on delivering early and often means that planning is focused on tangible outcomes.
Agile means no documentation- a more accurate way of looking at this is that Agile doesn't do documentation for documentation's sake. Documentation, as with any other deliverable on a project, gets estimated and prioritised like any other task.
Whilst both approaches to software development are still in use today the last five years has seen Agile Development quickly becoming the preferred approach for many of the world’s leading technology companies. Many industry leaders have incorporated and embraced Agile Development and now both big and small companies are increasingly looking to Agile solutions for their businesses and thriving as a result.
Sourced from John Cooke, director at Black Pepper Software