My father is a builder, a tinkerer, an architect and an artist. He’s extremely mathematically inclined and thoughtful. He’s also got a lot to do with why I do what I do. Growing up we built, tore apart and fixed more things than I can remember; cars, boats, houses, forts and toys. From an early age it was clear, to me, that my dad loved building stuff with his hands. To this day he’s most at ease working in his shop building furniture out of wood or working on his classic speed boat. And, when he’s done with a piece, you can tell it was built by a consummate craftsman who loves what he does. I like to think that I’ve followed in his footsteps – only I build virtual things with my fingers.
This small story brings me to a recent Twitter thread started by the consummate PHP craftswoman, Sara Golemon, where she ranted (she often rants – with good reason), “Jesus Fucking Christ. Why don’t mother fucking developers go out and buy a mother fucking clue??? Take some GOD DAMNED PRIDE!” My reply to this was, “Sadly, many developers consider coding a “job” rather than a “craft”. There’s a significant difference between the two.” This was quickly followed by Helgi Þormar Þorbjörnsson saying that craftmanship requires knowledge, attention to detail, perfection, etc. My reply to this, and I think this is what my dad really passed on to me, was, “Above all, craftsmanship requires a true love and passion for what you’re creating. You naturally acquire the rest along the way.”
My point is that, like it or not, people go into computer programming for lots of reasons; money, interest in computers, high demand in the job market, etc. In other words, and what’s so frustrating to coders like Sara and myself, not everyone who codes is passionate about coding. These are the people who copy and paste code. These are the people who don’t tinker or hack on side projects. These are the people who are afraid to learn or refuse to learn the Next New Thing. So how do you fix people who build their code like an Ikea bookshelf rather than a finely hand crafted M.L. Stump original?
- Build easy to use, domain specific, concise frameworks for your coders. It doesn’t have to be Django or Ruby on Rails or Cake. Just something that removes their ability to mess up the basics.
- Create and enforce strict coding and documentation standards. Remove their ability to go rogue and write ugly looking, poorly documented code.
- Implement code reviews and ensure a true craftsman is in the room when they occur. In other words, shame them into writing decent code.
- Require unit tests. This reduces the likelihood that their lack of passion will break your code in the future.
As the truly passionate craftsmen and craftswomen of our trade, it’s our duty to ensure our code is well written, well documented, works properly and is fun to both read and write. If you aren’t interested in doing such things I’d appreciate if you found work in another trade so as not to tarnish the craft I love so dearly.