07 April 2008
Agile methodologies seem to be a bit of buzz word lately. A lot of people seem to be using the term in different ways. What is it exactly?
To me Agile is an umbrella term that encapsulates many different things, but its heart is the recognition that a large number of software development projects were failing and perhaps there could be a better way for most projects.
Basic principals of Agile Software Development
- Customer satisfaction by rapid, continuous delivery of useful software
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Even late changes in requirements are welcomed
- Close, daily cooperation between business people and developers
- Face-to-face conversation is the best form of communication (Co-location)
- Projects are built around motivated individuals, who should be trusted
- Continuous attention to technical excellence and good design
- Simplicity
- Self-organizing teams
- Regular adaptation to changing circumstances
Several different interpretations of the Agile manifesto
I've tried to use & implement various agile components process in a number or projects, From short 6-8 week projects with a couple of developers to 18 month projects with up to 50 resources and hundres of stakeholders. Success depends upon the willingness to negotiate, the team's confidence of domain expertise, and the willingness to try new things. Team members who can see the benefits become motivated & start to champion elements effecting their domain.Issues for Client
- Fixed price bid versus Agile is difficult to accept
- Acceptance of negotiation; from the beginning acknowledge that requirements will most likely change
- In return they will get an increase chance of success or at least fewer suprises; this is your chance to leverage 50+ years of software development experience
- Accepting greater risk; trading off a fixed price contract with a higher level of progress feedback. This gives clients the ability to hit the stop or review button much earlier.
- Accepts greater involvement and responsibility; providing accountable feedback earlier in the process.
Issues for Project Managers
- Split the project into as smaller iterations as possible. An iteration being when something useful is complete.
- User stories lead to less detailed specifications to write & update.
- Be more proactive in managing scope-creep,resource workload & resulting budget changes
- Involve the team in task planning
- Enforce use of tools amongst team - wiki updates, bug-tracking, task pool, daily builds, test coverage [BDD & TDD]
Issues for Programmers
- Closer interaction with client/customer leads to increased understanding, but can lead to unplanned for feature creap.
- User stories provide less detailed specifications, must think before coding
- Smaller milestones mean regular deadlines
- Behaviour Driven Development [BDD] & Test Driven Development [TDD] means developers will have to get used to writing their own tests [unit/functional/integration].
- Developers should split code into very small routines - which are easier to test, reuse and share

Trackback URL