June 25, 2012

Agile Adoption and Anti-patterns

Figure 1 - Agility Triangle
"We are going Agile", "We are Lean", "I'm a Scrum Certified Product Owner" - these are some of the classic one-liners most of us might have heard from different organizations and individuals in the software development industry. A classic response to such one-liners in a conversation would be an exclamation "Cool!" followed by questions like "What made you choose Agile?" or "How does a company get Lean?". It's a rare case when one responds with questions like "Are you sure you want to get Agile?" or "Do you have a set of DOs and DONTs while adopting Agile?".
In this article, I'm going touch upon a few key points that will help you decide if Agile is really for you / your organization, and remind you of some very key anti-patterns that are bound to reduce or negate the magnitude of success in Agile adoption.
With the number of Agile coaches increasing and with consulting companies pushing their customers to go Agile, many companies (and people) have been frantically engaged in becoming Agile or getting Agile certified. STOP - if you are one of them! THINK for a moment if Agile is really for you, and ask yourself the question "Am I looking at the right solution for my problem?" Agile Software Development is an iterative process that doesn't come without making conscious changes in the way things are done and the way people behave in a software development ecosystem.

The Agility Triangle [Refer Figure 1] is the way I look at the three key factors of any software development process - People, Time and Features. Any software development process is one that deals with a set of people and a time window to deliver a set of features. The question you've got to ask your organization is simply this - "Can we afford to relatively vary the magnitude of vertexes of the Agile Triangle?". In simpler words, "Does my project or do I have the flexibility to get more people, remove features or add more time on the fly?" If the answer is a Yes, I will say you can consider adopting an Agile software development process. NOTE: This does not, by any means, guarantee you to success with Agile. There is a lot more to Agile than just number of People, Time and Features!

If you are one of those who is ready to adopt Agile, it is highly recommended to know the wrong ways to get started with Agile, or the Agile adoption anti-patterns beforehand. Here are some classic anti-patterns in Agile adoption - 
  • Have the wrong kind of project that is not ready to go Agile
  • Not involving the entire organization, but just the development team
  • Having one person donning the roles of the Scrum Master and Product Owner
  • Wrong organizational alignment - Product Owner reporting into Engineering
  • Having a stand-alone QA team that does not interact with the development / engineering teams daily
  • Having long requirement documents with sectioned content
  • Having project feedback sessions than project retrospectives
  • Team members sit in separate cubicles
  • No Agile Life-cycle Management tools
  • People committing time to more than one project
  • Committing to delivering a set of Features in a specific Time interval with a predefined set of People.
  • Planning for Iterations (using person hours / days) right in the beginning of the project
  • Committing to estimates upfront to build a rocket when the team is not experienced to even build a car
  • Testing happens at the end of all iterations
I hope this comes of use to you. Should you have some inputs to share on this topic, please do leave your comments. Talking about Agile and people, I get reminded of Clint Eastwood's words in the movie Heartbreak Ridge (1986) "You Improvise. You Adapt. You Overcome." Though the word You used in this notable quote refers to Marines, your project is no different!

Till I see you the next time with the next article in the series Our Secret Ingredient is Our People, have a wonderful time! As always, Stay Tuned and Stay Inspired!

1 comment:

Ian Page said...

The Agility Triangle is one concept to think about in software development. A team's capability to manipulate any of these factors already determines how far they've reached power as one of the groups in technological advancement.