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.