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 youve exposed underlying complexity or unnecessary choice in your software because you see those things as inevitable, its because your job isnt finished. If youre 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…

Christian W. Günther

Christian W. Günther

Product development and everything else

Christian has that touch for creating software which looks good, is easy to use, and performs great. He has been a leading core developer for the scientific process mining tool ProM since 2005.