Tuesday, 10 January 2006

Why agile principles are important

The principles of agile methods such as Extreme Programming and Lean Development are simple rules that govern behaviour. They guide practices and facilitate decision-making at the 'coal-face' rather than restricting it to the management echelons of an organisation by providing a framework that enables experienced agile developers to make intuitive decisions quickly without having to wait for instructions or permission.

An experienced agile software development team is a highly social group that is self-organising around these principles and acts with coordination and collective behaviour. This collective behaviour comprises:

  • Collective mind [1] where individual team members develop shared understandings of the team's tasks and of one another, and come to understand how their work contributes to the work of the team thereby facilitating team performance.
  • Swarm intelligence which gives a team the ability to adapt to changes, and robustness which enables them to still perform and deliver even when one or more members fail.
Extreme Programming principles:
  • Humanity : Acknowledge human frailty, leverage human strengths, and balance individual and team needs.
  • Economics : Enhance the option value of the software and the team while remembering the time value of money.
  • Mutual benefit : All activities should benefit everyone.
  • Self-similarity : When something works in one context, try it in another. Even if it eventually doesn't work, it's a start.
  • Improvement : 'Perfect' is a verb and not an adjective. Always seek to improve.
  • Diversity : The team should comprise people with different backgrounds, skills and perspectives.
  • Reflection : Think about how you're working and why you're working.
  • Flow : Deliver a steady flow of business value by engaging in all activities simultaneously.
  • Opportunity : See problems as opportunities for change and learning.
  • Redundancy : Don't be afraid to include redundancy, e.g. a distinct testing phase after development, if it helps prevent disaster.
  • Failure : If you're having trouble succeeding, don't be afraid to fail.
  • Quality : Always push for higher quality.
  • Baby steps : The overhead of small steps is less than when a team wastefully recoils from aborted big changes.
  • Accepted responsibility : Responsibility cannot be assigned. It can only be accepted.
Lean principles:
  • Eliminate waste and spend time only on what adds real value for the customer.
  • Amplify learning and increase feedback when facing tough problems.
  • Decide as late as possible to keep options open as long as practical, but no longer.
  • Deliver as fast as possible , aiming to deliver value to the customer as soon as they request it.
  • Empower the team so that people adding value use their full potential.
  • Build integrity in , don't try to tack on integrity afterwards.
  • See the whole , don't optimise parts at the expense of the whole.
References:
[1] K. Weick and K. Roberts, "Collective Mind in Organizations: Heedful Interrelating on Flight Decks," Administrative Science Quarterly, 357-381 (1993).






Posted by Simon Baker - Permalink

1 Comment

You or your readers may be interested in this blog all about agile development:

http://www.allaboutagile.com

In particular there is a description of 10 key principles of agile development irrespective of which methodology you may be using:

http://kw-agiledevelopment.blogspot.com/2007/02/10-things-you-need-to-know-about-agile.html

And there's also an agile development forum "all about agile" for further discussion with peers:

http://www.groups.google.com/group/allaboutagile

I hope these resources are useful.

Kelly Waters
http://www.allaboutagile.com

Comment by Kelly Waters

Creative Commons Licence

preload call-us-on.png preload chat-over-coffee-on.png preload coffee-cup-on.png preload guspower-avatar.png preload simonbaker-avatar.png preload email-on.png preload meet-the-crew-on.png preload about-on.png preload bits-on.png preload blog-on.png preload coaching-on.png preload consulting-on.png preload crew-on.png preload home-on.png preload software-on.png preload other-talks-on.png preload phone-on.png preload previous-talks-on.png preload boost-icon-on.png preload jumpstart-icon-on.png preload liftoff-icon-on.png preload powerup-icon-on.png preload skype-on.png preload speech-bubbles-on.png preload creative-commons-on.png preload slides-on.png preload video-on.png