Much intellectual capital is spent examining the logical advantages and disadvantages of our programming tools. Much ego invested in becoming completely objective examiners of productivity. The exalted ideal: To have no emotional connection to the workbench.
Hogs and wash. There is no shame in being inspired by your tools. There is no shame in falling in love with your tools. Nobody would chastise a musician for clinging to their favorite, out-dated, beat-up guitar for that impossible to explain “special” sound. Some authors even still write their manuscripts on actual type writers, just for the love of it.
This highlights the tension between programmers as either engineers or craftsmen. A false dichotomy, but a prevalent one. It’s entirely possible to dip inspiration and practice from both cans.
I understand where it’s coming from, of course—strong emotions often run counter to good arguments. It’s hard to convince people who’ve declared their admiration or love of something otherwise. Foolhardy, even. It can make other types of progress harder. If we all fell madly in love with Fortran and punch cards, would that still be the state of the art?
I find the benefits far outweigh the risks, though. We don’t have to declare our eternal fidelity to our tools for them to serve as our muse in the moment. And in that moment, we can enjoy the jolt of energy that can come from using a tool fitting your hand or mind just right. It’s exhilarating.
So much so that it’s worth accepting the limitations of your understanding. Why do I enjoy Ruby so very much? Well, there’s a laundry list of specific features and values to point to, but that still wouldn’t add up to the total sum. I’ve stopped questioning it constantly, and instead just embraced it.
Realizing that it’s not entirely rational, or explainable, also frees you from necessarily having to push your muse unto others. It’s understandable to be proud and interested in inviting others to share in your wonder, but mainly if they haven’t already found their own.
If someone is already beholden to Python, and you can sense that glow, then trying to talk them into Ruby isn’t going to get you anywhere. Just be happy that they too found their workbench muse.
At the end of the day, nobody should tell you how to feel about your tools (let alone police it out of you, under the guise of what’s proper for an engineer). There’s no medal for appearances, only great work.
Phil Spitler
on 24 Mar 14Great post, punctuated with a very powerful closing quote: “There’s no medal for appearances, only great work.”
Bravo DHH.
Hartog
on 24 Mar 14Fact remains, you should use the right tool for the job. No matter how much you love your grandpa-gave-me-this-screwdriver, when it comes to nails, do not use it.
DHH
on 24 Mar 14Hartog, this whole article went right over your head, hu?
Hartog
on 24 Mar 14Yes.
PRS (formerly Phil Spitler)
on 24 Mar 14Hate to pile it on, but if you’re not trolling, please reread the analogies in the post. If those don’t speak to you, maybe this will…
Race Scenario: Yow own a:
Ferrari 458 Italia
Top Speed: 201 mph
Engine: 562 HP 4.5L V 8
You drive this car at the track the race is held at all the time. You are increasing lap times each week. A week before the race, you are offered to race a:
Ferrari F12 Berlinetta
Top Speed: 211 mph
Engine: 730 HP 6.3L V 12
In your own car, you know how the brakes feel, how the suspension handles and basically driving this thing is muscle memory. Or you take the new car because it has better specs for the “job” (the race).
Which would you do?
Cameron
on 24 Mar 14Best DHH piece for ages.
PRS
on 24 Mar 14I’d like to thank you @DHH. I’ve been considering going back to MacVim for some time. This post, along with some necessary server configuration I’ve done lately (a joy in Vim) has finally convinced me. I should have went with my gut when Atom came out that if I was switching from Sublime, it should be back to Vim, not Atom.
Ray
on 24 Mar 14Very true. Some engineers pay too much mind to the tools being used and very little to the application. And, when you’re too focused on the tools, you change tools often and maybe even as the wind blows. You’re more concerned about trying new tools and trying every app and interface under the sun. And, you do nothing in the meantime. When you’re focused on the application, that’s your best chance to do something great. When you’re focused on the tools, you may never do anything except learn new tools and be available for future employers.
Peter Hentges
on 24 Mar 14Neil Gaiman writes the first draft of his works longhand, with a fountain pen. He then types up that draft and uses modern tools to edit and polish the work. No publisher, even Gaiman’s, would accept a hand-written draft.
There may be a metaphor for tool use in that anecdote, but I’m not parsing it at the moment.
Jim Maher
on 24 Mar 14Good lord help me, I actually DID Fortran with punch cards. No love. No love at all.
Andre Kibbe
on 24 Mar 14@PRS: I like MacVim, but found its syntax highlighting too buggy.
Try Sublime with Vintage mode enabled. You’ll get all the modal keyboard navigation of Vim (that my fingers can’t live without) while getting all the other advantages of Sublime.
PRS
on 24 Mar 14Thanks @Andre! I’ll give it a go again with sublime. Is vintage mode any different / better between Sublime v2 and v3. I remembered some pain with Sublime vintage mode, but maybe I was in a bad mood. haha.
Michael
on 25 Mar 14I realized this in the middle of a conversation with a seasoned PHP developer a few years ago. It’s easy to use Python as an example, but you really learn this lesson when you’re facing someone using something you’re sure is worse in every way and you realize they should keep using it because it’s really working for them.
And I appreciate the same grace when someone mocks me for not jumping over to Node.
Andre Kibbe
on 25 Mar 14@PRS: Still on ST2 here. The only pain point for me is not being able to jump to a line number above the current one with “g [number]”; it only seems to work with line numbers below the current one. So I have to use Sublime’s native equivalent: “ctrl-g [number]”.
Devan
on 25 Mar 14I cannot envisage doing any work using tools that don’t inspire me. Just like I cannot play a guitar that I don’t bond with at an emotional level…
Kudos on going back to talk about subjective matters that relate to programming. I’ve missed these…
T
on 25 Mar 14Devan, if you’re a musician, that’s certainly one thing to be inspired by your choice of instrument. But, your music is the end result. No one will pay you for the guitar you choose. They’ll only pay you for your music, and it has better be good…and it probably could be just as good with any number of other guitars if YOU are a good guitarist.
In coding, I use a 20 year old editor (that I was recently amazed that it could still be installed on a Win 8 box). My reason is comfort and small footprint. I don’t need all the modern “helpers” except for color-coding and some original html buttons. However, my work is great, because I have a great vision for the end product. I know others (even with broad understanding) using the most modern tools who simply don’t have a great vision for their work or software in general, and the end result is not great to mediocre.
The end result is all that matters if you’re trying to do something great.
AstonJ
on 25 Mar 14Great post David!
I agree with you. The only pre-requisite tho, imo, is honesty – you just have to be honest with yourself and open minded enough to give languages a fair shot.
I’ve seen too many people dismiss Ruby without even trying to get to know it. Their loss perhaps, but it’s part of the reason I tried to rationalise why I love Ruby so much in this blog piece: What’s special about Ruby I did a similar one for Rails. I still feel the same, there’s just something about Ruby that makes me love it – and it is love – because that is equally inexplicable.
JRP
on 26 Mar 14In keeping with the metaphor, the problem is not about being in love with your tools. It’s more about falling in-love with the popular girl in college (all the other kids did) or the romantic notion that your high-school sweetheart is the love of your life.
Once you’ve been around and got some experience, you’ll have a better idea of what you want or don’t want, romantically speaking of course. You’ll learn the qualities that attract you, the personality that suits you.
On the other hand, learning something, sticking to it and claiming that ignorance of other realities gives you an advantage… well… that runs counter to all we know of evolution, and how it’s best served by variety.
Learning new toolchains, much like learning other programming paradigms (imperative, logical, functional, etc) is more likely to make you a better engineer than sticking to a single one, much like learning multiple brush techniques will make you a better painter, or learning multiple instruments or musical styles will make you a better musician.
So, if someone is content with their choice and with being solely focused on something, there’s no point in ruining their day. But let’s not pretend that serves the higher purpose of making them better engineers or better artists, when often all it actually serves is an unconscious effort to remain within one’s own area of comfort.
Scott Asai
on 26 Mar 14Agreed. Just like mentioned in Remote, judge people on their results, not how they got there. Tools are just a means to an end. Use what you like and know best.
T
on 26 Mar 14JRP, in my experience, I don’t see learning new tools helping to make better developers, most of the time. Maybe make them more efficient, but not better. I also don’t liken development tools to brush strokes. A brush is a tool, but a stroke is a technique. I can code in any technique or language I want in any editor I want. I learn techniques independently of the the tool.
A GREAT painter could paint a masterpiece with his favorite and only brush, probably, and could paint all of his works with one style of brush probably and outpaint a lesser painter who has every imaginable brush at his disposal.
There may come a time when standardizing the tool in some environments is good for the group, but the group has to master technique and application to be great.
Shane
on 26 Mar 14Great article…
This discussion is closed.