Thursday, 7 August 2014

Faster Waterfall is not Agile

Most of the organizations have a myth that if they have shorter release cycles they are agile. And at most times they don’t even follow basic agile principles. There is a general misunderstanding among organizations that they are agile if :-
  • They have shorter release cycles
  • They don’t document
  • They don’t plan upfront
  • Their requirements change frequently
  • They do daily stand ups
Hence as part of this post I would throw some light on what is an actual agile world and how a software is delivered in quick releases by following agile practices like Continuous Integration, Dev box testing, client showcase, etc.

Most of us are aware of the agile manifesto which talks about :-
  • Individuals and interactions over Processes and tools
  • Working software over Comprehensive documentation
  • Customer collaboration over Contract negotiation
  • Responding to change over Following a plan
But how to achieve these on a project on a day to day basis is a challenge. Here are the few practices that would help you follow these agile principles and enable you to successfully adopt agile :-

Individuals and Interactions over Processes and tools:-  

  • Instead of  requirement gathering sessions that lasts for around two months, do shorter project inceptions for a week or two. 
  • Rather than Tech Lead estimating on behalf of everyone, involve the entire team in estimation.
  • Practice pairing instead of tech leads and managers reviewing code.
  • Conduct retrospectives rather than doing individual performance reviews.

Working software over Comprehensive documentation:-

  •  Document requirements in smaller chunks as user stories vs heavy requirement specifications.
  •  Do regular Dev Huddles rather than documenting technical designs.
  •  Have a good automated test coverage instead of documenting test scenarios with detailed steps. 
  • Make QAs do testing on a developer box to get early feedback rather than publishing release notes to them
  • Have user friendly and responsive design instead of heavily documented user manuals.

Customer collaboration over Contract negotiation:-

  • Rather than asking customer to review heavy requirement specs get their feedback and sign off on user stories
  • Instead of waiting till the end for a complete product demo keep doing story showcase and keep getting regular customer feedback
  • If there is a bad news like technical complexities, unknown discovered or any other blockers share it with customers as soon as possible rather than giving last minute surprises.

 Responding to change over Following a plan:-

  • Instead of having a dedicated design phase and having a complete design upfront let your design evolve along with the product.
  • Rather than having a full fledged product/project plan, plan in smaller chunks for an iteration or a sprint.
  • Instead of manager deciding who does what and assigning tasks to the team let the team do a daily sign up and decide what they want to work on.
  • Implement product feedback regularly rather than creating product backlogs.

According to me a successful agile project should achieve following 3 goals:-

I. Get early feedback and fail fast:-

  • Customer involvement:- Involve customer and get their feedback on every stage - inception, story sign off, story showcase, super showcase.
  • Continuous testing feedback:- Get testing feedback and defects identification at unit and integration tests level, dev box testing, build, smoke, regression. Earlier the failure easier the fix.

II. Easily adopt to new requirements and give your clients agility:-

  • Early feedback and Adaptability:- Getting feedback from clients at every stage helps clients to be flexible. Changes can be easily incorporated as they are requested at the start of the cycle.
  • Product Vision:- Clients can see the product evolve and hence can come up with better ideas for the short and the long term vision.

III. Improve quality of the product and yet deliver faster:-

  • Improve Quality:- With so many checks and safety nets at every stage, the product becomes stable and of a high quality.
  • Faster delivery:- Practices like continuous integration, test automation, etc. helps in reducing the cycle time.

A quality software which is delivered at a faster and regular releases and is easy to incorporate changes and keeps the team happy and customers satisfied, determines the success of agile.

No comments:

Post a Comment