Random thoughts of Craftsmanship
Last night I had a good conversation with my friend Oz (@sadproz and Arthustler) about ideas and realizing what professional means. In the past couple of years, I have started to think more into this idea of software craftsmanship . Now, that’s a pretty nebulous thing, but I thought I would lay out what it means to me, and what I think about it.
We all know that money won’t make you happy, but of course having access to resources to live comfortably and move you up the Heirarchy of Needs is important. But alot of people are so focused on the bottom stage that they never move up to the higher rungs. Recently, going through the process of hiring developers, it’s been interesting to see the resumes and people you come across. There are a lot of people that I suspect are in it for the lower end reasons. Let’s not mince words, this is a profession that can earn some of the highest salaries outside of law and medicine, especially for someone right out of school. And the entrepreneurial opportunities are undoubtedly the strongest. But how many people are drawn to it with the idea of “Hey, I’m good at computers and this is a great salary.”? Quite a few, I think. But hey, what’s wrong with that? Plenty. People perform at their peak when they are passionate. And if it’s just a way to make a buck, that’s where your enthusiasm stops. As long as you’re doing enough to keep the gears turning and the paycheck depositing, that’s all you’ll do.
Craftsmen talk about refusing to settle for a crappy product that breaks and is difficult to use. There’s almost a zen-like desire for simplicity. You can tell a craftsman because they are not excited about a complex solution that takes a mammoth mind to comprehend and learn. They are excited by the simple, small solution. They look at that 1000 line Java class file and they feel revulsion. One of the things that has drawn me to Ruby over the past few years is going in and saying that something that is compact but looks like an incantation is not ok. I like to borrow Gavin King’s phrase “executable ASCII art” . But that big, complex system? Craftsmen hate it. And I’m not going to lie, we feel a bit of disdain for the people who wrote it. In part, I believe, because they lack the passion to do better. They are the code monkeys. The obstinate, weird guy that is some kind of oracle, reading tea leaves on his computer screen. There is a better way. Not only does this image and type of product bring down what we enjoy doing, but it dilutes what we do with people that don’t have a passion for it. I wish everyone could sit comfortably on the Maslow pyramid AND do what they love, but I also live in the real world. And so you will always have the “I’d rather be fishing” developer. Don’t get it twisted; enjoying playing music, golfing or fishing is great. You have to have a balanced life with many things you enjoy. But when your work is a burden, you bring everything down. You’re ready to bolt for the door, you have a “lets get it over with” mentality and you do crappy work. The world would be a better place if everyone WORKED their passion. This is craftsmanship.
We want people to not view software as an imposition, or a burden. We want software to be a tool that helps them. Everyone has seen the “system” that is such a burden and yet is somehow indispensable to the way a company does business. Yuck. If you are writing articles, I want to help you with software that lets you focus on writing and not the frustrations of losing your work or doing the sequence of arcane steps to get it published on the intertubes. There’s no room for ‘good enough’, there’s only room for ‘the journey of greatness’. And sure, maybe we do take some pride in the erudition of solving ‘hard problems’. That’s what puts us at the top of that pyramid. But we want to be a conduit of putting other people higher on the pyramid as well, and making it so that they can focus on what gets them that joy as well. We are the tool builders, the enablers. We have a gift to enable the visions of others. And that’s what I think my friend is trying to do in the world of branding, graphics design and more. I want the culture of pride and passion for work and community of craft to spread and be viral. I want it to infect our culture, from baristas to zookeepers.
So keep spreading the virus. The only way we’ll ditch the crappy coders is to help them find what they really want.