Zed Shaw is about as close as computer programmers get to being stars without first becoming billionaires. People in my industry know who he is and respect what he does. Unfortunately, they also listen to what he has to say about things like software usability, and he’s so far off the mark it’s almost tragic.
The first thing you have to understand about Shaw is that he accomplished something that most people thought was impossible at the time — wrote a scalable web server in Ruby — and that this has made him justifiably famous among people who care about that sort of thing. The second thing you have to understand about Shaw is that he personally believes himself to be the greatest human being who has ever lived. And honestly, I can’t really blame him.
I’m not being ironic right now: he really does seem to be an incredibly intelligent and accomplished person. Speaking as another intelligent and accomplished person (not to the same degree), I’ve always secretly believed that all humility is false, that humility is actually the greatest possible conceit. It seems unreasonable to me to expect intelligent people to somehow not be aware of their own gift, or to at least feign obliviousness in polite company.
But even with that outlook, at first I thought that Shaw was a braggart. He titled his old blog “Zed’s so Fucking Awesome” (now offline). He wrote an essay about the Ruby community called “Rail is a Ghetto,” in which he posted a chat transcript where he was rude to a fellow developer, who then called him a dick (because he was kind of being a dick), as evidence of the immaturity of the community (post now offline, although mirrors can be found). He complains about the burden of his fame, while at the same time lamenting the fact that he’s not as famous as he deserves to be. He casually drops facts about how many martial arts he has studied:
These days I’m not as into working out and studying martial arts as I used to be, instead focusing on yoga, meditation, and simpler activities. When I was younger I was incredibly fit, and still am because of habits and practices I ingrained in myself from an early age.
First a quick list of martial arts I’ve studied for various periods of time: Ninjitsu, Aikido, Judo, Muay Thai, Wing Tsung, Capoeira, and Arnis in no particular order. I would say only Muay Thai is the one I studied most consistently, for probably about 6 years. The others I studied for about 1 or 2 years if I could.
The thing is, though (and it took me a while to realize this): Shaw isn’t bragging. He’s just stating the facts as he sees them, whenever he feels they are relevant to the opinion he’s trying to express. He has an incredibly high, mostly justified, opinion of himself, and he doesn’t see anything wrong with letting his audience know that. And if I’m being completely honest, the largest part of me cheers him on for having that courage.
But in his latest post, his own sense of self-worth seems to get in the way of his faculties for reason. Titled “Products For People Who Make Products For People,” it’s a passioned rebuttal of the idea that programmers shouldn’t do UI design. He reserves the lion’s share of his ire for a book I recently read by Alan Cooper called The Inmates are Running the Asylum. You can read my complete review here, but the basic thesis of the book is that user interaction design and software development are two discrete skills that should be performed by separate individuals, in that order. I’ve read a lot of criticism of this thesis, and Shaw’s is pretty representative:
… the assumption (either explicit or implied) that if you could code hard core stuff like web servers then you couldn’t make a decent product. There was even an implied offensive insult that technical competence meant you had autism. You didn’t know people and it’s only the Product People who deserve the rewards and credit for anything, not nerds.
In other words, Cooper dared to imply there was something that Zed Shaw wasn’t great at.
A lot of programmers reacted negatively to Inmates, taking it as a hit job blaming them for all the evils of bad interaction. I get that sentiment, but it misses the point. To return to Cooper’s thesis, it’s that 1) software production needs to begin with interaction design, done by professional designers, then move on to development, and 2) when this doesn’t happen, the “design” which takes place is done after the fact by engineers. In other words, Cooper is on the side of the nerds, and argues that they are being ill-served by the lack of resources dedicated to interaction design.
Shaw too takes offense at being made to take the blame, complaining that in many cases programmers are just following orders and have no real control. But he even admits, in the same section, that professional designers aren’t part of the process.
Alright, where’s your designer? In every mega-corp and government agency I’ve worked for there has never been a staff designer of any kind. If there was one he or she was barely capable and totally out of touch with modern design. How can a programmer possibly make a good visual design without any help from a professional designer?
Shaw seems to be saying, look, it’s not the engineers’ fault, we were just following orders. It’s the business’s fault because we didn’t have access to a professional designer or else they were incompetent. And that’s basically Cooper’s point. I have to wonder if Shaw even read the book. Or maybe he did, but he’s so entrenched in the business of writing software for other software developers that he cannot fathom what it’s like to be a normal human being that has to use difficult software. He doesn’t seem to understand the difference between writing a web server to be used by other engineers and writing a GUI for non-technical end users that want to accomplish a particular task. And again, that’s kind of Cooper’s point: if you’re too close to the problem of producing software, you’re literally incapable of placing yourself in the shoes of the poor schlub who will have to use it. You’ll write a brilliant but unusable mess that makes perfect sense to you and infuriates almost everyone else — but not engineers, who happen to think the way you do.
This is what Shaw thinks is meant by “usability”:
Here, take a look at Paypal and compare it to Heroku. Paypal looks like ass compared to Heroku, but back when Alan Cooper wrote his book, Paypal was the height of sexy product interfaces. Now it looks like junk compared to today’s graphic design, but today’s design is only possible because browsers got better and competitors to IE6 came out.
[When reporting an error] I also try to include the file:line location so people can hunt down exactly where the error is and possibly fix it.
So, “sexy” looking GUIs and error messaging that is only useful to software developers. To be fair, he’s talking about his experience writing a backend software product whose users are themselves software developers. And, once again, that’s Cooper’s entire point: that software developers make terrible judges of what normal people will find usable.
It seems like Shaw’s real motivation for writing this screed is that he feels slighted by “Product People,” that the software he makes doesn’t “count” to them:
… to them a web server isn’t “product”, it’s infrastructure. It’s not even a toilet, it’s the rusty pipe that feeds water to the toilet.
To a Product Person the things I make are laughable. They aren’t products because people don’t use them, only programmers. To make a good web server you just have to code. There’s no design, no usability, no human elements at all. The all superior Product(TM) has design, usability, and is used by humans. “Your web server is just used by geeks and it’s just code.”
The crux of the Product Person’s belief system is this idea that unless the product has a graphic component then it’s not a product and it has no elements of usability.
There’s a good reason software developers have long been divided into “plumbers” and “painters.” The analogy with a sewer system is apt: with backend software, like web servers or Java, the only time an end user cares it exists is when it breaks. As an author of backend software, maybe that reality makes you sad, but it’s the truth. As a plumber myself, I find users’ ignorance of my work incredibly liberating — but then, I don’t put as high a premium on recognition as Shaw seems to. I mean really: who cares whether interaction designers deem your backend code worthy of recognition? At the end of the day the business can’t run without it, no matter how intuitive and easy to use the frontend is. That’s why we make as much money as we do, despite the fact that most of us can’t design a usable product to save our lives. Cooper has real respect for the difficult task of software engineering, although you wouldn’t know it to listen to Shaw.
Maybe I’m way off base here and Shaw is actually an interaction design expert, in addition to his extensive musical ability and martial arts training. I wouldn’t be that surprised. But for the rest of us mere mortals in the trenches of software development, I think it’s downright insane to toss Inmates to the curb for the sake of pride.