Agile approaches

There are a number of specific Agile approaches, as well as a generic agile style of working.

Extreme Programming is a software development methodology, containing mainly programming practices such as Test Driven Development, Pair programming and Continuous Integration, but little management.

Lean, which came from the manufacturing environment, is all about efficient processes. The focus is on eliminating waste from the production line and thereby reducing cost.

Scrum is a very simple agile process, designed for delivering software in small chunks, taken from a backlog of work to be done. The strength of Scrum is that it is very simple. But this is also a weakness because there is no concept of a 'project' that is managing delivery of a finite piece of work, with a process containing a beginning, middle and end.

Scrum, Lean and Extreme Programming are lightweight approaches with minimal structure and guidance.

DSDM and Agile Unified process are stronger but are still agile. The strength of DSDM lies in it being designed to deliver projects in an agile way.

What is Agile?

Agile, in this context, is a generic style of working. It takes a holistic view of projects, rather than being just a set of delivery techniques.

Have you ever been involved in a project that spanned several months only to have customers not use the end result? Most developers have and probably more than once. Assuring that what you develop actually addresses the needs of the client has always been one of the biggest challenges in any development.

Addressing this problem was one of the motivations behind the Agile manifesto. The first guiding principle of the Agile manifesto states that 'Our highest priority is to satisfy the customer through early and continuous delivery of valuable outputs'.

What is Agile?

In a fast paced environment Agile ensures that solutions meet the business needs and is focussed on timely delivery.

Delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions is fundamental to an agile approach. This does not mean that no planning should be involved – on the contrary, planning activities should be concentrated on the different options and adapting to the current situation, as well as clarifying confusing situations by establishing an environment where rapid action can be taken.

Agile is all about flexibility, the principle of 'responding to change over following a plan' is considered a strength of agile. This does not mean that Agile does away with the need for planning. Things change, and you want to have flexibility to adjust and react to those changes. You clearly want to have a plan for where you're headed and approximately how you'll get there. But you also want to leave room to adjust your plan.