owen

After reading an article on Hacker News I found myself once again perplexed by self-proclaimed "programmers" who insist upon a minimal toolset to accomplish their work.  

Jeremy Morgan, the guy who wrote the original article about the tools he uses, is clearly a Windows programmer.  His tools indicate not only that he runs Windows, but that he writes code that is intended to be deployed on Windows.  For Windows developers, some tools are necessary for the trade.  Specifically, a compiler that will produce a Windows binary application is a tool that must be in the box to accomplish your job.  But beyond what's required for producing working code/applications for different platforms, there seems to be a trend among vocal "coders" to use the least invasive tools for the job.

I've been to many a web developer meetup where the conversation devolves from "I use Coffee Cup HTML to make my sites" to "I use Dreamweaver" to "I use TextPad" to "TextPad?  Pah!  I use Notepad!"  It's as if the less functional the tool is, the more savvy you portray yourself as a coder.  My opinion is that this is not just naive, but potentially an indication of how poor a programmer you actually are.

There are folks that insist on using solely Sublime Text or Coda for coding.  For as good and functional as these editors are, there are problems with them that are obvious to me.  Sublime Text has a robust plugin system, but virtually any feature that you'd want to include in your editor is something you need to plug in.  Version control, deployment, debugging...  All of these are add-ons, with finicky settings and less-than-ideal interfaces.  Depending on how you see it, Coda may be worse. Coda's deployment mechanism is to save and load directly from the published location.  There's little configurability for different project deployment options.

The vim-only advocates also disturb me.  It has all the same problems that Sublime Text does, needing plugins to do anything beyond basic text editing.  Plus it's cryptic nonsense.  Yes, I've said it.  I occasionally envy the editing power of someone who has mastered the arcane keystrokes of this venerable editor, but then I remember that I often need to use a debugger.  The pain required to configure vim for projects, deployment, version control integration, and debugging easily negates the vim advocate's refrain of how it's available anywhere.

Mind you, this is from the perspective of the web developer I've become, not from the application developer I used to be.  Yet still, I think I would prefer even the IDE of Turbo Pascal with it's Common User Access functions over the cryptic modes and keystrokes of vim. In fact, I keep hearing that vim can do things with a keyboard that you can only do with a mouse in other editors, but I'm not so sure any of those things are things I would really need to do.

As a developer of more years than I care now to count (yes, more than 15), I often encounter younger devs who think they're hot stuff that believe they can get away with using one simple tool for everything.  While I suppose you can "get away" with it, why should you?  I don't have just one editor for a reason.  The silly notion that I'm going to start serious coding on some random machine I've never encountered before has never happened to me, thus I don't need to be a wizard at a minimal vim editor so I can do editing from some pre-configured server somewhere.  More often, I have my own PC and don't have internet access to connect to some pre-configured vim on a server.  Isn't that the more important case to consider?

Why would I use a general-purpose editor without support for CSS autocomplete or colorwheel hex-color selection or "jump to definition" capabilities when I can get all of those things from an editor designed to help me do that work?  I'd rather have a versatile, familiar, feature-full text editor and a good IDE that can do debugging available to me than a single tool that I foolishly believe can do everything.

This post isn't meant to disparage the users of any editor in particular, and I don't particularly care if your editor I've criticized is able to do any of these things.  What I mean to convey is that while any of these may be fine editors, there may be places where that editor alone is simply not the best tool for the job. While you're making fun of someone with a full, complex IDE that "has to" use a mouse (my IDE can be used fairly keyboard-only), they may be coding rings around your inability to do those more complex things from a single click.