To many people, to understand code you have to be this guy:
- “Good at computers”
But if you take a step back and look at some of the most popular bits of code being used in the wild, they have one thing in common:
A great experience.
Whether you’re writing software libraries, platforms for developers, or writing code professionally, focusing on your code’s user experience matters.Why your open source library’s UX matters
Having a great experience for your users and making them feel empowered, more productive, and not stupid is huge. We typically associate UX with visual design or interaction design, but the ideas apply to code, too.
Take jQuery for example:
Prior to jQuery, web development and DOM scripting was a huge pain in the ass (it still is, but in different ways now).
By going with an API that many people were already familiar with (CSS selectors), jQuery was able to bring something previously only accessible to dudes who knew crazy black magic to web designers.
This pattern of “make it super easy to use and they will come” has happened with a few different libraries and frameworks:
- jQuery vs Prototype?
- Rails vs Java-land?
- Bootstrap, Backbone, etc.
Think of the well designed, easy to use libraries. Now think of the ones you don’t want to touch. What’s the difference?Why your service-for-technical-types’ UX matters
At another level, there have been companies founded with a goal of building a great experience for technical types.
This includes companies like Heroku, GitHub, and Parse.
You figured out how to deploy a Rails app in your sleep to s3 and deployed your cousin’s node.js app in 15 minutes with no prior knowledge? Ok, Neo. The rest of us would probably try using Heroku first.
Don’t even know wtf git is? It’s ok, the octocat is your friend and GitHub makes it easy to get started.
Know how to write mobile apps but don’t know how to make a server to power its backend? Maybe you do, but don’t want to waste valuable time doing it yourself and fall into Apache .httaccess rabbit holes for no good reason? Use Parse.
These companies turn things that previously required expert knowledge into something trivial. They’re not only making it easier for the people who already know how to do it, but they’re making these previously inaccessible things available to a broader audience.Why the code-you-write-every-day’s UX matters
At a smaller scale, the code you write every day and its experience matters. Did you write some awesomely complicated code that only Neo would understand? Great! Clean up the API, make it testable, expressive, and ask the intern if he “gets it”. If everyone on the team is scared to code review your code because you make them feel dumb, you’re doing it wrong.
Some of the best developers I’ve worked with sweat the details. They want their project manager to look over their shoulder at their screen, run to the business team, and say:
I’ve seen the codes. It’s easy.
They’ve solved the problem at hand, but that’s not enough. These are the things they’re thinking:
Consider your fellow non-Neos
Is the person code reviewing my commit going to understand this?
Do my tests even make sense and test the right things?
Is it "login" or "log in"?
If you can think of any other examples of how a great UX made something targeted towards developers super awesome, let me know! And if you’re writing code for others to use, or even code to publish online, please consider the experience of those using it. After all, we’re not human compilers.