Everything we produce/create, whether it is defining the product, developing code, testing output, is all in pursuit of an end user – that person who will be relying on the output, to do their job in a way that reduces friction, increases productivity, and gets out of the way. We often lose sight of this user, particularly when deadlines loom.

The “user” is contextual. For an HTML developer, it might be the end user of the product, for a developer, the user could be another developer who will be using the code. Either way, there is always someone that will be using the output in a way that helps them. To be really successful one has to put ones self into the mindset of the end user. This is called “empathy”. Often it is associated with the emotional appreciation of another, but in the context of engineering, we can think of it as needing to put ourselves in the shoes of another.
If you can “pretend” to be your end-user, then how does your solution stack up? Does it do the bare minimum, or is there that little extra touch that makes it so much more valuable?
Small things can make a huge difference. If you are developing a web experience, does the page communicate everything it needs, but in a way that makes it accessible? When your user is looking at the page, why are they doing that? What information or actions needs to be accessible with the minimum clicks? If you are developing a library, is the naming logical, and does it do error checking in a way that communicates back to the caller what was wrong, instead of simply throwing an error?
We often lose sight of this user, particularly when deadlines loom
We all create bonds with the tools and services we use. We either hate, love or are indifferent to them. For the products you love, think through why you love it? What makes it work for you in a way that you feel empowered? Is it a particular short-cut, or a way it renders, or the way it reduces your workload to get the same results? For the products you dislike (even hate) why? Is it too awkward to use? Too many clicks? Keeps making you go through lots of steps? Doesn’t communicate when it doesn’t work?
As you think of that feeling for the products you use – what feeling do you think your output creates on others? Do you think users look forward to your output? Or is it the opposite emotion? When was the last time, a user said “oh that is cool” for something you produced? Usually such an outpouring of emotion is because of a little touch that improves an experience and lets them know you truly understood their needs.

Having empathy for the user, understanding what their goals/objectives are, lets you deliver what they need, not merely what they want. It is one of the most important skills an engineer can have and mastering it, puts you into a new premier league of output.
We all need to put ourselves into the mindsets of our end users, whoever that end user is for you. Delivering software isn’t just about committing and publishing code. It is about creating an experience, an emotion. A connection with your work in a way that users come to respect and look forward to your output.
As a group, we need to increase our empathetic relationship, work that into our development process at every single stage of development and keep asking ourselves the question:
“Is this helping or hindering our end user?”





