Getting out of our own way

Jeff at the Coding Horror blog has created quite a bit of reaction from his post on Valentine’s Day. His point was that all the test coverage in the world won’t help a product that end users avoid using. Jeff articulates his point well, as usual. He basically says that while Unit Testing is a good thing, programmers should be better versed in the science of interaction design than they are.

The reaction I found somewhat predictable, yet still surprising in its defensiveness: You can’t make an exclusive statement about one kind of testing over another. They are not separate issues. Both kinds of testing are important. Unit testing is being singled out. User interaction is not part of a programmer’s job. And so on… and so on. The more passionate the defense of the status quo was, the more Jeff’s point was embellished.

The Interior of BedlamI back up Alan Cooper’s assertion that the Inmates are Running The Asylum. Those who code, tend to have the control and final decision-making authority in any software development shop.

Here’s an example. When it is acceptable for choices to be pushed to the end user through myriad dialog boxes instead of the application using what it already knows to act, then the inmates have pulled another fast one on us. Often this kind of apparent programmer laziness is necessitated by impossible schedules, lack of skilled available resource, or indecision from the management team. But sometimes it truly is easier to just ask the user again instead of figuring out a way to draw information back out of the persistence model someone else designed.

It is most amusing to hear marketing people try to sell these applications to end users. “Well, it has to prompt you for that information again because there are different ways that the program stores data.” Huh? The sales guy is trying to tell the customer that they actually do need to do that extra work because the program can’t overcome its own design.

My feeling is that the laziest programmers are often the best, because they always find ways for the computer to do the work for them. But then there are the programmers who can’t get out of their own way, and end up making things harder for their customers and themselves.