Tuesday, August 24, 2010

Agile Development

What is Agile Development

 Agile  Development is based on following core values:
  • Develop software in small increments
  • Involvement of stakeholders in Development
  • Ownership of Development team in development and mechanism to ensure independence

Why Develop Agile ?

Requirements Keeps  Changing :

Product Development involves developing ideas into working software.
Even though product team spends lots of time brainstorming about requirements ,it is difficult to capture all the thoughts and ideas in one go. Ideas keep on evolving over period of time. One idea leads to other ideas. Often when one part of working software is exposed it leads to other ideas. During the course of development you may find  better ways to perform a function which is already developed.

Business Priority Keeps Changing

As the time goes by priority of product feature keeps changing.  For Example a feature which was very critical few months back may take back seat because a new feature is introduced.

Gap between Requirement Analysis Vs Development

Often there is a gap between product requirement and implementation. This can be reduced easily if implemented software is getting reviewed by business stakeholders frequently and regularly.

How Agile Development solves the Problem ?

Problem 1 : Need check & balance approach to ensure minimal gap between expectation and outcome
Solution : A development approach which produces working software in small iterations. This ensures business stakeholders are able to review the working software on periodic intervals.

Problem 2 : Need flexibility to change requirements and prioritize development as per changing business scenario.
Solution :  Divide work in small chunks and ability to re priorities based on business.

Problem 3 : Ability to have a clear product development Road map
Solution : Capture all requirements/changes as Product Backlog.  Schedules Development time frame for each item give clear indication  about Development road map.

Agile Methodologies

Various Agile methodologies are available to implement guiding principles of Agile Manifesto.
There is no best methodology and project teams adopt methodologies suitable to their project. Most of the times these methodologies are further tailored to suit individual project needs.

Agile methodologies can be organised into two categories

Methodologies on engineering practices :

These basically act as guiding principle on how development should be done. These are generally good practices for development and many of them could be adopted in a single project.For example
  • "Test Driven Development " : This is based on principle  that all forms of development should be proceeded by test case.
  • "Pair Programming" : this emphasis on two developers working together to write one piece of code.

Methodologies on Organizing work and management:

These define the way work is organised , how the progress is tracked and processes followed. Only one of them can be adopted at a time but good practices from other methodologies can be adopted. For example
  • "SCRUM" : This is a development approach where work is divided into small time boxed chunks called "SPRINT" . Every sprint results in a product version which is demo able and deploy able.
  • "Kanban" : This is similar to SCRUM except time boxing is not there.