Doh I Am An Idiot

We have all been there. You are trying to use a piece of software and it just doesn’t make sense. You try and try and it is just confusing. Then something seems to work, kind of, usually unexpectedly. It doesn’t actually work but it gives you an idea about how the software works. Or perhaps better explained, about how the software programmer was thinking when they wrote the software. This insight allows you to understand the ideas the software programmer was trying to express. And this is the point when you are likely to utter the immortal phase “Doh! I am an idiot”.

In our team we get a lot of opportunities to savour this experience. There is a lot of software, it all interacts in unexpected ways and we are a mixed team with a variety of skills and backgrounds. This is exactly the experience I had last week and a colleague then repeated that experience and the phrase a few hours later (it was Github if you want to start pointing fingers).

Now I am going to go out on a limb here and say that my colleague is as far from an idiot as I can imagine. Infact having met all my colleagues and quite a few of our customers I would say that none of them have been close to being idiots. So what is going on here? These “features” look to me like the software equivalent of a “Norman Door”. If you are not familiar with a “Norman Door” it is not a door designed by the conquerors of England in 1066 but a door that you can’t tell if you should push or pull. It has the design elements of both or maybe looks like a plain wall, so you don’t know if or how to open it. At the root of this evil is usually an architect whose mind is on some larger concept but it is quite clearly ridiculous that an everyday object should be deliberately rendered confusing.

For “Norman Software Features” the reasons for their existence are likely more obscure. Unlike a door which you have used before and have expectations for, software features are usually experimental or prototypes. Often the software developer isn’t actually sure what they are trying to express and is trying to work it out by creating the software feature. In other instances the demands of time and money mean that the software developer is faced with the unenviable decision of balancing their own continued efforts (late on a Friday night) against the subsequent confusion of the user (next Monday morning). There is no right answer to this conundrum, it is just a tension that the software developer is forced to navigate, sometimes with grace, sometimes less so.

The bottom line is that whilst “Norman Doors” shouldn’t be a thing, “Normal Software Features” will continue to be created. However, what I will no longer be saying is that “I am an idiot” and to be frank I don’t want to hear my colleagues saying it about themselves or each other either. That is not what is going on and isn’t an accurate description of the situation.

Written on April 6, 2022