You’ve probably heard a variation on this statement from a software developer, made in jest, but containing a nugget of sincerity:
It was hard to create, it should be hard to use (or maintain).
Basically, we worked hard to get this stuff done and we expect you as a user or future maintainer to put the same effort into it. After all, it took many man-years to write the software, it’s not too much to expect you to spend a few weeks reading manuals and understanding it before you start complaining that it’s hard to use.
As Paul Young recently wrote, though, imagine if wood-chippers took that approach.
Imagine if an author did? “It took me years to write this novel, you should have to do some research before you read it.”
Some do, I guess. I’ve read a few novels that require major work to get through. Sometimes the end result is even worth the work. But as my fiction writing friends tell me, in general you don’t want your readers to be thinking about your writing, you want them thinking about your story. Similarly, you don’t want your users thinking about your software design, you just want them thinking about the task your software enables.
I feel the same way about maintaining and testing software. We want developers thinking about the code, not about the way you wrote it. You don’t want someone looking at your code, peering at it for a few minutes, and then saying, “Oh, I get it. Wow, that’s clever.”
There’s a famous quote attributed to a half-dozen different writers (and perhaps originated by Blaise Pascal), that says, basically, “I am sorry I wrote such a lengthy letter; I did not have time to write a short one.” It takes time to create simple, elegant software. When we force the issue and compress the time spent on a project, you end up with complex code and complex user interactions. We should consider this a problem, not a point of pride.
When we present some difficult software to our users, we should apologize to them. “I’m sorry this UI is so complex. I didn’t have time to make it easier.” Instead, we make them feel guilty. “Ah, perhaps you should have taken the training,” or read the manual more carefully, or attended our seminar.
Think about the people on your team, and ask yourself if they “get” this concept. Realize, that if they don’t, you’re eventually going to lose your market share to a competitor who does.