If you want to annoy me say something like “Building software should be like building a house…” To say I’m not a fan of physical building metaphors is something of an understatement, but, I think I may have noticed something.
Take that picture above, no they are not space rockets, they are swords.
Sunday morning, for the first time in something over 35 years, I engaged in making something out of wood, calling it carpentry is an extravagance, but my sons wanted to do some sawing - and all boys should get to saw shouldn’t they?
Specifically they wanted some swords to play with, so out came the bench, out came the saw and… Not bad, I’m a real man! - I can make children’s toys!
Look closely at the swords and you will notice that down towards the handle they have a pair of “wings” - actually they are meant to be hand guards. This was a requirement I only discovered during construction when the older boy decided his should be different to the younger boy’s.
So yes, requirements change and expand when you build real things too. Especially when innovation and differentiation are in play.
When he asked for this I had no idea how I was going to do this. Rather than stop and work it out I thought, “umm… maybe he’ll forget, maybe I’ll think of something,” and carried on working.
I did think of something. I realized that if I used the offcuts from the top I could create the desired effect. Now here is the lesson.
Constructing the first sword took about 20 minutes - without the “wings.” The second sword took less time, maybe 10 minutes - again without the “wings” - because I knew what I was doing.
The process went surprisingly smoothly and I discovered I remembered a lot of both my school woodwork and time in the garage with my own Dad.
But, then I started on the “wings.”
These small additions took the same amount of time again, perhaps even longer. I also got into a mess with nails and screws, and ended up using wood glue. The beautiful smooth finish is now broken by a protruding nail.
Put this in software terms: it took less than half the total time to constructing the two basic products, building the infrastructure went smoothly. It was the additions and “nice to haves” - or rather the innovations - that took up most of the time and caused the greatest problems.
Last autumn I had builders in change my house. In the first three weeks the basic product was created: a physical wall was taken out, an external door bricked up, a window moved and the floor, electrics, and plumbing ripped out. All the heavy lifting was done quite quickly.
Things slowed down, it took another three weeks to construct a new internal closet and lay a new floor.
It then took another six weeks to finish the plumbing, electrics, finish off the construction, fit a kitchen, and decorate it.
See? The heavy lifting, the bit most visible, the bit which actually requires physical work is done quite quickly. It is the detailed work which goes slowly, probably because it requires attention to detail.
It was damn frustrating: the hard bit was done, the wall was gone, a steel beam installed, why wasn’t everything else just done? Maybe I should speak to the main guy and say “can we get more people in?” or “can’t we work in parallel now?”
Isn’t this like software?
I got Mimas up and running in a week or two but it took me another couple of months to get all the ins-and-outs working the way I wanted them too.
You can install a WordPress site, even with Magento, in half a day. But getting it styled right takes weeks.
You can build a rough bare bones app in a few days. But doing all the detail takes months.
And many are so scared of the heavy lifting that they try to project manage it away, but this only ends up making the project manager's life even harder.
The problem is: to those who are not doing the work - my kids watching me, me watching the builders, your customers watching you - the bit they expect to take time - the heavy lifting - is actually quick. It is the detail that is slow.
Writing this, it now occurs to me that this is exactly what happens with ERP systems. SAP, Microsoft, and Oracle come along, install the basic ERP and it is there in a matter of days - hurray, all the hard work done! Just detail, mere “configuration” left to do. Except the configuration is detail and detail takes time.
Its also true of blogs. Blogs like this I can bang put in a few minutes. I take far longer editing them.
Once again the world is upside down.