Everything you need to know about the reality of agile software development

John Cooke is managing director at Black Pepper Software
John Cooke is managing director at Black Pepper Software

Agile software development offers a flexible framework to help 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 and this is where agile is well placed.

Agile software development allows organisations to prioritise what is important, respond to change, and deliver results and business value early. As a result, businesses can significantly reduce the overall risk associated with software development.

Agile ultimately returns the control to the business through customer focus and a process of continuous planning and feedback. Agile also allows organisations to keep a close eye on costs and adapt quickly to change.

Agile versus waterfall

All development goes through certain stages: conception, initiation, analysis, design, construction, testing, implementation, and maintenance. The difference between agile and waterfall development is how they approach these various stages.

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 timeframe, size and cost of the project.

The downside 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, the business would then incur the additional costs of rectifying any issues, and the project would take longer than predicted.

Incremental development

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.

The mind-set of an agile development team is to plan for and embrace change. It is this responsiveness and flexibility that gives agile the edge in the business environment. Businesses are constantly changing and may have to react to external changes and agile can accommodate this. Testing is done as the product is developed, ensuring that any bugs are found early on in the process, and the product can be released much more quickly. Early feedback also means that developers can create a more specific product, helping to meet the client's needs more effectively.

Each methodology has its pros and cons, but evidence shows that with the pace of change increasing many more companies are choosing to adopt an agile software development approach.

Agile myths versus reality

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. This helps to avoid any additional time and costs.

Agile is not scalable: generally speaking, software development itself has scaling issues. The larger the project's scope, the greater the possibility for failure – and 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 timeframes and smaller teams, so the room for error is reduced and the activity is broken into small, manageable pieces. This helps businesses keep control over a project and manage a project more effectively.

Agile means no planning: this really relates to a lack of understanding of an agile planning approach. Most agile teams spend as much time, if not more, planning projects, but the planning is not all upfront, and much of it is spread across the lifetime of the project. Agile's focus on delivering early and often means that planning is focused on tangible outcomes. It allows teams to respond much more easily to changes in requirements, business demands or people issues. This gives businesses greater flexibility.

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. Keeping documentation to a minimum ensures that time isn't wasted on reams of unused plans and reports.

The rise of agile

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.