Recently I was watching that episode of No Reservations where Tony goes back to work a shift at his old restaurant, Les Halles. He enlists Eric Ripert to join him, mostly for the purposes of making better television. Eric works at a place I’ll probably never be lucky enough to enjoy, Le Bernardin. I bring all that up to get to this, in the episode Eric works the grill station and at the end of the night makes the comment “that is a two man job.” The point being that at Les Halles it is a one man job.
I’ve eaten at Les Halles and it is a pretty good restaurant, the one in DC a little nicer than the NY original. But it doesn’t come close to either the cost or quality of Le Bernardin. And it isn’t supposed to. What for Eric is a two man job is for Tony a one man job, implicitly saying that quality might suffer a little. But you get Steak Frittes for around $20, instead of a tasting menu for $200+. We as diners recognize and taste the differences in these two restaurants and accept that it takes more cooks and more time and thus more cost.
These same forces are in effect in every industry, pay more to have more and better skilled professionals work on your product. The problem in software development is that the product is intangible. I didn’t just cook you a nice steak, or build you a chair - I made a web site. How can you know that my work is better or worse than someone else? Obviously if the whole thing crashes its a no brainer. But what about the subtle differences like memory management, caching, efficient data retrieval? How can I show a customer, manager, or client that what I have produced was worth paying a little more? Here are a few suggestions:
- Become a better communicator. When talking with customers explain what you are doing, and how. They might have asked for you to “just add a button”. It is not their job to know what that takes, but 40 hours sounds like a lot to do it. “Just add it” is usually the response. Be able to explain what it takes, what is involved and exactly how much work adding that button will be. Most people (see the next item) are reasonable and once things are explained are agreeable to the costs associated.
- Get better customers. There is such a thing as a bad customer. As soon as someone starts saying they won’t pay for testing, or project management, or mentioning that their son can do the same work better - let them go. People with $20 in their pocket aren’t eating at Le Bernardin. Your reputation is built largely on your customers word of mouth, so work to find good ones. And just like a restaurant, you can’t control who comes in the door - but you can always ask them to leave. It might make one person angry, but it is for the good of all of your other customers.
- Do better work. If you want people to look up to you as being “better” you need to, oddly enough, actually be better. Fancy ad campaigns and pretty office buildings will get you so far, right to the point where projects start failing. Then word of mouth takes over. Everyone makes mistakes (see next point) but the bulk of what you produce must exceed expectations. Charging a little more gives you a little flexibility to add little flourishes and touches, like getting an amuse-bouche compliments of the chef.
- Be wrong. If you make a mistake or something doesn’t work, fix it. Don’t argue with the customer, don’t mince words - take the plate back and make it right. Do keep in mind scope (see next point) and don’t get taken. If the customer introduces a new requirement that isn’t something not working. But if you agreed to make a button send an email and it doesn’t - fix it.
- Know what work is agreed on. I have seen more projects go bad due to this item than any other. One project I worked on by the end we were told we were developing on the wrong platform and asked why we chose it. There will always exist small gaps in understanding between what is expected and what is delivered, but these can be minimized by showing the client early and often work progress as well as clearly documenting what is to be done. Those small gaps are also smoothed over by adding little extras.
I think I stretched the software/restaurant metaphor far enough, hopefully in an illustrative way. Working with the best costs more, something you will have to explain and prove to your customers over time. There will always be a place down the block offering the lobster for $5, don’t worry about them they won’t last. Get good customers, treat them well, and offer superior service, it is a simple recipe (last one) for long term success.