I still experience new things on a daily basis when living as an expat in Florida. But there is one epiphany I had this week which I think is true all over the world of software development. My revelation can be summarized as waste, a common term for lean/agile enthusiasts who try to reduce waste in order to be more efficient. In a traditional production line you for example would consider waiting on someone else to complete your job a waste. Or items in stock, taking up space and losing their customer value over time.
Identifying waste in the context of software development is often much harder. Some might have heard the phrase: “Software on a shelf is not an asset!” A nice one liner, because software only has value when running in production and not stored on some dusty hard drive in the attic. Just as you would want to get rid of last year’s stock of out-dated models of whatever physical product you are selling. You would equally want to get your software into production as soon as possible and not store on the shelf waiting for ‘the right time’.
However, the kind of waste I recently encountered is a bit more devious. Take your typical case of a software project. At some point there is an idea, some customer request, new market segment or other trigger to spool up a bunch of nerdy developers. And the first thing they’ll ask is: “What are we building?” And of course a conversation will start about such and such feature, and how it should be user-friendly and earth shattering, and how we want cloud and bots, the best thing since sliced bread, yada, yada, yada. Don’t get me wrong, there is nothing inherently wrong with that. Software development is a creative process and those things can’t be rushed. However, at some point during those discussions you will notice that no one is actually delivering software. Not even on a shelf. Some are creating screen designs, others architectural diagrams, user stories with acceptance criteria and so on. And even if you would do these exercises in short iterative cycles, combined with actual development and call it Scrum, XP or whatever, there is still a lot of information being gathered. And information in software development is the root of all evil! It just distracts you from the end result. Instead of discussing how a product should work, you should just write it. Far more efficient. You should get rid of information as soon as possible and put the results in workable software. Just like oil for your engine. A little goes a long way to keep it running smoothly, but too much will make the road slippery and dirty.
At this point you are going to be disappointed when your were expecting me to give you the magical solution now. Alas, I might be a consultant, but I don’t think there is some pixie dust you can apply to your current process and be as efficient as Jeff Sutherland himself. I believe however you can try to make a difference by starting to take things unreasonably serious. Exaggerate to the extreme, treat it as the root of all evil or put a ban on it to shake things up. It might surprise you how many things you can do without when building software.
My music library faithfully returned an appropriate song after my first search. She knows me all too well. I had the pleasure of seeing these guys live a couple of years ago during an intimate concert at Luxor Live in Arnhem. Today, it still has the right mix of funk and layback pace to sit down and relax at the pool in warm and sunny Florida.