Ever watched an episode of Kitchen Nightmares? I mainly got into it because of the similarities between running a kitchen Gordon Ramsay style and how a lot of software processes could look at Gordon Ramsay for direction.
Ramsay’s kitchens are agile kitchens and if his kitchens followed a waterfall model like many software teams do then you would end up getting your food at 2am after arriving for supper at 6pm. Anyway that is not the topic of this post, but you can read more on this at Clinton Begin’s Blog.
Can you become successful by being average?
What makes a good dish a great one?
Every ingredient in a great dish is there for a very specific reason, there is not 1 unnecessary ingredient. Nothing is out of place and each element captures a component of the dish’s essence.
Presentation, presentation, presentation. That is the second element of a great dish. A great dish is inviting, once you see it you already know how you are going to ‘attack it’ and you are not left confused where to start.
A good software engineer says “No” more than they say “Yes”
Cooking a great dish requires a lot of discipline; building great software also requires great discipline. It is very tempting to just add more ingredients or more features into a dish or software, but that temptation needs to be resisted; someone needs to act like a referee and reject anything that does not add value. Just because you can, does not mean you should. As a software consultant I always find myself facing customers that want everything under the sun in their application. They want everybody and I mean everybody to use it for everything. There are many problems with this philosophy, mainly you end up with a very cluttered software where it’s main essence has been diluted. This is where I find myself asking over and over again What value does that feature add? Who does it benefit? How many will benefit from it? Keep in mind that 80% of your revenue is generated by 20% of your customers.
Gordon’s cooking style is simple, and whenever he walks in to a failing kitchen he ends up simplifying and idiot proofing the menu more than anything else. A lot of restaurants fall into the trap of trying to satisfy all their customers even if doing so takes away from the restaurant’s essence. This seems to be a common mistake amongst all restaurants shown on Kitchen Nightmares. Surprisingly lessons learned from these failing restaurants can be applied to failing software as well. One episode I remember is the case of an “authentic” Indian restaurant in Notting Hill that had french fries on their menu! Yes french fries in an “authentic” Indian restaurant. The owner’s flawed reasoning is because some customer’s wanted french fries. This is a simple example where discipline was required and if the customer wanted french fries they can go to the nearest McDonald’s or KFC – not an “authentic” Indian restaurant. If it goes on the menu it will be ordered, but don’t trick yourself into thinking just because it was ordered or used then there was demand for it.
I am a true believer that doing one thing great is better than doing a half assed job on 10 things. I hear the phrase “Jack of all trades” often in the software / consulting industry I don’t particularly like it because it literally means you are not exceptionally good at anything, just average in many things i.e. “Jack of all trades; master of none”. I don’t see anything to boast about there. Don’t get me wrong, there is nothing wrong with knowing a lot of trades, but everybody needs one or two trades where they are really good – and I mean really. So can you make a career for yourself out of being a “Jack of all trades” – I don’t think so.
In his book Malcolm Gladwell talks about the 10,000 hour rule where for one to call themselves an expert at anything they need to have done that for at least 10,000 hours. Consider one who works an average work week of 40 hours and no weekends, it would take you 5 years of doing nothing but that one thing to become an expert at it. If you are a “Jack of all trades” then it could take you 10 years, 20 years or maybe even a life time before you become an expert at any one of these trades. Point is, it is very easy to be a “Jack of all trades” but it is difficult to be a “master of one”; so focus on a few things or ingredients and become really good at delivering these ingredients together. Now you have a unique selling point. Next time remember this when you are just about to describe yourself as a “Jack of all trades”.
Presentation is the second criterion for great dishes and excellent software. Making 12 features look awesome is always an easier and simpler task than making 120 look okay. Get the basics right first and then build from there. If you mess up on the basics, you really don’t have a chance.
So how can you tell the difference between an excellent dish and an average one if all you have been tasting are average dishes?