Complexity Is Laziness

I just found an article called Engineer Thinking on Matt Gemmel’s blog. If you are at all involved in the development of GUI software, you should definitely read the whole thing. Here’s a choice quote, though:

If you’ve exposed underlying complexity or unnecessary choice in your software because you see those things as inevitable, it’s because your job isn’t finished. If you’re going to write GUI software for other people to use, do it properly, and treat those people like human beings instead of software engineers. If you want to expose complexity to the user and wash your hands of it, write command-line tools – or utilities that are used exclusively by other machine processes.

You can’t have it both ways. Writing GUI software is for people who strive for excellence not only in the “software” part but in the “GUI” part too.

Yeah, we have all been there before: We have some really nice code on our hands, so let’s just whip up a quick GUI and get it out there. However, your users will recognize these UIs for what they actually are: Laziness and, ultimately, an expression of utter contempt for your users’ time.

Every minute you put into polishing the usability of your UI will be rewarded manifold — every time a user accomplishes his task faster and with less hickups. And please don’t stop there: Streamline the entire experience, from the installation procedure down to those error dialogs you think they’ll never see1.

True, it’s a lot of hard work, and it can really get on your nerves. But if you truly want to deliver great software, there’s really no way around it. And one thing is for sure: Your users will notice.


  1. Here’s a hint: You are most certainly wrong…