The creation of a Rands article goes like this. First, the idea strikes me at some random part of the day… usually in the car to or from work. I spend anywhere from a day to a month fine-tuning this idea in my head until it’s something I want to start writing about. It’s entirely possible that some great work never makes it past this stage because I don’t write it down, but my thought is, “If the idea can’t escape my head, it’s not ready yet.”
When I’m ready to start typing, I fire up TextEdit for a first draft. Yes, TextEdit. I don’t need much out of an editor for that part of the writing process. Actually, all I need is a pleasant font and bold. Code editors don’t work because they don’t have rich text formatting and I use this formatting to visually mark sections and cordon off ideas. Word doesn’t work here because it’s a cluttery mess of functionality I don’t need.
Once I’ve got something 75% of the way there, I start sending it out for content review and copy editing. (If you want to help with Rands stuff, drop me a line. Let’s talk.) This is another advantage of TextEdit — it’s Mail friendly — it pastes exactly what I typed in formatted into the message as opposed to Word which has a penchant to make fonts huge and retarded.
With feedback in hand from the various Rands support folks, I clumsily merge this feedback into TextEdit and then print out the piece and shove it under my pillow for a day. This is bake time. I gotta forget about the piece for 24 hours so I can read it again with fresh eyes before the last edit. There’s a moderately large pile of work which never makes it pass this stage, either; the thought is the same as above, “Not done”.
With a fully baked piece in hand, I begin the mechanical process of prepping the article for posting. Now I need an editor that is markup-friendly. I’ve been using BBEdit since my move to Mac OS X and my thoughts from 2004 still apply: “It’s a fine editor, but what’s the fuss about? Where’s my holy shit?”
I’m not a power user, but I know what I expect out of a good editor and, well, BBEdit is a good editor, but whenever I fire it up I feel like I forgot to read some imaginary manual called, “BBEdit Rocks. Really.” I suspect the fact that I didn’t grow up with BBEdit is part of the issue. The fact that I’m a pure Mac OS X guy with zero pre-Mac OS X experience probably contributes to feeling like I’m missing part of the BBEdit joke. Yeah, Zap Gremlins. Ha ha. I get it. Clever, but great design?
My BBEdit ambivalence allows me to check out new editors as they stream across my consciousness and, to BBEdit’s credit, it’s lasted four years. I’ve test driven several editors during that time and BBEdit remained my technical tool of choice, but it was only a matter of time until someone else knocked my socks off.
The buzz around TextMate started many months ago, but it’s when folks started to ask me to order it that I started to pay attention. There is no copy protection known to man that any bright engineer can’t circumvent, so when an engineer asks you to purchase the software they’re saying, “This is the shit. We should pay these guys for this fine piece of work.”
You bet I downloaded it.
After two steady months of TextMate, I’m happy to declare it my editor of choice because it demonstrates a design philosophy I love. Bright, Patient Design. I’ll explain.
A well-designed application gently lets you know it’s smarter than you. It goes like this:
TextMate: “Hi Rands, I’m TextMate.”
Rands: “Quiet, you, I’ve got stuff to do and no time to do it. I don’t have time to learn a whole crap load of keyboard commands. I’m just trying to format some HTML. Please stay out of my way.”
TextMate: “You bet. Just holler if you need anything.” [insert silence]
TextMate’s interface is a big huge empty space. No toolbar, a clean menu structure. You just start doing whatever it is you do and then, eventually, you need something.
Rands: “TextMate, I need to create a link and IF YOU’RE GOING TO PUT ME THROUGH HOOPS WE’RE THROUGH. I MEAN IT.”
TextMate: “Sure, see that status bar at the bottom, all the HTML commands are there.”
Rands: “Great, now shut up.”
TextMate: “You bet.”
Exploring the status bar at the bottom of each TextMate window is your first glimpse into Bright Patient Design. In a single status bar, TextMate’s potential explodes. First, there’s a exhaustive list of all the different language types supported by TextMate along with a set of formatting and template commands for each and every language. But wait a tick…
Rands: “Hey, TextMate.”
Rands: “I need to add a link.”
TextMate: “Did you check out that status bar?”
Rands: “Yeah, it’s CTRL-SHIFT-L, but I need to associate it with this URL I just put on clipboard. How do…”
TextMate: “Rands, did you use the command?”
Rands: “No, but do I need to paste the HTML and then paste…”
TextMate: “Use the damned command.”
So I do. Ctrl-Shift-L and TextMate does exactly what it’s supposed to do. It adds the HREF and it automagically pastes the URL on my clipboard into the HREF. In my book, TextMate has just taken two separate tasks and made them one. Folks, that’s a 50% savings and 50% savings is engineering nirvana. Careers are made on 50% savings.
Now, I bet BBEdit does this, but fact of the matter is, I don’t know that it does. I’ve spent four years stumbling around that program and my impression is not Bright, Patient Design, it’s Historical Cruft. BBEdit’s biggest flaw is one of its greatest assets: its history. BBEdit’s design is an amalgam of every design decision the Bare Bones Software team has made since its release for System Software 6 in the early 90s and it shows. Go click on the anchor button in the HTML toolbar and tell me what happens. That’s right, you get a dialog with every possible anchor attribute you’d ever need. That’s not bright, that’s lazy.
Bright, Patient Design is knowing that you are going to need to tell people what they want, but having the patience to know they need to discover they need it. It is choosing to stay out of their way while they make this discovery and then, when they’re ready to learn, showing them you can make their life better.
Bright Patient Design acknowledges you are going to make big decisions for your users. You are not going to present every possible bell and whistle. You are going to give them the one bell they need and you’re going to ring it sweetly and they’re going to realize that you’re a better bell ringer than they are.
After my link moment with TextMate, I realized that higher powers were present and I dug into the program. Of course every single damned command, macro, template, and snippet is a customizable script. Of course, it’s trivial to start using these scripts, but TextMate doesn’t throw this seemingly limitless customization in my face, they focus on staying out of the way while I learn at my own pace.
It’s harder than it sounds. Each time Microsoft Excel barks at me asking, “Hey Rands, it looks like you’re managing a list. BOY CAN I HELP YOU!” I want punch my flat panel monitor flat. Excel, you’re not being helpful, you’re being an arrogant prick and shoving your design down my throat. I’ve had the same reaction to just about every Wizard I’ve ever met. Wizards are a grimly unsatisfying experience where potential functionality is dangled in front of me, but I rarely end up with what I need.
Yes, I want you to decide for me, but you better make the right decision based on my need or we’re going have an even bigger problem. Again, this is really hard. Developers have to enumerate every possible user need for their application and then prioritize which of those needs are most important and how to meet them. My guess is TextMate’s developers are a collection of hardcore developers who have been using editors for a bazillion years. In those bazillion years, they got all the market research they needed. They also probably stared at BBEdit a good long time and said, “We can trim 50% of this functional crap and still have a better product.”
Yes, there is a well-defined need for applications where every single option is presented to the user. Photoshop comes to mind. Any professional application, really. You don’t need to be Bright or Patient here in your design because your users are incented to figure out how to be experts. Me, I’m in a hurry and the more your design stays out of my way and let’s me get stuff done, the happier I am and the more likely I’m going to become an expert.