Joel put up a new article today. It's called
Making Wrong Code Look Wrong. It's aimed at coders, so it might be a bit greek if you're not a huge nerd who programs computers for a living (or for fun). Essentially, the point of the article is the same as the point of most of Joel's articles: make life easy on yourself and on your users. They'll love you for it, and you'll be more productive.
This is a lesson that very few companies have learned.
In the article, he talks about ways to make errors more apparent in your code. This is a big problem in most code -- to make a frame carpentry analogy, most coding languages don't let you check whether your walls are straight and plumb until after you've got the drywall up. And it's correspondingly hard to go back and fix things. So Joel's suggesting various ways to set up your jobsite and construct your wall sections so that if they aren't straight and plumb and level, they don't look straight and plumb and level.
This almost gets back at my last Wormsign entry: structuring our artificial environments so as to take advantage of our natural capabilities is the most effective way to get (and stay!) productive. Of course, now that I've written that last sentence, I realize I'm talking about ergonomics here. Not physical ergonomics, where you set up your workstation so as to emulate the kind of motions and postures your body evolved for, but rather mental ergonomics, where you set up your workflows so as to emulate the kinds of thought your body(/brain/mind) evolved for. Let that almost-magically-competent pattern-recognizer in your head focus on the things you want it to. Exploit that almost-pathological inability to concentrate on one thing by letting yourself do more than one thing at once. And avoid the kinds of work environments that work against our bodies' and brains' needs: avoid context-switches, avoid waiting, avoid flashing lights, avoid sharp corners, avoid running with scissors.
Ultimately, I think it comes down to the fact that people have way, way more sensory bandwidth than they have memory bandwidth. It's hard to remember two things at once, let alone 4. But I can look at, and integrate information from, at least 7 different windows on my desktop at the same time. So if I put a window in the background for something I'll have to do later, or if I put a sticky on my desk for the doctor's appointment I have in 4 days, or if my coding environment allows me to see errors rather than have to remember to check for them, I'm a happier camper than I would be if I had to remember all that stuff. The less brainpower I have to devote to administrative tasks like checking walls for plumb and level, the more I can devote to actually Generating Shareholder Value and Improving All Our Lives.
Don't EVER force me to be smart. We'll all regret it.