There is so much swirling in my mind as I endeavor to write this article. I will try to keep the content relevant, true to real life experience and entertaining all at the same time. The title of this article tells the story! First allow me to clearly identify what is NOT intended:
– Agile is useless (I really agree with agile as a methodology and have seen it work wonders)
– Agile = Sweat Shop (not at all, sweat shops are not created by methodologies but people)
– TDD is useless and should never be mentioned again (NO, NO, NO… you must read the rest of the article)
Now that we have that part out of the way I will start the real discussion. I write this article from two perspectives, that of grunt programmer in the trenches and that of Technical Lead via Software Architect. Agile is a powerful way of managing software development, it is hard to disprove that point (many do try). Agile essentially creates an environment or community within a product team (or teams) whereby the entire software development process is tracked. I stress heavily the word “tracked”. Agile serves many other useful purposes, but its broad appeal to management at most large corporations is most definitely its unique ability to:
1. Predict work with consistency
2. Track the status of any given “resource” at any point in time.
3. Allow for quick change in product direction within as little as a 1-2 week intervals.
4. Highly Quality Centric leading to less cycling.
5. Enormously Collaborative. Communication is the backbone of Agile, leading to far less misunderstandings or at least misunderstandings detected much sooner than usual.
This is a small list and comes only from the mind of a grunt. Agile’s potential is enormous, but alas potential is just that. It doesn’t take long to see that such benefits as these (and many others) placed in the wrong hands are disastrous. Imagine for example point #2, being able to track things at any moment. In the hands of a Micro Manager this ability actually hinders the work of team members. Imagine the following scenario:
Sammy and Bob estimate the work for the upcoming sprint (the 2 week period starting today). Estimates are just rough guesses. During the sprint Sammy and Bob experience significant traction and have unusual success (often referred to as Divine Intervention) and the estimated work completes well before the end of the sprint. This is certainly not the typical sprint. In fact the last sprint some work was not completed and had to spill over into this sprint. The success of this sprint at first feels like a relief when compared to the dirty, slothful feelings that were experienced last sprint. Truly some creativity, Divine Intervention and consistent focus has somehow all come together and tackled some difficult technical challenges while getting the team ahead all at the same time.
Enter the Micro Manager. Upon seeing Quality Assurance happy that finally a good sprint has arrived, Developers catching their breath and preparing to carry the momentum into the next sprint, the Micro Manager sees only one thing… resources! The Micro Manager says to himself “I have a few extra days to punish them”. The old saying “no good deed goes unpunished” comes to visit the team. Micro Manager begins to pile on more and more work, allowing not the slightest moment of rest or reflection. The team begins to ask themselves… “why should I ever try to get things done more efficiently and/or sooner, I just get rewarded with more work”.
This is a huge crux with Agile… namely the abuse thereof. I suppose this may be said of almost any system or methodology. I can see that many grunts quickly come to hate the “agile methodology” because of the way in which it is introduced to them. They promise you freedom, while in reality they enslave you all the more!
WARNING…. religious connection coming WARNING…
I asked myself, “why do so many people hate Christianity”? I mean nearly everywhere I go people keep talking about it as if it were evil. Then I realized.. “aha”! If you put people through a bad experience, call it Christianity, force them to stay in it for a while (say perhaps during their youth) then eventually they’ll begin to hate that thing you told them was Christianity. Now it suddenly all makes sense! If only people could see that Christianity is about a person, namely “Jesus Christ” living in you, not a group of people looking for your money and bombing other countries to “free” them. That’s right, just like Agile isn’t about how Microsoft does it or how Google does it, Agile is a principle, but left in the hands of the wrong people, any principle can get twisted. Case in point would be the Pharisees in the days of the life of Jesus Christ.
In conclusion, the real danger of course in all of this is how demoralizing it becomes. Both the Christian part and the Agile part. The lesson to be learned (in my opinion) is to value the things that are valuable, and separate the valuable from the invaluable. See the value in Agile, but don’t throw it out if your particular Agile experience was negative. And the same with Christianity, if you had a bad experience, I can guarantee you this one thing… you never saw Jesus, you saw man! The only reason any Christian will survive and hold on to their faith is because it is in Jesus, the son of God.