we create software systems designed to fail. or at least to frustrate us
Do you ever start using a software application and find yourself having to learn how it works before simply using it for its purpose? And thinking that it is not the most intuitive in the world?
Did you ever go to the bank and see the person behind the desk struggling with “the system”?
Most of the times I find it amusing – but it sometimes gets frustrating to watch. Taking her forever to handle your request because their system doesn’t work properly or it requires unnecessary steps or checks before getting to the desired information about a specific account. Things get even worse if she needs to use more applications in the same time and map information from one to another – which is definitely the case for a lot of banks – still.
I remember feeling the same temptation to face-palm and lose my temper whenever I had to buy a train ticket from the booth – back in the days… The queue was 20-30 people long because the ‘system’ used by the nice person behind the desk did not follow any of the rules used before all the ‘systems’ were introduced. And the person had a hard time trying to follow the ‘system’s steps and logic.
Not the mention how fun it is to try to get my bank statement as a pdf from my online account. It’s a blast! I have to select the same information several times and then guess what to click – all the options seem equally good and equally likely to get me where I want.
Then I have to select the time frame and the account I want the statement for – also for a couple of times in the process and then make sure that, in the end, I download the right statement. Living the dream!
Don’t get me wrong, I love technology! I spent all my adult life delivering software products for companies, personally or part of the team responsible to do it. But I am still puzzled whenever I see some of the applications that we (as an industry) produce.
When it comes to software applications, I would consider dividing them in two main categories, depending on their target user.
- External applications. These serve the general user, the “outsider” – that is the random individual, assumed to have few software utilization skills. Such external apps are those related to ecommerce, ticketing booking, online banking, phone applications, etc.
- Internal applications. These are for trained users – such as bank personnel, or those working in a traveling agency, health organizations, hospitals, insurance, etc.
The external applications need to be tested a bit more rigorously. We need to consider usability requirements, performance, etc and make sure it’s the best – because the external user can always replace our application with a better one from the market. Competition is a strong factor here and, therefore, we tend to focus a bit more on the product quality.
Actually, even when we look at these external apps, the choice the user has is more or less real. Let me give you the example of the online banking application I use. It’s not perfect. I know other banks have better apps. And I can, obviously, opt for a different bank – but the mere process of creating new accounts, sharing them with the energy provider, the payroll company etc, seems like such a drag, that I’d rather go on using this bank’s services – even if the app is less than what other banks can offer.
But if we consider the ecommerce applications, the users can easily shop somewhere else instead of dealing with frustration on a specific application. So here the focus must be on quality. The developers can’t afford visible defects. They can’t afford counterintuitive paths or slow response times. Simply put, they can’t afford flaws in usability.
We don’t actually know our users, so it is difficult to gather information about their process and their preferences. Yet, from a quality perspective, these external apps have gone close enough to nailing it.
For the second category, we consider the users can have a training period to learn how to use the application and, secretly, we count on the fact that they don’t have much of a choice when it comes to using it or not.
The reality is that, in terms of quality, we see plenty of functional defects. The applications for internal users are slow in performance and definitely less intuitive. And in this case, we actually know the users – they are just a few, they share most of the processes. And it’s way easier to gather the information needed to develop the most useful software for them. If we create the optimal software for them, we increase their productivity, we decrease their workload – all in all, we increase the company’s revenue.
Personally, I think that even in the case of the most useful software apps, we still fail to create the best possible version.
I guess we, software development teams and professionals in these industries, we want to invent new ways of creating applications, or designing applications. Because “new is always better”. So the apps are new and trendy – but not always usable.
Also, we rarely consider the fact that our human mind is processing things in a specific way. When it comes using a software application, the user’s intuition is determined by the flows he uses more frequently, either in a different application or manually. Basically, the way the user thinks and expects information is most often different than the way the developer’s intuition works when they design the application.
I have been working on various stages of the software products life cycle – from ecommerce apps to large middleware serving dozens of other applications – for over a decade and a half. And I consider we could improve this a lot.
We could invest more in studying and not just guessing the human behavior and expectations. We should not rely on our personal preferences or on the feedback similar applications. We need to be looking deeper into the human processes – and how do they roll in real-life scenarios.
We want to innovate.
But as long as we keep to the same habits and applications, it is difficult to find new and better ways. We need to try new stuff. In our attempt to improve and discover new things, we will most certainly fail at times. But with a better feedback loop, failure can be our teacher and not our source of frustration. It can lead to progress.