What does humility in software development mean?

Software programmers and developers come in a variety of different types, and it would be silly to try to generalise. But can we just say, people involved in making something nearly invariably have a different perspective on that thing as the person who uses it as a tool in their work.

The simpler the thing, the more the mindsets match. In the days when hammers and dinner plates were made by hand, it would be easy for the person making them to understand what it would be like to use them.

But the more complex the item, and the more mental capacity goes into making it, the more the mindsets are likely to diverge, and software is about as complex a tool as it gets.

From our experiences working with software, it is easy to see what humility isn’t. When you get a sense that the programmer thinks that their software is the only software I’m ever going to use, or I’m willing to make a great deal of effort to work out how to use it. Programmers don’t typically think that, but they don’t typically think the alternative either (this is one of about 200 pieces of software I’m going to use today and i’d rather not apply a single shred of intellectual resource to how I use it).

For an extreme example, consider how the early iterations of mobile Google Maps seemed to be tracking where we were constantly and downloading updated maps, whether we were looking at the map or not. (I am not completely sure about this, but it certainly seemed to drain my phone battery when it was running, even if I wasn’t looking at it, and keeping it running when in a foreign country with expensive roaming charges was very dangerous).

Also in this category I would put websites which demand that we use a new password when we reset it, or a password with a funny character. I understand the demands of cybersecurity but my brain and your brain is not capable of remembering many passwords.

Perhaps you have 4 or 5 passwords you regularly use, with increasing complexity, as demands for complex passwords have increased, but you still use some of the very simple passwords  you set up in the early days of online transactions (or just 2006) and no-one as asked you to change them yet (and they are not the passwords for your online bank). Anyway you don’t want to remember any more.

Programmers appear to be (although probably are not consciously) the sort of people who think it is OK to demand that their customers think, since they don’t mind thinking themselves.

So we could define humility in software programming as the opposite of this. I recognise that you, my customer, are using about 200 different software tools with about 4 different passwords and you don’t want to remember any more. I will minimise the demands my software makes of your intellectual resources, and since waiting can be mentally taxing, I will make sure my pages load up fast. I won’t bring you anything you don’t want or don’t expect. I won’t try to sell you anything. I’ll make a tool which enables you to achieve your objective as easily as possible. And if something isn’t right I’ll make your life as easy as possible.

I have been involved in building software which satisfies none of this criteria, so I know how hard and expensive it is. But other software companies have bigger budgets than my project did. Is this a useful way to move forward?




Leave a Reply