Analogies are useful to describe complex systems. Software engineering is opaque to most non-technical entrepreneurs. Let’s try cooking as a software development analogy.
Much like creating software, cooking involves ingredients, planning, tools, techniques and a certain amount of intuition. And like cooking, it is driven by people with various degree of talent and experience. As an entrepreneur, you can't settle for serving food that's merely suitable for human consumption. You're seeking to delight your customers. How do you achieve that?
Programming languages and frameworks are the ingredients of the programming world. They come in wide variety and each has a purpose. Like ingredients some of them can easily be substituted for others. In other case, the precise ingredient is so central that it should not be substituted.
Ingredients are usually not critical. Use what's available. However, there is a minimum quality level to be sought after.
The tooling IDE, unit testing library, deployment tools are like kitchen utensils, waiting to be put to good use. Some may be more crude than others. Some may be more common than others. Some may be more versatile than others. In their essence, they are just tools. In capable hands, they will be commandeered to deliver delectable food. However, even though tools play an important part in the creative process, they are a mean to an end.
Don’t obsess over tool choices. What comes out of that deep fryer is entirely up to the operator.
Cooking takes practice and learning from others.
What a good cook has been exposed to will shape their understanding of the possibilities. They will pick the right tool for the job, but in a pinch will also be able to adapt what they have to their particular needs.
At the bottom of the experience ladder, the fast food “cook” will only know of convenience food. Everything has been prepared for him in advance. His role is highly specialized and does not transfer to doing anything else. The complexities have been hidden from him. He does not make any decision on how the meal comes about and blindly follows instructions.
His effort consistently yields mediocre food.
When you hire a fast food “cook”, don’t expect him to craft intricate sushi for you. He can’t. He’s not been exposed to the tools and techniques to do that. He’s only capable to follow templates established by others for him.
Next rang up is the short order cook. He prepares fast, easily assembled meals to order. The griddle and deep fryer are his go-to crude utensils. He doesn’t have the depth to go beyond that. Don’t expect him to handle complex sauces or fancy desserts.
Once you step up to the world of professional kitchens, a formal structure starts to emerge. Brigade de cuisine (literally kitchen brigade or kitchen staff) defines such organization.
A common function in such structure is a line cook. A line cook is someone who prepares the same food quickly and consistently, having little need for an executive chef. They do it repetitively and without deviation. They work well within that environment but may not perform well independently.
If you open a new restaurant and expect your line cook to handle it all you may be surprised by his shortcoming. He may know a specific area in depth, but might have had very little exposures to other sides.
This is often why engineers from large companies make lousy hire for startups. They’ve spent too long in an environment that required little creativity and initiative from them. They've been isolated from the entire process. They are line cooks in a large professional kitchen.
With organizational scale also comes specialization and separation of duty.
The saucier prepares sauces and warm hors d'oeuvres and completes meat dishes. The patissier (pastry cook) prepares desserts and other meal-end sweets.
Specialization is useful at scale. If there is a well understood need for a specific skill, look for that specialist. But for the most part, you’re better of hiring versatile engineers who can do it all.
Finally, the Chef de Cuisine (literally, the kitchen chief) is the orchestrator of the kitchen. They’re the leader behind the creations and can often fill any area themselves. They hold the standards of excellence.
In a startup, you want to hire generalists with broad experience. You need people who can create new recipes, assemble a menu and fill any kitchen stations. And you want people who have done it in a professional environment, not just the corner’s fast-food joint so they understand scale, discipline and how to work with others.
When hiring someone, consider where they’ve been and what environment they’ve operated in. Did they serve fast-food? Were they a line cook in a large kitchen?
You should be scouting for that next upcoming talented Chef, not settle for the guy who fried your eggs for breakfast. You will taste the difference and so will your customers.