Hacknot has an interesting article about planning vs. hacking. The article tells the story of two would-be carpenter’s apprentices, George and Abe, who are given the task of bring the carpenter back a tree without flaws or knots before sunset. Not having much time, George rushes to the shed, finds a small, rusty axe, and charges deep into the forest. Abe sets a brisk but steady pace, takes time to find and sharpen a decent axe, and plans his path through the forest to make sure he gets a good tree. Do I need a spoiler warning here? ;-) Unsurprisingly, since the article is about the dangers of unplanned hacking, Abe’s approach results in him finding the best tree and he becomes the carpenter’s apprentice.
As the article presents this as an analogy for software development, the first thing I thought was “Wow, Abe has a good Agile approach”. I also recalled the many experiences of working on George-like projects. Reading on, I discovered the article was actually describing George’s approach as Agile. Well, more specifically, it is suggesting some people use Agilist propaganda as an excuse for George’s approach.
Since the advent of Agile Methods, [George’s] approach seems to be frequently euphemized as “being agile”. Fearing the bogeyman of BDUF (Big Design Up Front) as espoused by the AM proponents, the George decides to opt for no design at all. They just start hacking…
So why the disparity between my view and the Hacknot view? Well, Hacknot actually has an audience, unlike me, so the obvious answer is that I’m wrong. However, the benefit of not having an audience is I can write whatever I like without fear of being pulled up on it! So here is my view.
Let’s look at some of the ways Abe is being agile. He sets a sustainable pace. He breaks the task down into manageable and essential steps or iterations, which he ensures are completed with high quality. If the carpenter changed his requirements (ok, now I need three trees), Abe would be well placed to adapt as he has a good foundation (sharp axe) to build from. Abe also invests in tests – he tests the axe he sharpened to make sure it was sharp enough. Yeh, it’s not test first, but this is similar to investing in a good test suite, or even creating a spike or prototype.
George’s approach is to blindly follow his plan: find axe, find tree, chop like crazy, drag it home. He does not have time for testing. He doesn’t even have time to make sure he is doing a decent job as he is so busy trying to do everything in the plan. Its not really Big Design Up Front either, but it is definitely hacky. This is a pet peeve of mine (et al.) – when people say ”we don’t have time to do it right because we are too busy doing it wrong”.
That said, I agree with the article that the term “Agile” is probably used as an excuse to hack in some places. The worst aspect of the Agile movement is the associated zealotry that is occasionally used as a supplement for rational thought. One of the fundamental parts of Agile methodologies, at least to my reading, is doing what works for you and your team. People over process. Pragmatism. An Agile team should not simply be hacking without planning and design, but rather concentrate on doing the “right amount”, and doing all work at high quality so the plan and design can be adapted as work progresses.
Of course, as this was only a story it could have ended very differently to make a completely different point. George could have found a semi-decent tree while Abe was still busy sharpening his axe, effectively demonstrating how evil a utopian approach to planning and design is. Or Abe could have been stuck gathering satellite data of the forest, getting management approval to purchase a GPS for the tree finding activity and filling out a tree requirements specification document. That’s one of the problems with analogies I guess. :-)