Sunday 4 October 2015

Always Be Solving Problems



Aside from the purely technical explanation what exactly is software?
I believe the most productive way to answer this question is that software solves problems. This may seem like a fairly broad explanation, but even a game could be described as solving the problem of boredom.
I believe this way of thinking enables us to better place ourself in the shoes of the user. Unfortunately I think too often we lose sight of why it is we are producing all this software, we assume we need to produce more and more and we assume too much about how users react to all this.
Users Experience Software
Sometimes we can fall into a trap of viewing User Experience (UX) as a distinct element of software when actually it is more pervasive than that.
UX is not the cherry on the cake its the whole recipe.
UI, features and defects all go to make up the experience users have when they interact with software, the moment we concentrate too much on any one element we degrade this experience.
Nowhere is this more evident than when we let ourselves become entangled in a conveyer belt of new features. Its incredibly easy to spoil a slick UX by muddying the waters by layering more and more features together until there is no longer any clear purpose to what we have created.
We shouldn't see software as an arms race, if we concentrate on one problem and provide a great solution users will come and word will spread.
Its no surprise that some of the most popular and successful apps are very simple propositions, they don't need much explaining and they don't readily add new features if it might harm this central use case (as an example think how long Facebook spent deliberating on the best way to introduce a dislike button).  
Be Platform Agnostic
Its a very common occurrence to hear things like
"We need an app that...."
"We should add something to the website that..."
These things are very often uttered very early on in the development of a solution, but they expose a decision being made about user experience based not on the needs of the user but on the desire to be on trend.
The choice of platform, such as mobile app, website or maybe even not a technical solution at all, should be made based on the how the problem is best solved for the user.
We should instead frame these statements as,
"We want the user to be able to ..."
Sometimes this will naturally point towards a platform, sometimes it will be less obvious, but there is nothing more frustrating as a user than being forced to use an inappropriate platform to fulfil a need.
Cutting Edge Isn't For The Faint of Heart
Development of a solution should always start with the problem, if you pick the right problem this guarantees that you will develop something people want.
Many companies fall into the trap of picking a technology first because they want to be seen as cutting edge and then engaging in a desperate hunt for a problem for this technology to solve.
This inevitably leads to unsatisfying solutions that feel forced, users may initially show enthusiasm for hi-tech cool stuff but if your not solving a problem they care about this will be short lived.
A tell tale sign of this is when too much explanation is required for the user to understand the proposition simply to get to grips with the technology, the best solutions to problems are when we just get it and say "why hasn't someone done this before".
As geeks we see software and technology as an end in and of itself, we code just for the sheer enjoyment of it.
As productive engineers we should be looking to answer questions and solve problems, we should understand that people don't interact with code they experience our solutions.
They don't strive for anything more, if you can't keep them on the hook without cracking out the bells and whistles then your not solving the right problem. 

No comments:

Post a Comment