Digital Craftsmanship and Tools

You know that saying that goes “when you only have a hammer, everything looks like a nail”? It is usually an easy way to talk about using the right tool for the job. However, the converse is not always true; sometimes the right tool for a job is a hammer even though you are not working with a nail.

My uncle is a craftsman. He makes really beautiful stuff out of wood. As you would expect he has a huge workshop with lots of tools. He knows how to do things with old school tools and with modern equipment. He knows how to make tools and how to improvise when he doesn’t have the tool he wants. If you ask me, that tool versatility is what sets a craftsman apart from a novice.

So what the hell am I talking about? Programming languages, databases, frameworks, and libraries, and the people who use them.

I really like Jr Colin’s post Tools Don’t Matter, that is in part a response to Zed’s now infamous rant against the Ruby community. (BTW, I love Mongrel and thank Zed for that, other than that I am not sharing an opinion on his post at this time).

I am willing to work with the tools I have available, and the most important tool I have is my ability to learn and adjust. A long time ago my dad said something about how a measure of a programmer is how close to the chip they understand. When you can think in terms of C or Assembler while writing something like Ruby, it is no surprise that Ruby is inherently slow. You think “sure, it is creating a ton of objects, allocating a ton of memory, and having to load a ton of shit for every action”. Guess what, there are other tools to get around it.

One of the biggest gifts that comes from having worked with so many different languages is being able to think in terms of the assets that each tool brings. I can drill straight and consistent holes with a drill press, but that is an awful heavy tool for most jobs, I can also use a power drill or even a crank drill. The thing is, in a pinch, I can use a hammer and a nail to “drill a hole”. Which is what bugs me about technology evangelism.

Sure, software projects like Rails or PHP need marketing departments to tell everyone how great the product is. I have no problem with that. Just don’t hire a marketer to write software. I actually think this would be a great interview question: “Are you an evangelist for the tools that you use?”

Which brings me back to Jr Colin’s post where he said:

“Perhaps that’s one of the reasons that good programmers i know are language agnostic. They really don’t care what toolset they use since learning a new one is just a question of learning the syntax and formatting quirks. Sure, they may be most comfortable in something like Lua or maybe tend do quick builds in something like .Net, but if you were to tell them to code to Javascript, they’d shrug their shoulders and dive in.”

I couldn’t agree more. I know good programmers who predominantly work with one particular language or framework these days, but the best ones know other tools/languages and are not afraid to dive in to something they don’t know. After all, we are really talking about 1s and 0s at the end of the day right?

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*