Usability has long been the redheaded stepchild of software design. It's a shame, but it's easy to see why. Faced with the growing complexity of OS platforms, languages, protocols, and standards, programmers tend to focus on issues like algorithm design, abstraction, and code reuse first, UI second. They design unit tests to verify each feature in isolation before they ever look at the big picture. Simply put, if most custom application UIs look like they were designed by teams of engineers, it's because they were.

But it doesn't have to be this way. If more development shops put their UIs in the hands of professionals, the result would be applications that are more consistent, more efficient, and easier to use -- all of which translates directly into increased productivity. Unfortunately, too many software development shops are still settling for the UI equivalent of the Flowbee haircut, putting programmers in charge of user experience -- and their software suffers for it.

Programmers have bad tasteMy colleague Randall C. Kennedy has a name for what happens when programmers are put in charge of application UI: Linuxification. Inconsistent widgets, arcane dialog boxes, and indecipherable error pop-ups are just a few of the symptoms, Kennedy says, and they're enough to make him long for the glory days of Office 97. Mind you, Kennedy makes no secret of his feelings toward Linux and open source in general, but this time he might actually have a valid point.

Consider this year's Eclipse Community Survey. According to Eclipse marketing guru Ian Skerett, 74 percent of Eclipse users were developing on Windows two years ago, while only 20 percent used Linux. This year, however, Linux gained 7 percentage points, all at the expense of Windows. That's amazing when you consider that the Eclipse IDE runs equally well on Windows as on Linux, it's available at no cost for either platform, and nearly every PC sold today ships with Windows preinstalled. If Eclipse users are ditching Windows for Linux, it suggests that not only are developers tolerant of the Linux user experience, but they actually prefer it to Windows.

Similarly, remember when Sun Microsystems proposed a new UI for OpenOffice.org that resembled the Scenic Ribbon UI from Microsoft Office 2007? The OpenOffice community recoiled in horror. But hold on: Current research by Devil Mountain Software suggests that Office 2007 is far and away the most popular version of the suite today. Can all those paying customers really be wrong? Or were vocal OpenOffice developers against the new UI simply because the kind of UI that appeals to programmers and the kind that appeals to mainstream users are two different things?

Leave this job to the professionalsIn other words, maybe programmers produce bad UIs because most programmers wouldn't know a successful mainstream interface if it bit them. Computer science graduates aren't trained in typography, iconography, spatial arrangement, or cognitive science. Their taste in UIs follows naturally from their training and their personalities. They like to tweak things and discover things. They don't want their hands held. They don't just want a light on the dashboard; they want to see under the hood. Unfortunately, any UI that has these characteristics is a potential disaster in the hands of a casual user.

That's why it's inexcusable that more software development projects don't hire UI designers and usability experts to do what they do best. The goal of custom software development is to automate business processes for increased efficiency, but no matter how well your software performs, each step in a process that requires input from a human is a potential bottleneck. Doesn't it make sense to optimize each of those interactions also, the same way that programmers optimize their code? That's where interface design comes in.

Unfortunately, even when organizations do employ UI experts, too often their input is downplayed or ignored. They're treated something like high school counselors: The developers all smile and nod, promise to consider the advice seriously, and go right back to doing what's expedient. It's up to development managers to break this cycle and give usability experts a first-class seat in the software design process.

Let programmers concentrate on computation -- it's what they do best. As for interface design, however, let's leave that job to the professionals. A good UI isn't just about making software "pretty"-- it's about building interfaces that increase productivity by streamlining the interaction between human and machine. No company would deploy a public Web site today without the full participation of a design team. Why shouldn't in-house software get the same treatment? Anything less isn't just a wasted opportunity; it's a waste of money.