Programmer as Carpenter

I’ve been experimenting lately with exactly how I describe my job to people unfamiliar with software development. The question invariably arises, “what do you do?”, and it’s an exercise of brevity to get the point across of what it means to work with technology creatively. I’ve tried to be really general – “I work in advertising” – which makes me out to be more of a Don Draper character (which I am not, and it’s pretty obvious). If I tone it down to “I work at an ad agency”, the follow-up question is “what do you do at the ad agency?”, and we’re pretty much back where we started.

I’m a web developer. This term is generally meaningless to most of the population, so after saying such I then reiterate with “website programmer”. And as soon as someone hears “programmer”, they get a hazy look in their eyes and try to cover up that it sounds like the most boring job in the world. Scenes of counting ones and zeroes dance in their mind. So, in an effort to get across the true nature of what it is like to be a creative developer, I use a “Programmer As Carpenter” metaphor.

At first, it sounds like a bit of a leap. A computer programmer sits in front of a computer, types at a keyboard, and gets coloured lights to bounce across a screen. A carpenter works with their hands, moves to and fro around their workshop, and builds tangible, practical items. A computer programmer is withered and pasty. A carpenter is fit and tan. A computer programmer is smart, but can’t relate to society. A carpenter might not have a PhD, but they build things people need and want. How is a programmer at all like a carpenter?

A creative programmer is someone intimately involved with the design and final implementation of software. Much like a carpenter takes a pencil sketch and builds a chair, a creative programmer takes a digital sketch and builds an application. We create something from which there was nothing before, taking into consideration a multitude of tiny details that relate to comfort and reliability. We can’t ensure that people will use what we build, but we want to make sure if someone does they enjoy the best possible experience. We balance our responsibilities to our trade and our audience. We work not just for our boss, but also for our users.

Programmers and carpenters take personal pride in their craft. Of course, we are proud of the object/application itself, but we are most proud of how we achieved the goal. We strive to improve our craft because we know whatever we build will be made better as a result. Carpenters use hammers, jack-planes and sandpaper. Programmers use languages, APIs and IDEs. Our job isn’t to invent new tools or lament why a particular tool isn’t adequate; we do what we can with what we have.

Programmers and carpenters are constantly aware of the limitations of their materials, and rely on their imagination to push those boundaries with as little alteration to the original design as possible. With carpentry, one is concerned with the load applied to a 1-cm thick cut of maple. With programming, one is concerned with the load applied to a P4 processor. The ‘creative’ aspect of ‘creative programming’ lies in the imagination to match whatever outcome from whatever idea given whatever material. We make suggestions (“that’s a pretty thin cut, maybe we should use oak”), but if the project absolutely requires balsa, we figure out how to make it work with balsa.

Sometimes we build something small, like a shelf, or sometimes something large, like a building; the process is fundamentally no different, only multiplied to fit the frame. Our hardest, most ingenious work is often obscured from view – by a coat of paint, drywall, or graphic design. The unfamiliar eye can’t easily recognize our individual role. Colleagues and fellow enthusiasts always recognize subtleties, but the general public overlooks the underlying construction. Celebrity status doesn’t really exist for us, so we must derive personal satisfaction in simply knowing that a job was well done. Everybody wants something that looks cool, but programmers and carpenters specifically want something that is solidly built.

Whenever I first mention my programmer as carpenter metaphor, people smile. I think there’s a certain simple romance to carpentry, and a complicated disconnect to computer programming. Too often anything related to computers is dismissed as abstruse, brainy and intangible, simply because most people don’t understand exactly how computers work (and don’t want to). We live in an increasingly virtual world and the physicality of carpentry seems completely opposite to Internet ephemera.

However, almost everyone uses some form of a computer in their daily activities. The digital world is so familiar (and graphics are getting so much better) that the conceptual divide between objects on the screen and objects in the room isn’t too huge to overcome — neither is the difference between us who build virtual or physical objects. We are people who make things for other people to use.

I may start referring to myself as a ‘web carpenter’, but that may be going a bit far. Who knows, maybe someday carpenters will describe what they do with “well, I’m a lot like web developer because…”.

About the Author:
Name: Steve Shaddick
Bio: Steve Shaddick is a full-time web developer at CP+B Canada, and a part-time video/installation artist at whatever gallery will have him
Location: Toronto, Canada
Company: CP + B

This entry was posted in News. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>