In Kitchen Nightmares, Gordon Ramsay does make-overs on failing restaurants and turns them into respectable enterprises through a combination of cuisine guidance, managerial pruning, and loads of swearing when things fail to meet his standards.

It’s a fantastic show that gives grim insight to the scary state of affairs of the chosen spots, but it also goes beyond the schadenfreude and saves these places from going out of business.

What makes Ramsay’s approach to restaurant revamping so interesting, though, is how applicable it feels to software design. The characteristics of a failing eatery ring remarkably similar to those of a poorly-run software product:

Everything to no one
Almost all Ramsay’s cases feature an overstuffed menu derived from a misguided notion that more choice is always better and that making every dish under the sun will broaden the appeal of the restaurant. The first order for the cuisine is to trim the choices and go from thirty-some dishes to ten or twelve.

Compare this to a piece of software overflowing with features. None of them particularly tasty, none of them particularly well done, all of them burdening the user with a learning curve and all of them cluttering the interface to the point of mediocracy.

You don’t tickle patron’s taste buds by all the dishes you can make that they don’t eat and you don’t delight users by spreading yourself thin over all the features they won’t use.

Cook what you know
British chefs slicing Japanese Sushi or Indian chefs cooking traditional American cuisine are two examples that Ramsay cracked down on under the banner of Cook What You Know. If you don’t have a strong history of eating and living with certain ingredients and styles of cuisine, it’s much, much harder to reach the upper echelon’s of taste. And why bother? Pick your native ingredients, those in season, and make what you know and can personally appreciate.

The same is true for software. When you create products for yourself, you’ll have a much easier job and most likely be much better at it too. It’s hard to make good food if you don’t know what excellence should taste like and it’s equally hard to craft good software if you can’t appreciate what brilliance looks like.

Passion for your environment
Great chefs care about their tools and their environment. Poor chefs let their kitchens go and don’t cleanup the messes they create. In the world of food that’s not just sloppy, but dangerous as well. One of Ramsay’s common shocks come in the form of “I fucking ate this!!” when he looks at the ingredients and machinery that produced his welcoming meal.

Great programmers are like great chefs. They care about having a clean, productive environment. They surround themselves with beautiful code that they craft with tools that they enjoy. You can’t disregard your tools and think that you can still produce great work. It doesn’t work in cooking and it doesn’t work in programming.

That’s just a small taste of the similarities. Ramsay has plenty of additional lessons to teach software creators about vision, simplicity, and executing on the basics beautifully. I highly recommend setting your DVR to pick up the American version of Kitchen Nightmares on Fox every Wednesday from 8pm. The original British ones from BBC are great as well.