With agile showing dramatic improvements in reducing the time to market and quality of software, it has come a big way in software development today.

At CI, our teams started working on agile methodology along with the client teams i.e. co-product development. Initially everything was going perfectly and customer satisfaction levels were at the highest. Problems started after couple of sprints and velocity went down dramatically by almost 50%. CI did a root cause analysis and realized that to succeed in  the long term, a perfect balance between creating lightweight processes and agile methods was required. CI implemented lightweight processes and waited for 2 sprints for the processes to mature. The team improved and the velocity went up by 30%.

What went right?

  • Onsite-offshore approach
  • Team’s ability to quickly adapt to agile methods
  • Team consisted of domain and technical experts
  • Onsite visit by offshore team members to get the big picture
  • Able to achieve the required story point numbers

What went wrong?

  • Allowed flexibility and agility to take its course
  • No lightweight processes implemented for communication management, documentation, managing scope and project management
  • No pro-active attrition management
  • Increased overheads (almost 50%) on client team

In case you are wondering, if this is contradicting with the agile manifesto, then it is definitely not. The agile manifesto does not say that there is ‘zero’ value in processes and tools, comprehensive documentation, contract negotiation and following a plan. It says ‘while there is value in these items, it values individuals and interactions, working software, customer collaboration and responding to change more.

In summary:
  • No process, No Discipline, No role for Planning leads to Short Term Success
  • Flexibility and Agility till a certain level + Lightweight processes leads to Long Term Success

You can also check out:

Introduction to Agile

When not to use Agile methodology?

Effectively using Agile Techniques in Distributed Development Environment