article (Tue Nov 26 2013)

Why User Experience Designers Should Learn How To Code

  • #uxdesign
  • #programming

This is a very controversial statement. I know that a lot many people completely disagree with what I just said and would gladly want to slash my head for saying this just like the way they do in the fruit ninja app.

Then why am I making such claims? Well, lets think about it. Lets say that you are a user experience designer for the web, and by the web, I mean the web browser and the mobile browser(I focus on these two domains because I feel that they are the most omnipresent and that the basics of these can be learnt with the least amount of effort). Most of the time, your role would require you to analyze an interface, do a few cognitive walkthroughs, heuristic evaluations and then provide some recommendations for improvements. (Notice, I say 'improvements' instead of 'change'. 'change' is meaningless, 'improvements' are meaningful).

Now, if you are fortunate enough to be born with a golden spoon in your mouth, you will land up with a team of people who are extremely skilled and can hack their way into any system to create the kind of experience that you suggest in your recommendations. And not just that, the management agrees, the developers implement the system, analytics prove that your customers are more engaged, the company revenue increases, the CEO pats you on your back and gives you a raise and a promotion and the world is full of fairies and godesses all over again.

BUT. But oh But. There is always a but, whether you like it or not. (Whether its yours or not.)

Reality does not have fairy tales. Several people that I have met who claim to be studying about user experience begin to become delusional. And that too to an extent that they feel that the everything in an interface is wrong, and start calling a perfectly functioning, well integrated system horrible names. Now, having immersed myself in the psychology of user experience design and HCI for quite a while, I see where they are coming from. In most cases, they are certainly not wrong. But then, the question arises, if they are not wrong, then why do developers shrug their recommendations and just go back doing their routine work, only selecting a few suggestions of the many suggestions that they provided that would make the product completely 'stellar'?

Are developers your enemies? Or do they just don't want to provide beautiful and meaningful user experiences to their customers? Do they don't care about what you say? Or maybe, they just don't like you?

Here you are with all your brilliant world changing ideas, but nobody seems to be willing to implement what you are asking them to do so earnestly. You did all your research, you asked all your users what they liked, you made and awesome presentation. You even uploaded a few cool looking pictures on Instagram boasting about your messy whiteboard that is now filled with sticky notes and crazy looking mind maps. You loved what you did, you came to the right conclusions based upon your data. Everyone on the team is convinced that the usability issues that you identified are spot on.

However unfortunate it may sound, if you are working on a product that has already been developed, there is a very less chances that someone is going to do a complete overhaul of an interface based upon your suggestions (Situations may vary). As a user experience designer, you might innocently ask - why is it so hard to do. Its just some html right? Its just some buttons and some clicks. You can change that, cant you? (I remember an instance where a UX designer actually said that and expected things to be that simple. No kidding.)

And then the unforseen happens. The developers start talking about how difficult it is going to be able to do what you are suggesting. Why certain taskflows just cant be implemented because the 'application does not allow it'.

Eventually, the only suggestions that make the cut are those that are related to minor changes such as font size, color, or if you are lucky enough, moving one block of elements on the UI from one place to another, but that's almost as far as you get each time you present the findings of your research and your recommendations.

That's a very small conversion rate. And it is sad. For all the effort and time that you put in, you most certainly deserve to have more influence on the user experience of the system and help it become better. I personally feel as if everything I did was an uproductive effort if the developers just chose 2 of the 10 recommendations that I made after giving lengthy explanations about why the other can't be done in the current build/version of the system.

So, what do you do? How do you make them 'hear' you?

The solution to this (unlike every other problem in life) is pretty simple.

There is an old adage - When in France, speak French.

In our context, if you want your development team to be able to implement the features that you are suggesting, you have to understand the limitations within which they can implement the system. For example, if your team maintains a drupal website, and it has been this way since many years of programming, custom modules, menu structures, etc etc, if all you know is that the system is implemented in drupal you are never going to be able to have as much of an impact than if you had put in an hour or two of effort into understanding what the developers actually have to deal with (which after years of maintenance, has been hacked so deeply that changing one small piece of the system has ripple effects on many other components and can effect other functionality). Just once, if you try to understand their limitations, their capabilities within the application to make changes without breaking existing functionality, or making changes that can have negative effects in the long term, you can avoid a lot of pain for yourself.

Developers are awesome people. They love to talk about what they create and they also love to lament about all the bad things about the 'system'. Those are probably the bad things that they have no control over, and those are the bad things that are probably causing your usability issues. Therefore learn from your fellow developers, learn how they code, why they have to code in a certain way. Do some experiments of your own, hack something together using some of the more famous frameworks out there now a days (bootstrap/foundation).

Enterprise level web applications are not just simple web pages made of HTML/CSS and JavaScript. Large self sustaining systems with thousands and millions of users are just not so simple. Changes are expensive. Very expensive. because with each change comes the cost of the hack, the cost of the maintenance, the cost of a deadline being met and the cost of the time required to make the change to impact the deadline of other features.

So, as a user experience designer, you should learn how to code, not because the dev's are doing it, not because you need to make prototypes, not because you read this article (but let me know if you did! ), but because for you to be able to provide meaningful recommendations, you first need to empathize with the first 'users' of your recommendations - the developers. You need to understand them, empower them. Because they are the creators who can bring your vision of the product's experience to life. Help them understand about user experience while you gain an understanding of programming from them.

Combine your efforts to create a masterpiece.

Because true strength, my friend, has, is and will always lie - in unity.