I know Einstein said something about this. The quote was akin to: “If you cannot state it simply, you do not understand it well enough.” There is of course no way to know what he actually said, but saying that Einstein said it makes the idea all the more credible, and in the end, credibility and value is what this all boils down to anyhow.
Agile has you delivering small pieces of value (working software). Efforts are broken into iterations (not Sprints, but iterations). Items are disaggregated into the smallest piece with value.
And of course, there is Iteration Zero, the “we have to do this but it is standard and not really something we are going to make part of our sexy project” stuff. That non-compelling stuff that you, well, would fail without but is devalued enough to actually call it “zero”.
When you were young, you probably stacked blocks, Legos, or your parent’s treasured family heirlooms. Endless possibilities. Personally, I think as soon as the little Lego man with the construction hat came out, they lost their innocence and started being an Out of the Box solution of sorts, which is where I am going. In case you wondered.
Out of the Box solutions are great, but if you take a step back from the solution and stop just before it becomes a feature and do all that you can without actually putting a Lego Man in the box, you have no Technical Debt. Baked-in presentations and features are often Debt as we refactor them or re-engineer them to apply Business Rules and things that make it what we really need it to.
Or, we can have a Lego Land village that looks like one the kid down the street just built and move into his city instead of building our own. There is the problem of prepackaged straitjacketing software that comes wrapped with a bow and looks like a fantastic amount of value but is truly just a bow you have to untie, a box you have to unwrap, and something that most of the time is not built for you but for the abstraction of you or your fictitious persona. Abstracting people and businesses into the simplest common denominator is valuable but not in order to offer the Persona a solution that is ready to go. It is valuable to build what is common and facilitate the building of the remainder that will make your solution yours and mine mine.
Frameworks are great for this kind of thing. Open APIs are great. Web Services are great. Simple methods that can be built upon or retooled and instantiated again as something unique are great. Processes that allow for flexibility are great.
Slamming down even something as seemingly “free and open” as the Agile Manifesto is not, in my opinion, such a good place to start. Take a step back. Why do we like People over Process, for instance? Take nothing for granted and you will miss no chance to realize that you are not stuck with something that does not fit. There is the “Five Why’s” and some use the “Four Why’s” to get to the root of a problem or need. There is something I like to think I invented but probably did not where you keep defining things you believe you understand and force yourself to answer your own questions. My Philosophy degree was not a total waste. An example:
I am too fat.
What is fat?
Fat is something ugly.
What is ugly?
Ugly is something I don’t like the looks of.
So you don’t like the way you look. We can take action on that. Wear this blindfold. I will happily alleviate you of your lunch. To me, fat is always a pound heavier than I am. Works for me.
You know what I mean, I hope. That was an oversimplified example, but we have true statements about Unicorns and Unicorns are not real outside of thought. Is it any wonder the Agile community is at it’s own throat over academic nuances between camps? And still, even the PMI has to accept Agile because it works before you get too crazy about it and paralyze yourself with academic arguments. I call this muda, to appeal to the cool Agilistas out there. Muda means waste, but it is the hip thing now, or as of just about the same time people had Chinese characters tattooed on their arms and are not sure what they really mean. It is exotic. Unless you are from China, which a huge portion of the world is. And of course, people will email me and say it translates as waste but is slightly different. Yep. And my definition of waste is different than yours. What is this complexity adding?
A toolkit, programmatic or linguistic or process-oriented will always trump a tool resultant from someone else’s efforts and especially any entity selling you something. The ability to assemble your own toolkit will always trump a toolkit that comes in a box and is on sale. In the end, the more dirty you get and the more you do yourself, the simpler things appear and when things are simple, you do not sound like a dolt trying to explain them. You can also get a lot done very quickly and assuredly. Test Driven Development is a great example of this. Regardless if you go as far as to do Behavior Driven Development and what tool you use – the process has veracity and value and it is no coincidence that reusability is a term that applies outside of programming.