Last week , couple of people- in different context asked me effectively the same question- what is agile ?.
At one point- I used the analogy of Six blind men and an elephant to answer the question. I hadn’t thought of this analogy till I presented it. But the idea stuck to my mind and I thought- it may be a fun to blog it out.
First the sidebar…
Six blind men and an elephant is a fable from the Indian-subcontinent about six blind men who came across an elephant . They all touch different parts of the elephant to figure out what it is. Each man having touched a different part, drew a different conclusion . The man who touched the trunk- thought it was a snake. The one who touched the tail- thought it was a rope. The one who touched the legs felt it was a tree trunk and so on…
So here goes
Six blind men came across Agile and this is what they said…
One: I think Agile is all about iterations. A software project typically takes months and years to build. We think it’s possible to break that into short iterations- where you continuously build a working software. At the end of every iteration you have a working software. Not necessarily complete software, but a working software. How does this help ? A working software is more tangible than any set of documentations you can generate. You can use this to solicit feedback and show off how awesome an engineering team you are. A working software enables more powerful concepts like MVP.
Two: I think Agile is all about responding to change. Building software (and the other 99 million things in life) are unpredictable. We believe its folly to assume you can commit to a plan which is years long. Instead we commit to a short period of time and then pause and see what we should do next. Are we still on the right direction ? Did we realize something drastic from the feedback and need to do something different ? Did the business and competition landscape change in way which invalidates our previous vision ? This also works as an effective tool to manage interruptions that will come your way.
Three: I think Agile is all about communication and interactions. We believe documentations is an ineffective way of expressing intent. We believe in human beings talking (yeah figure that-in the world of texting and facebook) . Talk to customers. Document all that you need. But realize that all documentation is incomplete and it can be truly enhanced only by good communication patterns. A customer can not give you an effective feedback by looking at your Requirement Specs. That can be be done only by seeing a working product. You can and should document the Requirements- but do understand its limitations. It captures what the product should do. Tests capture what the product do. Yup- tests are means of communication as well. Effective Communication enables feedback.The feedback the team gets from the customer after they see a working demo. The feedback that customers get from the team on how the project is shaping out. As expected ? or not ? The feedback the team gets from each other- when they do their retrospection .
Four: I believe its all about transparency. Any non team member should be able to determine very quickly – what the team did today or last week and what they plan to do tomorrow and next week. Are they slipping ?or ahead ? Are there any roadblocks ? The intent is not to micromanage the team but instead present a truthful picture of the health of the project schedule at all times- to all who care a.k.a. stakeholders.
Five: I think its all about the team, The team drives the project- by their sheer excellence and dedication and commitment. The team is empowered to take decisions and present their own schedule .It then holds itself accountable for their commitment. The idea is- that the management is responsible for putting together a smart team and removing roadblocks.Besides that- they need to get the hell out of their way. Why ? We believe by pushing the decision making to the trenches- to the people who will live out the consequences of those decisions, we can have a more effective process rather than have a manager who sits in her shiny office take decisions as to how the team should do their job. We believe in self-organized teams. yea !
Six: I think its all about concurrent development. We do not believe software development has to be done in sequential phases (see how smartly I avoided the word waterfall ?). But instead most parts of SDLC can run in parallel. You can design and develop at the same time. You can test in parallel to development.You can get new requirements any time during the development. Design needs to emerge and not necessarily be done upfront
Were they all right ? Yup. Was anyone wrong ? Not really. It is what is important to you- from your perspective.
I guess there are more than 6 blind men . But in the spirit of the story- I kept it to 6
So what does your blind man say about Agile ?