You're stuck for five hours in Heathrow's Terminal 1 during (what is for you) the middle of the night. What do you do? For me, the answer last week was to put food in my sleeping gut and browse for books. The selection is never great. It's hard to find good books in airports, but last week I got lucky. I picked up 'Humble Pie', Chef Gordon Ramsay's autobiography.
Now, I wouldn't be surprised if many of you stop reading at this point. Opinions about Ramsay vary. On television, he is often shown in a volatile state, screaming at people in an effort to get them to do a better job in the kitchen. If you see him in passing, when you are flipping channels, it's easy to see what he does as abusive theater. If you pause your channel clicker, though, what you discover is that he is really a guy who is all about standards. He rose up the ranks of his profession by drawing an incredibly hard line and refusing to compromise on quality. He is hard on people, but for the most part, they understand that it is for a good purpose. He has something to teach, and they have something to learn, and his style is to make that learning visceral. If you're a software developer, I recommend watching his shows to see his quality focus. The American series 'Hell's Kitchen' is a good one, but the British version of the series 'Kitchen Nightmares' is better. It's about turning failing restaurants around, and if you've ever tried to turn around a failing software organization, it's very interesting to see how someone in an entirely different field handles that sort of task.
I don't think there are any perfect analogies across disciplines, but I'm often struck by the similarities between the software development world and the culinary world. First of all, both are (generally) team sports - you have to work as a tight team to deliver. Secondly, cleanliness matters. People in well-run kitchens definitely know that the way to do go fast is to keep clean. You wipe down your knife, you keep the layout of your station. Third, it's all about skill. One person who isn't up to snuff can bring down the level of the team. There are other similarities as well. In software development, we do have places which are like the hotdog stand at the airport ("hey, I just work here and I don't think of it as cooking"), places which are like a chain restaurant ("I see myself as a cook, but it's by the book"), and places which are like a high-end restaurant ("we have incredibly high standards and you are going to have a great experience, for a price"). If your experiences are similar to mine, you know of places in the first two categories, but what about the last? Where are the high-end restaurants of software development?
Okay, let's talk about something else. A few weeks ago at the Agile2009 conference, I went over to the UX (User Experience) Stage to say hi to Angela Martin. I saw she was speaking with someone so I waited. As she came over, I said "you know, I'm feeling uncomfortable." She said, "Why?" and I said, "Well, I feel really uncomfortable sitting here surrounded by all of these people who think that users are more important than developers." She gave me a mock-slap and we laughed, but there was a tiny little sliver of truth there for me in that joke I made. There is this discipline, UX, which is completely about what our software means to someone, and it kind of had to grow up outside of the development community.
I made my way into the industry as a developer, and feel that, naturally, I started with that "not so subtle" developer bias. Yes, it takes a diverse team to build software. You need customer interaction, testing, etc. But, in earlier days the challenge was getting anything working at all in a reasonable time frame, and that made programming the magic art, the thing most prone to failure, and as a result I think that the importance of development was over-emphasized. I think we're still dealing with that today in the industry. Yes, people are recognizing that UX work is important, but I don't think they realize quite how important yet.
So, where are the high-end restaurants of software development? One place to look is in the "boutique software shops." I don't know where I first heard that term, but for me it is a "catch all" for all of the small software development houses that I see springing up all over the place. I'm talking about companies like 8th Light, Obtiva, Hashrocket, and EdgeCase. The thing which ties all of these places together is an emphasis on hand-crafting software for clients, pushing excellence. Many of the people I know in these companies are refugees in a sense. They did "Big Corporate IT" and left to start something smaller, more personal and focused. As well, many of them are in the nascent Software Craftsmanship movement, they share a set of values, and they are running apprenticeship programs and trying to build a grassroots community of like-minded people.
Now, here's the thing. I don't know what these companies' rates are. I haven't a clue. But, I do know that they are trying to sell something that they feel passionate about, sort of like the way that Gordon Ramsay feels about food. But, here's the thing: in a high-end restaurant it is completely about the user experience. Everything is subordinate to that. I don't mean subordinate in the sense that if a customer wants a quick and dirty burger rather than what is on the menu he's going to get it, but rather that he's going to get something special which reflects someone's deep knowledge of the art of cooking, something which they can't get any place else. Now, here's the trick. That thing which constitutes that specialness in software probably isn't clean internal structure. It's more likely wonderful experience as a customer both in the engagement and in their experience of the application. To put it more boldly: it's not that development teams need UX people, it's more like UX teams need developers.
Puzzle that one out for a minute.
Let's go back to the kitchen. What do you need to be a world class Chef? You need an incredible work ethic, talent, and taste. It's hard to find all of that bundled in a single person, but typically the people who have it rise through the industry. Steve Freeman was telling me a story the other day about a master Chef who got so angry at his crew that threw them all out of the kitchen and did the entire service himself. He was a master because he could do it all. Today, however, we have a schism in the industry. It's widely noted that programmers are generally poor at UI design. It's a different discipline and for some reason the "neural wiring" doesn't overlap often. But, when you think about it, isn't that a bit like having great technical chefs with a tasting impediment? Do restaurants separate the roles of taste and execution? It's really in their interest not to if they are striving for excellence.
Years ago, I was so frustrated with the schism between product owners/customers and developers that I kept wondering why the roles had to be separate. It causes quite a bit of stress in organizations. It's hard for a developer to really appreciate the business end of things and vice versa. Later, I saw that some people were doing an "end run" around that problem. Small start-ups mixed the roles: you had only one type of person: a person who could code and do business. I wonder if the same thing is possible for UX and development? I'm not sure how it would work, but I do think that there is fertile ground in that direction. And, I do feel that (if it isn't happening already) UX will become the competitive differentiator for the boutiques. It seems that it will have to be that way.
I want to close out with just one more mapping from restaurants to software development shops, one inspired by Ramsay's book. Historically, it has been very tough for chefs to extend their reach in the restaurant business. If you are someone with the magic three: work ethic, talent, and taste, and you also have a flair for business, you can still only be in once place at a time. Moreover, it is tough to maintain standards. Gerry Weinberg used to refer to this as the 'Law of the Raspberry Jam' - "the further you spread it, the thinner it gets." Ramsay seems to be extending his empire by ruthlessly nurturing talent within and spinning people off to head their own restaurants with equity shares. Each of the restaurants has its own name and style, and (as far as I know) they don't have Gordon's picture on the door; the whole thing is held together with a holding company. This isn't a new idea in business, but it is something I haven't seen in the boutique space yet.
So, those are my thoughts about the boutiques. I feel odd mentioning the names of companies because really I know very little about their business models. I have a development background, so I really only to talk to the people I know in them about "developer things." The thoughts here are half-formed and I could be completely off-base, but I decided to post to get the ideas out there on the odd chance that they could be helpful.
Oh, and if you watch Gordon Ramsay and he inspires you at all, don't try to recreate his kitchen in your development shop. :-) Every analogy has to break down someplace.
Michael, this is bang on in my experience at Obtiva. I will follow up with a blog post response soon.
Posted by: Dave Hoover | September 10, 2009 at 06:31 PM
It's interesting to see you draw parallels with Gordon Ramsay. I've had similar thoughts when watching "Kitchen Nightmares".
I always thought "I'd love to be able to affect change that efficiently without getting spat straight out of a place". I then realised that he would probably get away with so much because each of those restaurants were in a desperate situation and willing to try anything.
I think it can resemble a situation where a company is going down the path of Agile adoption; if they aren't trying to solve some major problems or aren't desperate, they're less likely to be willing to take on major changes.
Brent.
Posted by: Brent Snook | September 10, 2009 at 06:36 PM
In our company we try to avoid having roles and we have developers including me doing everything it takes to deliver software but UX/UI always seems like you need different kind of specialization.
Posted by: Nilanjan Raychaudhuri | September 10, 2009 at 07:38 PM
I've thought about this comparison for years, too. I blogged a few years ago about a personal friend of mine and Master Chef, Rino Baglio.
http://blog.objectmentor.com/articles/2007/05/27/what-ive-learned-from-master-chef-rino-baglio
Posted by: Dean Wampler | September 10, 2009 at 08:32 PM
I have a theory that a talent for UX is quite rare (as is the talent for software design). Programmers aren't especially bad at UX. Most people are bad at UX - including most graphic designers.
Our industry hasn't yet figured out that UX design is important and until it does, software will continue to suck.
Posted by: Kevin Lawrence | September 10, 2009 at 08:55 PM
@Kevin Lawrence
Even if talent for UX seems to be rare, I don't see it as a reason to abandon hope to find (or help develop) programmers with skills in the area.
I liked Michael's analogy with "having great technical chefs with a tasting impediment". The recognition that one cannot be a great chef if he/she can't produce food that tastes great carry over to the software field: one cannot be a great programmer if he/she can produce software that's usable and appealing.
Posted by: Rafael de F. Ferreira | September 10, 2009 at 10:00 PM
excellent article
I wrote this article on Web 2.0 is like cooking before I saw yours
http://www.petewildermuth.com/2009/08/checkpoint-web-2-0-is-like-cooking/
thanks for a similar slant with software
Posted by: pete wildermuth | September 10, 2009 at 11:11 PM
Excellent Article: definitely where the industry is headed. Love the leaning toward UX and can confirm that from my experience hiring at Eden.
Posted by: twitter.com/chrismdp | September 11, 2009 at 12:44 AM
I liked your blogpost and I totally agree that if you set out to be one of the top software vendors (or restaurants) you need to be professional in all roles. That is why Ramsay is so upset too since people can't live up to the product they are selling you.
Posted by: Thomas Hellstrøm | September 11, 2009 at 06:00 AM
I think the lack of UX has a lot to do with the primary focus of businesses and developers.
To keep the restaurant analogy: the customer/business wants the food/product, the chef/developer wants to cook/build it well.
Both have forgotten entirely about front of house/UX. Anyone watching Ramsey will know that he focuses as much on this as he does the cooking.
Posted by: Peter Gillard-Moss | September 11, 2009 at 06:08 AM
Great piece. This is exactly what I feel. I've been through the big corporate IT treadmill. In my younger days I was slapped down by senior management for throwing things round the office when people were screwing up because they just didn't care (I'm Scottish, like Ramsay). I grew out of that to the point that I was considered an asset for my ability to keep my cool in front of provocatively stupid customers. But a bit of you dies if have to keep hiding the fact that you care, that you don't like producing 3rd rate crap at the lowest cost.
Since I left the corporate life my enthusiasm for IT has been reborn. I've really been enthused by UX. That perspective is exactly what was missing from the techno-driven, "be grateful for whatever we give you" paradigm I'd grown up with. I've also been excited by the opportunities Agile has given for UX to be drawn into the heart of the development community, provided the UX people really want to shed their independence and get real influence at last.
It was an interesting point about most developers lacking the right "neural wiring" for UX. That's probably historically true, but perhaps more important is that UX never really featured in the education, training or experience of developers. If they thought about it at all (unlikely) they saw it as peripheral, out there somewhere, a subjective and imprecise discipline that had no real affinity with the clear, logical, realities of software development.
Developers aren't born knowing about all the essential disciplines surrounding the actual coding. They have to be taught the value of configuration management, release management, security & carefully designed databases.
If they are exposed to UX right from the start of their careers and if they are constantly shown how important it is to the development of high quality applications then they will get it. Maybe not many of them will be talented interaction designers, but at least they'll avoid the crasser mistakes we all used to make. They will recognise the need to work with the UX professionals, and they will see the value in what UX can contribute to the work of the team.
Posted by: James Christie | September 11, 2009 at 07:13 AM
Ditto all the previous comments. Four or five years ago, I began to wake up to what UX was really about and pushed for it within my small sphere of influence, but it has taken the topic a long time to gain momentum at my employer, mirroring the same slow pace of recognition that has gone on in the larger world of software development.
I think Michael especially nails it when he talks about boutique software shops and UX because, ironically, when I joined my employer nine years ago, they were more of a boutique then they are now. Today, I find myself partnering with a like-minded colleague and an outside UX shop as we try to demonstrate the value of a "boutique" team within that larger firm.
Posted by: Marjorie Pries | September 11, 2009 at 08:26 AM
I know the "mise en plus" principle (everything in its place before you start) that I learned in cooking class has been vital to me in cooking and useful in coding.
Posted by: Fred Ballard | September 11, 2009 at 09:49 AM
Really good post!
I'm daily frustrated over the fact that most software is hard and painful to use. Most of the time it is the user experience/interaction that is seriously lacking.
If I wasn't involved in software development, I would probably think that the problem was me, that I was too stupid to interact with these arcane systems. At least I wouldn't know that software could be any different. Having an idea about how software works and how it is constructed increases your ability to criticize it, and allows you to think about how it should have been done or how it could be improved.
My point being; It appears likely that an interest for user experience/interaction should come naturally to software developers. The people who constantly pour their frustration over crappy software. Or maybe it is just me...
Posted by: Kalle Svartholm | September 11, 2009 at 11:07 AM
Lets be honest, when fundamental development thinking is less "this is functional and *they* will learn how" and more oriented in asking "is this intuitive, desirable, and meeting our *users* goals? Let us test repeatedly to make sure." is when the Gordon Ramsay's may surface.
I believe it's possible but too few and far between in my experience. I look forward to the reality of this in my career and lifetime. Until then may more posts like this catch fire and cook some goodness ...
Posted by: Vincent | September 11, 2009 at 11:55 AM
A very interesting post, Michael, but there's one point you make that's not quite right, namely the a bit about chefs with a tasting impediment. Grant Achatz, the chef at Alinea, one of the USA's best restaurants, had tongue cancer, and cannot taste. Check out http://www.newyorker.com/reporting/2008/05/12/080512fa_fact_max for an idea of how he separates taste and execution.
Posted by: twitter.com/josephpelrine | September 12, 2009 at 05:45 AM
There's a very successful restaurant group in New York. When the head of the group, himself a chef, was interviewed, he said the key to his success was that he put his employees first. By doing that, customer satisfaction and delight, and his restaurants' success, followed naturally.
(I'll try to find the reference, but the interview was years ago, and I'm not holding out a lot of hope of finding it. I don't live in NYC and I've never been to any of the restaurants, so I basically have nothing to search for.)
Posted by: Fred Ballard | September 13, 2009 at 09:03 AM
I have found that in the last few years, that the "programmers can't do UI" meme has made a really self-fulfilling prophesy. Sure, there are lots of developers with a really bad sense of usability, but I went through a CS program with a heavy concentration on HCI. In industry, I have found many places where my opinions just aren't welcome, because I am "just a programmer." I'm not a graphic designer, and I haven't tried to be one, but I have seen a lot of success working in collaboration with a more "design" oriented UX person. I think there should be more of this type of collaboration as a normal team structure.
Posted by: twitter.com/ding | September 15, 2009 at 10:42 AM
Brilliant that you posted this. I'm a huge fan of Ramsay. Not only is the British version of "Kitchen Nightmares" great, but check out "The F-Word". That show is even better. And watching it, you really get the sense that Gordon is actually a great guy and someone you'd want to hang out with and learn from.
But to your post, you wrote: "That thing which constitutes that specialness in software probably isn't clean internal structure."
If you watch "Kitchen Nightmares" with any regularity, and "The F-Word", you will notice that while you are right that the user experience is the ultimate goal, everything that Gordon does is in service of that goal. And that includes maintaining a CLEAN kitchen.
Gordon goes absolutely ape when he runs into a filthy kitchen. But he also goes ape when service stinks, food is cooked wrong, etc. Every aspect of the kitchen and the service does into MAKING the user experience what it is.
Software is no different. The tools we use, the way we write and test our code, how we maintain it internally, the processes we use, how we deploy it and maintain it, all of those things go into providing the user experience. If you have filthy code you will eventually have a crappy user experience.
That has been the lesson I've taken away from Ramsay in my time watching him (and like many, I too have noticed the comparison). You have to have a clean, professional and well-run kitchen before you can provide the ultimate user experience.
Posted by: Chris Holmes | September 15, 2009 at 10:44 AM
Brilliant.
I'm a fan of Gordon Ramsay's, in part because I'm a closet gourmet chef, and in part because I share his quest for perfection, both in cooking and in software development. (Well, everything, actually -- I'm Mr. Hypercritical.)
This afternoon I'm going to stroll by amazon.ca and order Ramsay's book. It'll be an early Christmas present to myself.
This is probably my favourite blog post of the year. Thank you.
Posted by: Alex Beamish | September 16, 2009 at 08:31 AM
I think Eric Ziebold, in his days at 'The French Laundry' might have been the guy who did the service single-handed.
I think you might enjoy 'The Soul of A chef' by Michael Ruhlman, which is part of his chronicle of the pursuit of perfection in the culinary world. One of his subjects, Thomas Keller, is a master of the 'keep your station clean!' school of cooking. Keller has said, several times in several places, that a restaurant requires a good 'back of house' person (chef), a good 'front of house' person (service) and a good business person, and that his 'French Laundry' wouldn't have been a success had it ridden solely on his skill. Applied to software (loosely), I think this means it's ok to not be all things, as long as you recognize that you need a team to be 'all things' for the purpose of providing your intended service to your customers. As gifted as Keller is (and look at the chefs who have come through his kitchens - Achatz, Ziebold, Lee, Benno, ...), he knows he doesn't have it all, for the purpose of running a restaurant. I may have misread, but you seem to be suggesting that only those who can combine UX with development skills can reach this goal; I suspect that the road is a bit broader if everyone realizes what's important and organizes themselves to focus on that end.
I've thought of ObjectMentor as the kind of boutique shop you describe. Do you think of it otherwise?
Posted by: Patrick Morrison | October 04, 2009 at 12:47 PM
Hey Michael, I came across your blog due to a Twitter reference. Nice post on Gordon Ramsay - I wrote about the same thing almost 5 years ago: http://www.hulshout.nl/?s=ramsay
Nice to see different people get inspired by the same thing!
Angelo Hulshout
http://www.delphino-consultancy.nl
Posted by: Angelo Hulshout | November 21, 2009 at 06:56 AM
Isn't Object Mentor, at least in part, a Software Boutique Shop?
What do you think makes you better than others in that respect?
Posted by: Aviv | December 13, 2009 at 10:18 AM
IMHO as a developer, we're more like electricians, plumbers, sheetrock guys and HVAC guys. We build all the pieces to make your UI work.
I don't know how to design a finely tuned and nuanced UI, much like electricians and plumbers don't know how to design buildings and manage human traffic flow in the building along with all the other nuances that need to be understood to properly design a building.
Designer != developer. Designers design things. Developers build them.
Being able to do everything, while an admirable goal, simply isn't possible without some glaring inadequacy.
There's not enough time on the earth to learn it all to a level resembling competence, and still have a life outside of your work.
Give me a flow, some design templates and I'll wire them into an application for you, make me design your user experience and I promise you won't be satisfied with the result.
IMHO UI people and hardcore developers are simply wired differently. It takes incompatible mindsets to do each job.
I've worked with stellar UI guys and I can safely say that I can not do their job. They can't do mine either ;)
Posted by: Neil | March 22, 2010 at 11:15 AM
Great analogy! I really like it!
Recently I started posting interestnig analogies I found on the web on blog.ygolana.com. I thought it could be a good idea to create a place where people can share useful analogies.
Posted by: Peter | April 18, 2010 at 01:08 PM