Home Home

Coffee maker

Arseni Mourzenko
Founder and lead developer, specializing in developer productivity and code quality
130
articles
February 12, 2014

Take a coffee maker. What is its purpose? Its only purpose is to make coffee. It’s the only thing it does and knows. It has only one button, and everybody know how to use it. Now take the Boeing 787. How many buttons are there? How many people can land it safely at the airport with no preliminary training?

All other things being equal or held constant, more the device rely on the environment and more it does, less is its ease of use. And still, people believe that software products must magically stop following this rule which applies quite well to any real world object.

WordPress is a perfect example. When Michel Valdrighi created the WordPress predecessor, he wasn't imagining a system which will do everything you can dream of, including powering e-commerce websites. But this blog/CMS platform became popular over time, and users requested more and more features, making it more and more difficult to find the right tool in a huge set of tools for every need.

Recently, I was requested by a marketing company to help their customer with her WordPress-based website. That was the first clue which showed that something is very wrong: in order to just get the things done, the customer with no technical background needs an assistance of a developer.

After studying the case, it appeared that the situation was much worse. Here are some issues:

  • The layout of a few pages appeared too wrong, and the only way to solve this was to change the CSS. By hand.

  • On a few other pages, WordPress was breaking the layout when submitting a page without changing it. In fact, since WordPress removes <p/> tags, content which must be surrounded by paragraph tags appeared wrongly without them. By the way, the only way to avoid this behavior seems to be changing PHP code in administration files and adding fancy tags to the page when editing it. Easy for a person with no technical background, isn't it?

  • In order to modify the home page, I was forced to change the corresponding PHP source code. Nice.

  • Lots of stuff required more than basic knowledge of WordPress. I try to imagine the number of hours I would have spent if I were never using WordPress before and if I had no technical background whatsoever.

Just with this simple illustration, it appears that the most popular blog/CMS product fails to be easy to use or intuitive. But it's not surprising. When the requirements grow, the product become more and more complicate to both design by the developers and handle by the users. The more features there are, the more experienced the end user has to be.

In essence, the end user has to choose:

  • Either he has an easy to use tool which does only few things,

  • Or he operates a few billion lines of code software product he must learn to use.

The “powerful but easy” is not an option here.

What does it mean for the software development market?

  • Primo, it means that we must stop promising powerful but easy products. What happened for years with WYSIWYG? Companies creating WYSIWYG products promised that “this time”, they finally achieved a piece of software which creates high quality code but let the user change the content visually. And the year after that, they said that now, this time, they did it. The story repeated at every release of every new version of WYSIWYG, confirming every time that all the marketing stuff we heard before was misleading. In 2014, I still don't know any WYSIWYG editor which can create high quality code in every situation.

    In the same way, there is no need to attempt to make a magically intuitive CMS products which can do everything you need. We, as developers, give to our users the impression that we are able to give them products which will make our work for us. Hopefully, we constantly fail while trying to do something close to the concept. Otherwise, it would mean that we are just a bunch of robots which are paid $100 per hour to do the same work a machine can do for a few cents a month.

  • Secundo, by constantly telling everyone that it's possible for a user with no technical skills to create nice websites with outstanding quality, performance, etc., just by using software as WordPress, we are supporting all those incompetent programmers who will repeat our words to a customer victim by telling that for $150, the victim can have a professional e-commerce website she could modify at any moment. Crap. A professional e-commerce website that you can manage will cost thousands of dollars, and in some cases hundreds of thousands of dollars. For $150, the victim will get a WordPress core with a bunch of badly written plugins downloaded from internet, and when the victim would try to make a slight change in the content of her new website, either she will be unable to find how to change it, or the change will break everything all around.

Since this model is essentially broken, what is the alternative?

For the basic needs, the customer must invest a little of her time in order to learn how things work: learn how to install WordPress, how to add footer and header, how to add images, etc. Paying $100 is not an option: the person gets the product, but not the required experience.

For the specific needs or niche products, the only choice appears to be handmade, expensive solutions, in-house IT department project, or something similar involving technical people at any stage of the process.