I just finished reading a book written by Phillip Khan-Panni, and its not about any of the latest cool technologies or methodologies, but about efficient communication between us human beings. It's about learning how to talk on lectures, presentations, meetings, etc. ... without putting anyone to sleep (that's why I started reading this book). The book I read was translated in Dutch, so I don't know the original title of the book.
One of the exercises in the book is to have two people sitting with their backs against each other. One of the two people involved describes the following drawing to the other person as he tries to recreate the drawing according to the directions from the first person.
You can probably imagine that this gives you quite some funny variations of this drawing. The clue is that most people (including me) fail miserably in successfully completing this exercise and this for the following reasons:
- we need human gestures.
- we need to have eye contact.
- we need interaction as we speak our language.
We needs these things in order to communicate properly from one person to another.
We need feedback to let us know how we are doing and lead us to adapt our communication in order to accomplish better results.
Sounds pretty agile to me, right? Being an agile developer is all about having all kinds of feedback:
- feedback from our clients after each iteration so that we know we're on the right track. If not, we need to use this feedback to make the right adjustments.
- feedback from our code thanks to continuous integration, daily builds and unit testing.
- feedback from code coverage.
- feedback from code metrics.
- etc. ...
Therefore I say that agile development means to bring the process of developing software back to our roots. This is why agile development feels like the right thing to do (for me it is).
The absence of eye contact forces us to completely rely on words. This brings us to the interpretation of those words.
This describes why the waterfall methodology fails miserably. Near the end of this sequential development process everything and everyone involved gets out of sync including the software itself because of a continuous lack of feedback. How we interpreted the input coming from our clients at the very beginning is something we need to show them as soon as possible. It's all about people communicating with each other.
What I'm trying to explain here is that the traditional waterfall approach is a violation of human rights. Noticed that I used the word feedback eight times in this post (not including this sentence). We need a guy that jumps up on stage on agile conferences, jumping around like a monkey while screaming "feedback, feedback, feedback" ;-). What do you think? (and no, I'm not the chosen one)