Posts Tagged ‘Agile’

Agile software development and project management has become much more mainstream in recent years.  This is reflected in the increasing  number of blogs and books available on the subject.  But for someone approaching the subject fresh it can seem somewhat overwhelming and unclear where to start.  It can also look like you have to go read 20 books just to understand it.  Which is unfortunate as underpinning the whole approach are some very clear and simple edicts from the Agile Manifesto :-

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Agile then in it’s purest simplest form is about removing layers of complexity and unnecessary paperwork and processes in software development.  It is really about working closely with the customers and end users and iteratively evolving the software to meet their needs.  Understanding these principles is important and can serve as a guide to understanding how to navigate through the many agile techniques and tools.

Agile projects still contain the same kind of ingredients as any software development project namely

  • gathering and documenting requirements
  • planning and estimating
  • development cycles
  • testing
  • managing change

Where Agile often differs from other software development approaches is in the quantity and order of these ingredients in the recipe, by doing just enough requirements gathering and iterating quickly through build/feedback loops.  Estimating is still important to see what areas can be addressed during those iterations but often actual team velocity as measured through initial iterations is a better guide to future progress.  You don’t plan too far ahead so the next iteration can be determined based on emerging requirements or understanding.

The tools of an Agile team

Often associated to Agile projects but really just pragmatic best practise techniques versus anything inherent in an Agile approach

  • User centric stories to describe requirements leading to Agile goal of less documentation
  • Wireframing visual design – much quicker and easier to change than developing UI using software
  • Relative estimation and team based estimating
  • Time boxed iterations
  • Test driven development
  • Retrospective review cycles
  • Automated and continuous build/integration

However which of these you choose to adopt very much depends on the needs of the project and the situation at hand.  Keeping it simple is key as well as adapting based on the experience of both the team and client.  Trying to get a team to adopt new approaches completely alien to them will often result in failure.  In the end Agile should be about people interacting which should be very natural and processes and procedures should be minimal and not interfere with progress.

In the end you need to adopt the approaches, techniques and tools that are appropriate to the project, team and client and this will often vary.  Agile techniques can be very effective but the key is embracing the underlying principles as outlined in the manifesto and not getting lost in acronyms and debates about methodologies.

Useful resources on Agile approaches



Read Full Post »