The blog ofJonathan Pepin

Ask yourself "WHY"


As software engineers, our relation with the tools we are building is completely different than the one the users we are building for have.
Because we know what's happening behind the scene, our experience using the tools and how we think it should be used is often different than what the actual users will feel, or we would feel ourselve if we hadn't built the tools.

This is the origin of one of the biggest challenge we face while trying to develop the best user interface possible; Knowing who is the user, in what situation he is using the software, and why. Not only you need empathy, but also a deep understanding, to be able to think like your users.

When you get to develop a new feature, one important question you should always ask, is WHY?
Why are we implementing this new feature?

Understand why you are asked to do something will multiple positive impacts on your job;

  1. Motivation and Passion.
    If you do things without knowing why you do them, you have no understanding or awareness of which problem you are fixing, how important it is, and how you are making someone's life easier. As I said, your relation to the software you're building is different than the user's, and often, what a user will request will feel dumb or useless. Understand why the user asked for it will make you realize how important it might be, and feel good about fixing that problem for him.
    This bring instant motivation and passion into your job, because you get to understand why you are doing something, giving a goal and making you aware that you are changing someone's life.

  2. Doing the right thing.
    If you know why you are doing something, it will be clear for you what problem you are fixing, and for whom. Being aware of that will allow you to know how the new feature will be used, and how to develop it. You'll end up building a better feature the first time, and will be less bothered by modification once you shipped it. Again, this will make you, and your users, happier.

Unfortunately, UX brings only negative things. When you use a perfect UX, it just feels normal; It's only when the UX sucks that your users will complain about it. And it brings a lot of pain for everyone; The user, the customer support people and the engineers.
So to avoid pain for everyone as much as possible, try to ask yourself WHY you are developping every feature; You'll simply develop better software at the first try, and sometimes just avoid developping useless feature and save time.