crafting, building, engineering, and how I work
While reading the recent 24 ways article about “Crafting the front-end”, I thought about how I view my own work and what kind of work I consider it to be. In the first part of the article, Ben Bodien, the author, identifies five essential traits that distinguish a craftsperson:
- An appreciation of good work, in both the work of others and their own. And not just good as in ‘hey, that’s pretty neat’, I mean a goodness like a shining purity – the kind of good that feels right when you see it.
- A belief in quality at every level: every facet of the craftsperson’s product is as crucial as any other, without exception, even those normally hidden from view.
- Vision: an ability to visualize their path ahead, pre-empting the obstacles that may be encountered to plan a route around them.
- A preference for simplicity: an almost Bauhausesque devotion to undecorated functionality, with no unjustifiable parts included.
- Sincerity: producing work that speaks directly to its purpose with flawless clarity.
Though a “devotion to undecorated functionality” strikes me as being a particular subset of craftsmanship, not a requirement (ornamentation has it’s place in craft), the list rings true to me. Undoubtedly, this is partially because it validates my ideal view of myself. I originally found myself in this field largely by accident, having only taken a single university course in computer programming to serve as my educational grounding. After a bit of hurried self-directed studying, I landed a job and started learning in earnest. As my history would suggest, I do not consider myself an engineer. But I am a coder, and I believe strongly in the passionate pursuit of excellence, and in doing the best job possible. A “code craftsman”, then. I can believe in that.
Considering how incredibly low the barrier to entry has dropped for so many technical fields, and how many numbers of people must now be working in jobs for which they have very little if any formal training, I wonder how many others also consider themselves craftsmen. Based on the quality of many of the third-party plugins or modules I have worked with (an admittedly small sample size), I would have to guess not many. On the other hand, much of that code was probably written by coders who do in fact have the formal training one would traditionally expect. Perhaps the seeming lack of care for good code is sometimes a result of that background: programmers with nothing to prove and little of the passion that is required to facilitate craftsmanship. Does that mean that the lowering of the barrier to entry for programming could actually revitalize the craft of coding? As I see it, the influx of people like myself, drawn to the accessibility of the field of programming and the comparative surplus of available work, could pull the field in two very different directions:
- Freelancers with limited knowledge of programming fundamentals and best practices invade the marketplace and drive down rates, churning out increasing amounts of code of decreasing quality and making it more and more difficult to make a living doing good work in the world of computer programming
- A significant portion of the people drawn to programming recognize their incompetence and the gaping holes in their knowledge, and decide to try to compensate for their weaknesses by adopting a version of the craftsmen set of values with the accompanying drive and focus, scrambling to fill in their foundation as they go in order to facilitate their craft
Obviously, the latter is a description of how I see myself (am I doing this blog thing right? It’s supposed to just be about me, correct?), as well as a hope that others will feel the same way to a sufficient degree to keep the code-as-craft culture alive, and maintain a marketplace for those who wish to practice it. There are other forces being exerted on the field. The amazing affordability offered by outsourcing software is undoubtedly very attractive for potential clients. Again, a similar dichotomy of effects can be mapped onto this change:
- Client expectations for the cost of our work are adjusted radically downwards and it becomes exceedingly difficult to compete in price, forcing developers to adopt cost-cutting practices, like consistently opting for the quick fix and entirely abandoning any craftsman ethos.
- The outsourcing opportunities offered to clients actually make it easier for code craftsmen to differentiate their work and process (and with it, their story) from those examples.
Certainly, if we look around at the health of other genres of craft, we can see much reason for hope and despair. Independent cobblers as a whole for example, are suffering mightily from the pressures of industrialization and globalization. At the same time, some cobbler craftspeople have taken the time to tell their story and discovered an eager market for their craft, one that is willing to spend more money on a pair of shoes than others would spend on even the latest, most coveted pair of Jordans available. And that, despite Nike’s very impressive and massively expensive efforts to cultivate the story of their product lines and even to offer customization to their customers in a way very reminiscent of the experience offered by tradition made-to-measure craftspeople. Handcrafted is a very powerful concept and one that is highly valued by many.
I entreat others like myself to embrace the craftsperson ethos (start with Bodien’s article if you haven’t already done so) and go out and tell your story.