Agile Software Development

Agile means quick and this new software development promotes agility by adaptive planning, evolutionary development-delivery and time boxed iterative approach. Agile Manifesto was introduced in 2001 and since then it has taken over software engineering and development.

Agile Manifesto is as follows: Uncover better ways of developing software by doing it and helping others to do it by using following values:

  1. Individuals and Interactions over Processes and Tools. – ( Co-Location & Pair Programming)
  2. Working Software over Comprehensive Documentation. -(
  3. Customer Collaboration over Contract Negotiation. -( Continuous customer involvement)
  4. Responding to change over Following a plan. (quick responses to change & continuous development)

Agile Manifesto is based on following principles:

  1. Customer satisfaction by rapid delivery of useful software.
  2. Welcome changing requirements, even late in development.
  3. Working software is developed frequently.
  4. Close, daily cooperation between business people and developer.
  5. Projects are built around motivated individuals.
  6. Face2Face conversation is the best form of communication.
  7. Working software is the principle measure of progress.
  8. Sustainable development, able to maintain constant pace.
  9. Continuous attention to technical excellence and good design.
  10. Simplicity – art of maximising the amount of work not done is essential.
  11. Self Organizing teams.
  12. Regular adaptations to changing circumstances.

There are various ways by which agile development has been propagated which includes Scrum, Kanban, Lean Software development etc. All agile ways follow certain agile practices like:

  1.  Backlogs – Ordered list of items maintained for a product.
  2. Cross-Functional Teams – self directed team with expertise from different departments.
  3. Information Radiators – Kanban Boards, Scrum Boards, Burndown charts, Task board are examples of information radiators.
  4. Pair Programming – Two programmers work together in a workstation.
  5. Planning Poker – Consensus based technique for estimating.
  6. Agile meetings – Sprint planning, Daily Standups, Review and retrospective meetings.
  7. Time Boxing – Allocates a fixed time.
  8. Velocity Tracking – Capacity planning tool, an act of measuring said  velocity of team.

Common agile pitfalls:

  1. Adding stories to  a sprint in progress: User story can be expanded but cannot be added, in worst scenario terminate the sprint.
  2. Lack of sponsor: Agile works from grassroots and without having sponsor its bound to fail.
  3. Insufficient training: Agile doesnt mean no rule but a proper training is must for prescribed methodology.
  4. Product owner not defined: With internal member taking product owner role will lead to finger pointing and breakdown of collaboration.
  5. Teams not focussed: Its expected resources to take up task potentially outside their service area.
  6. Excessive planning: Teams fall into trap of over understanding of all stories with detailed design.
  7. Problem solving in daily standup: daily standup is focussed meeting to disseminate information to all team members not to solve problems.
  8. Assigning task: If team members are assigned tasks than benefits of localised and timely decision making can be lost.
  9. Scrum-master as contributor: Not prohibited but multitasking may result in too many context switches to be productive.
  10.  No Test Automation: due to iterative nature of agile test automation is often a must.
  11. Letting Technical Debt to build up: Technical debt hinders planning as production defects distracts the team from further progress. As system evolves its important to refactor.
  12. Attempting to take too much: Team decides how much to work, pressurising will increase inefficiencies in delivery.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>