06 Jun 2012

As a programmer, the text editor is the core tool in your world. Regardless of platform, language or environment, almost everything you write will go through your editor of choice. And I’m here to tell you folks: chances are, your text editor is the wrong tool for the job. Here’s why….

Most text editors are built to support a writer’s workflow. And a writer’s workflow looks like this: Start a new document, append lots of text, then later on, jump around a little & tweak:

Append-Centric Editor

The amount of jumping will vary depending on the writer, but the workflow is essentially insert-centric. A tiny bit of time is spent moving the cursor, the vast majority spent entering new text.

And that’s the model that pretty much every text editor out there is built on. Notepad & Word are built for writers, but so is the editor in Eclipse, Xcode, IDEA & every other IDE I’ve ever seen. The workflow is insert-centric, and any other features are just tacked onto a menu at the top:

Fancy Insert-Centric Editor

But we’re not writers! We’re programmers. Our workflow is completely different. We spend very little time appending large chunks of new text. We spend most of it jumping between functions, adding a bit here, jumping there, deleting a few lines and moving them over to a different file. We leap around, chopping, changing, expanding the code all the day:

Manipulation-Centric Editor

No editor designed for writers will ever support a workflow like that well. And (almost) every editor is either designed for writers, or an extension of one that was. Adding more menu items to a fundamentally wrong workflow doesn’t solve the problem. We need an editor that isn’t insert-centric. We need one that’s manipulation-centric. An editor that assumes very little of our time will be spent inserting en-masse, and that most of it will be spent jumping around, tweaking, expanding and refining. We need an editor that assumes multiple files at once is the norm. We need an editor that makes changing five scattered sentences at least as easy as entering one new paragraph. The writer’s editor will not achieve this, no matter how many menu items it has.

If your editor sends you to a mouse to select a paragraph, it’s not good enough. If it expects you to edit one file at a time, it’s not good enough. If jumping between two related functions in two separate files requires a mouse, it’s not good enough. In short, if your editor doesn’t make movement a first-class citizen, it’s not good enough.

There is at least one solution to this problem. There is at least one editor that’s designed, from the ground up, for a programmer’s workflow. But I’m trying to avoid mentioning it, because this post isn’t about converting people to my favourite editor. It’s about the fact that most editors aren’t designed for us, and that we need a solution.

There are two and a half types of editor. Editors designed for writers. Editors designed for writers, with dozens of functions tacked onto the menu system. And editors actually designed for programmers. Whichever one you pick, please make sure you’ve picked it deliberately.

PS: Okay, my chosen editor is Vim. It addresses a programmer’s workflow beautifully. But this isn’t a pro-Vim rant. It’s a workflow plea. You don’t have to pick my solution, but I hope you see the problem & go looking for a solution.

PPS: Some of my colleagues think I’m anti-IDE. I’m not. I just keep coming back to the editor. Having an Integrated Development Environment is nice. Integration is a lovely thing. But having an editor designed for programming is essential. I’ll give up integration for that, every time.

comments powered by Disqus