Tag Archives: craft

Book Review – Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

Just finished reading this great book about how to become a great software craftsman. While the comparison may be strange, this book is fairly similar to The Monk Who Sold His Ferrary – it shows you how to better yourself (one at software, the other in life), explains some paths (none of them scientific or proven) to achieve this goal and shows examples of how this worked out (this is where this book surpasses the monk, because it uses real-life quotes from real people).

All in all, Apprenticeship Patterns is a very enjoyable read that gets your mind thinking how to apply what it teaches. In the book’s conclusions I found a quote that explains once again in different wording why software development is so different from other engineering/scientific endeavours (page 114): “Software development is a craft precisely because we don’t understand it well enough to make it a codified discipline like science or engineering. Despite the best efforts… our field is still one where individual skill is often the most significant determining factor in a project’s success”. The book also provides loads of references that will make your reading list grow suddenly (it if doesn’t you’re either already a master or should find a job in another industry :-) ).

Support this work by purchasing this book from amazon.

Is Software Development an Art?

I am a passionate software developer, making it both my job and my hobby. I sometimes wonder what makes good software good, and how it is compared to other engineering fields like mechanical engineering, chemical engineering or electrical engineering (since I know people on these fields), and I have always felt that writing code was akin to an art, because while there are many way to solve common software development problems, there are sometime solutions that are “beautiful” or “elegant”, and some times only experienced developers seem to see the beauty in the solution.
But reading Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman the following quote (attributed to Richard Stallman) from made a “click” in my mind:

I would describe programming as a craft, which is a kind of art, but not a fine art. Craft means making useful objects with perhaps decorative touches. Fine art means making things purely for their beauty.

So programming is “kind of an art”, but it also has a purpose (maybe except the Shakespeare Programming Language or other so-called esoteric programming languages). That was really enlightening. Thanks guys.