I like to talk
I was given an opportunity to present a session at the Agile San Diego group last night. I have some pretty clear ideas about how to be productive in developing software (and a fair number of solid successes in turning out useful software), and those who know me are sick of hearing this stuff. I am always looking for an opportunity to find someone new to bore. Thanks for stopping by.
Agile Success seems elusive
Over the past 13 years I’ve been using (or sometimes fighting to be allowed to use) an Agile approach in software development. For about a year I have been slowly gathering my thoughts into a talk on Agile Success. I’ve given about 5 talks on this theme now - each very different, and the audience has mostly been folks new to Agile thinking.
Agile San Diego is a group of highly sophisticated Agilists who are typically expert debaters and highly competent loud arguers - I like it very much. So I took this opportunity to solidify my materials and put it to the test. The results were so-so, IMHO, but it is in the doing of a presentation that I discover the presentation that I must do.
Agile Success – Why Not Me Too?
In its current state, the talk is called “Agile Success – Why Not Me Too?”. It’s mostly about the “Why Not”: we tend to block ourselves from achieving good result by hanging on to “old and busted” thinking and practices. Perhaps we do this because the old ways seem so right (but they are oh so wrong) , or perhaps just because we are comfortable with them, or “our customers (or boss, or manager, or marketing) require it”, or … well – there are a lot of reasons we keep doing things the same old way – you get the idea, I am sure.
For this instance of the talk, my main goal was to show that we are typically our own worst enemy. More specifically, it is the things we think are most solid, meaningful, useful, and productive in our process that are the most likely to be hampering our progress and wasting our time and money – and we don’t have the skills or openness or whatever to recognize this. In other words, those are our blind spots.
Here are my three main talking points. I call them Maxims (to differentiate them from the Values and Principles):
Critical Maxim 1:
It is in the doing of the work that we discover the work that we must do.
Critical Maxim 2:
Embracing change is IMPOSSIBLE if your code is not Easy to Read, Easy to Maintain, Easy to Grow, and Easy to Change. Everything else is secondary. Everything. This applies to “lean start-ups” too! Code becomes HARD really fast – often within a few hours if we are not paying attention.
Critical Maxim 3:
In my own work, I use the Agile Manifesto and Principles as a guide to evaluate everything. I use them as a quick sanity test for every practice that I am using or thinking of using. However, I also recognize that I am the inventor of the process I follow, and therefore use the 3 Maxims to keep from getting off track.
Using Maxim 3, I also question the value of the Maxims and the Agile Manifesto/Principles themselves. It is a vicious, never-ending continuous loop of vicious, never-ending continuous loop of… – so I don’t get too serious about it. Whenever my brain starts bleeding I take a break, let things coagulate, and then get back to it.
Also, the 4 values, 12 principles, and 3 maxims are not written in stone. It is likely that there are other important missing maxims/values/principles, and there might be errors and partial omissions. But this is a living thing – adjustments are allowed – cells split, some things become vestigial – and so on. Complete re-writes are allowed. Nothing is sacred. Continuous improvement must include improving the things we improved previously and think can’t be improved. Throwing some things out and letting other things die off is okay.
The talk took less than an hour, plus about 1/2 hour for discussion. Not bad for solving all the problems that ever were or ever could be. Well, no one else saw it that way, but this is my blog and I can make up anything I want.
However, what I was trying to show is that my current thinking (which is based on real, every day cranking out of healthy, usable functionality) is that:
- most development efforts are chock-full of harmful practices that we hold sacred yet are massively wasteful or even counter-productive
- that we are the cause of most of the problems
- and there is a way to make things better.
I won’t cover the rest of it here unless enough people actually ask for more. That has never happened yet, as I don’t think anyone reads this blog, and most people who attend my talks spend most of the time trying to find a way to respectfully withdraw.
The most important thing:
For me, acceptance of Maxims #1 & #2 gives a clear way to evaluate 90% of the badness I have encountered in software development. They are on an equal with the Agile Principles in the way I use them. Maxim #3 keeps me honest about Maxims #1 & #2. I have another 3 or 4 slides on Maxim #3 that guides the questioning process. Perhaps I’ll write about that sometime soon. It is not the 5 Whys, and I don’t think there is a Japanese word for it either.
There you go.
Have a nice day.