In this post, I am presenting an overview of agile methods. I am an advocate of the agile approach to software development and I am really excited writing this article. I recommend you relax and have fun reading just as I enjoyed writing it. In the agile community, we value communication, simplicity, feedback, courage and humility. I am sure that after reading this article, you would like these values too especially if you have you been following the strict traditional ways of developing softwares.
- Agile methods came in as a reaction to traditional ways of developing software and acknowledge the “need for an alternative to documentation driven, heavyweight software development processes”.
- Agile methods are actually a collection of different techniques (or practices) that share the same values and basic principles.
- According to cohen (2004), there is lack of literature describing projects where agile methods failed to produce good results.
- According to Highsmith, being agile means being able to “Deliver quickly, change quickly and change often”.
Before going into the different agile methods, it is important to understand the agile manifesto and what the movement is all about. The manifesto reads as follows:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more (web: www.agilemanifesto.org).
Types of Agile Methods
Agile methods have much in common, such as what they value, but differ in the practices they suggest. Some of the different methods include:
- Extreme Programming (XP)
- Crystal Methods
- Feature Driven Development (FDD)
- Lean Development (LD)
- Dynamic Systems Development Methodology (DSDM)
Extreme programming (XP)
- The hottest agile methods to emerge in recent years.
- Has some 12 awesome rules you can follow for any project (The planning game, Small release, Metaphor, Simple design, Tests, Refactoring, Pair programming, Continuous integration, Collective ownership, On-site customer, 40-hour weeks, Open workspace).
- Key principles include: Communication, feedback, quality work, simplicity and courage.
- Team size generally agreed to be from 2 to 10 people.
- Has a recommended iteration length of 2 weeks.
- Distributed teams are not supported because of XP's focus on community and co-location
- Scrum, along with XP, is one of the more widely used agile methods.
- Has three iterations called sprint consisting of the following: Pre-sprint planning, Sprint and Post-sprint planning.
- Teams consist of up to seven people.
- Sprint length range from 1 to 6 weeks.
- A project may consist of multiple teams that could easily be distributed.
- Developed by Alistair Cockburn in the early 1990s.
- Crystal methods attempt to address the issue of poor communication which was a major obstacle facing product development. Replace written documentation with face-to-face interactions and therefore reduce reliance on written work products and improve the likelihood of delivery the system.
- Crystal focuses on people, interaction, community, skills, talents and communication as first order effect on performance. Process remains important, but secondary.
- The most agile version is Crystal clear, followed by Crystal yellow, Crystal orange, Crystal red etc.
- The version of crystal you use depends on the number of people involved which translates into a different degree of emphasis on communication.
- The Crystal family accommodates any team size.
- Has Iteration length of up to 4 months for large, highly critical projects.
- Crystal methodologies have built in support for distributed teams
Feature Driven Development (FDD)
- Arose from the late 1990s from a collaboration between Jeff DeLuca and Peter Coad
- Has the following core values:
- A system for building systems is necessary in order to scale to larger projects
- A simple, well defined process works best
- Process steps should be logical and their worth immediately obvious to each team member
- “Process pride” can keep the real work from happening
- Good processes move to the background so the team members can focus on results
- Short, iterative, feature-driven development life cycles are best.
- FDD process has the following phases: Develop an overall model, Build a feature list, Plan by feature, Design by feature and build by feature.
- Team size varies depending on the complexity of the feature at hand. DeLuca stresses the importance of premium people, especially experts.
- Has Iteration length of up to two weeks
- FDD is designed for multiple teams and can be adapted for distributed environments.
Lean Development (LD)
- LD, started by Bob Charette, draws on the success of Lean Manufacturing found in the automotive industry.
- Has 12 principles that focus on management strategies. These include the following:
- Satisfying the customer is the highest priority.
- Always provide the best value for the money.
- Success depends on active customer participation.
- Every LD project is team effort.
- Everything is changeable.
- Domain, not point solution
- Complete, do not construct
- An 80 percent solution today instead of 100 percent solution tomorrow
- Minimalism is essential
- Needs determine technology
- Product growth is feature growth, not size growth
- Never push LD beyond its limit
- Because LD is more of a management philosophy than a development process, team size, iteration length, distribution, and system criticality are not directly addressed.
Dynamic Systems Development Methodology(DSDM)
- DSDM according to their website is not so much a method as it is a framework. The life cycle has six stages: Pre-project, Feasibility study, Business study, Functional model iteration, Design and build iteration, Implementation and Post-project.
- Because of DSDM’s framework nature, it does not specifically address team size, exact iteration lengths, distribution, or system criticality.
I hope this overview is useful to you. If you were keen while reading, you would have noticed the following shared-values among the different methods:
- Customer Interaction
- A focus away from process
- Frequent feedback (short iteration lengths)
- Focus on work products than documentation
- EmbraceTeam work
Since agile methods appreciate simplicity, I decided to make this overview as simple as possible. The focus of this article is to give you insights on the different methods so you can consider them in your next project. If you want detail understanding of the different agile methods, I suggest you read other blogs and websites. Many practitioners of the agile methods have very inspiring blogs for enrichment. There are equally good books out they that you can read for this purpose.
- Cohen, D., Lindvall, M., & Costa, P. (2004). An Introduction to Agile Methods. Elsvier, 1-66.
- Hanssen, G. (2006). Agile Software Development: Theory and Reality. SINTEF.
- Serena. (2007). An Introduction to Agile Software Development. Serena.
- Szalvay, V., & Danube, T. (2004). An Introduction to Agile Software Development. Danube Technologies, 1-11.