We rolled out our new messaging platform back at SugarCon this year, with the “Every Customer, Every User, Every Time” message ringing loud and clear as a call to the CRM world. It’s pretty clear message, especially with end-users who have had to fight against the fails of technology for years and years. But how does this same question resonate in developer circles? Are they too far abstracted away from the user for the message to add value?
I had the privilege of being at the php|tek 2013 conference in Chicago two weeks ago, which is one of the prominent gatherings of the PHP community that we’ve sponsored for the last three years, and heard a great keynote from Andrew Nacin. As lead developer of the WordPress web publishing platform which is being used by millons of people worldwide, he’s observed front and center the challenges of building a self-hosted tool that needs to be as easy as possible to get up and running. There were some great themes that came up…
It speaks loud and clear to the developer world; making users fight against your application, especially in the first experiences the user has with it, is detrimental to adoption. Making the user need to go thru multiple confusing steps to get it up and running, having to install all sort of dependencies, or even needing to do non-trivial maintenance on the application, is way out of their realm; they don’t want to have to learn the internals of an application to be a successful user of it.
For example, telling every user that you need to be using the latest build of Chrome is a requirement, but that doesn’t help the user that is locked by corporate policy into using IE. Or saying that you need to install some specific library in order to install your application, which locks out the person trying to get it up and going on a shared host that doesn’t allow that. Dictating terms like that draws a clear line in the sand, which immediately ostracizes folks who don’t care about these details and just want “something that works”.
Where’s the lesson here? While trying to use the latest whiz-bang-hip thing is great, in the end if it’s not making a tangible different to your user then it doesn’t matter. Users want abstracted from technology, not having to be experts in it. Write every line of code with this thought in mind “Am I helping my user be productive and get the task done, every time?”.