by Edward
22 July 2009 17:48
I am a fan of the Agile methodology in developing software. It brings results, it is very effective if followed correctly, and widely used within numerous companies. Agile is people driven, instead of process driven. Have a good team of motivated developers, is worth more then the process. However there are rules around this too. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
What is Agile development?
Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The term was coined in the year 2001 when the Agile Manifesto was formulated. Some people came together, exchange ideas and came up with the Manifesto for Agile Software Development.
Agile Development consists of a series of interdependent planning and delivery rhythms(uniformities). These agile rhythms, while quite simple conceptually, have proven not so simple to implement. Yet this cyclical series of meetings and events delivers the reliable beat which allows teams to find their own agile rhythm.
While no single document delivers all of the ammunition agile teams need to get the rhythm, this set of agile meeting and facilitation checklists offers an easy framework to help guide software development teams through the various agile cycles.
The Agile Development 'Rhythms':
- Strategy - Projects and product development efforts ideally start with a vision associated with a business need or direction. This vision is then typically framed in context of a strategy and associated goals and objectives during a management team planning session.
- Release - Releases represent the large-grained delivery cycle in agile development. Releases typically range between one and six months, but may extend longer in some environments. Releases begin with a release planning meeting where product owners (or product managers, project leads, etc.) work to define and prioritize a candidate set of features that are then estimated by the team.
- Iteration - Also known as Sprints, iterations are short, fixed-length subsets of releases, generally in the 1-6 week time frame. Iterations represent the execution heartbeat of the project. During, each iteration the team’s goal is to deliver useful software.
- Daily - Every day the team is focused on completing the highest priority features in the form of working, tested software. As features are delivered within the iteration, they are reviewed and accepted, if appropriate, by the product owner. Each day a short, 15-minute standup meeting facilitates the communication of individual detailed status and any impediments or issues.
- Continuous - Agile development teams are constantly driving towards a state of continuous, adaptive planning, collaboration, design, development, testing and integration. This commitment fosters a dynamic, highly productive environment in which automation is critical and the output is always high-quality, valuable working software.
Some examples of Agile practices:
- Test Driven Development (TDD)
- Behavior Driven Development (BDD)
- Continuous Integration
- Pair Programming
- Planning poker