Notice: Undefined variable: button in /var/www/vhosts/carljoseph.com.au/httpdocs/blog/wp-content/plugins/wp-fb-like/wp-fb-like.php on line 35
I’m not one for a big upfront design. Spending time getting every detail documented in a Gantt chart and associated MS Word documents doesn’t sound like a good use of scarce resources. In my woodworking ventures I find that I am also averse to detailed designs of what I will build. Having recently finished Krenov’s The Impractical Cabinetmaker it seems that it isn’t just me who prefers to work like this. I clearly prefer to “compose” rather than “design.”
What is the difference between designing and composing?
Purchase it from Amazon
When designing, you spend your time documenting a faux version of what you are going to build (software or woodwork). You then take these specifications to your workstation or workbench and begin following the plan step by step. When something comes to you out of left field, you go back to your designs and re-design the changes in. Then get back to your station and keep on working until the piece is finished.
When composing, the work feels much more organic. You document/design an idea of what you want to build. In Scrum (an agile software development process) you write up a series of very brief stories which point to the functionality people want the piece to have. When woodworking, you do your best to draw a rough idea of what you want to build on a piece of paper. You take this to your workstation or workbench and begin typing or chiseling away. As your product comes to life, it changes depending on what you see and the challenges you face. You take these in your stride allowing both the output of your work and your idea of what you want to build coalesce until the piece is finished.
But software isn’t like woodworking
Some might say that software and woodworking are completely different endeavours. One is structured and planned, the other is creative and artistic. Over the last couple months I have started realising that they are both very much alike.
Software is more akin to photography & painting than to engineering & building bridges. Making software is creative. You start with an idea of what the product needs to do. You move quickly onto starting to build it. Then by getting feedback about what you are doing from your customer (and yourself) you make small course corrections and continue until the piece is complete.
This is very similar to working on a piece of furniture. You start with a basic design and then allow the pieces of wood guide you the rest of the way. The various grain patterns you see, the “weight” of the piece as you put it together and even your mistakes are elements which you use to course correct as you build.
Even taking a good photograph is like this. You might have an idea of what you want to capture but it isn’t until the scene comes through your lens and then hits your computer where you finesse it that the eventual result reveals itself.
Professional software developers need to start helping people understand this. You don’t need a detailed gantt chart and spec to deliver a premium piece of software. What you do need is a solid idea of the function it must deliver and lots and lots of reviews, communication and creative energy.
So as I begin my many and various projects this year, I hope to focus more on composing rather than design and allow the results to guide me.