It’s intimidating to try to learn any new skill. Learning to code is no different. But you can’t let that initial intimidation stop you from trying to learn anything new. After all, the most complex skills in the world are the ones that are most worth acquiring.
If you want to figure out how to learn things in an optimized way, there’s a framework that you can follow to make it a lot easier. In short, the recipe for mastery is the following:
- Acquire the tools you need to start making progress.
- Split up one huge goal into the specific concrete processes you’ll need to reach it.
- Get good enough at performing the processes at a basic level to be mediocre at the overall skill.
- Focus on leveling up each of the individual concepts that you need one at a time.
In the process, you will learn how to effectively use the tools at your disposal and develop the practical techniques to help you accomplish your goal. Whether you want to become a gourmet cook or a programmer, the steps are the same. In this post, I’m going to deconstruct how I would use this framework to cook a fajita dish. At the end, I’ll zoom out and explain how I’d use the exact same process to learn to program.
Ready? Let’s get into it.
Step #1: Acquire The Essential Tools For Your Environment
If you don’t have the right tools, you’re not going to be able to cook a meal. So before you get started, you need to collect all of the necessary parts. At the most basic level, you’ll need the below things in order to cook the fajita dish:
- A kitchen
- A stove top
- Frying pan
- Cooking knives
Step #2: Come Up With The Idea
You need to have an idea in your mind of what you want to cook. The idea can come from a ton of different places, like:
- Cook books
- Online recipes
- Family recipes
Step #3: Buy The Ingredients
When cooking, you need to have all the ingredients up front. It’s really impractical to run out to the grocery store on multiple occasions.
If you think ahead, you’ll save a ton of time.
For a fajita dish, you’ll need to buy:
- Chicken, Tofu or Beef
- Fajita seasoning.
You might think that there is little skill involved in buying ingredients. And if you’re a cook like me, who is ok with just being average, you would probably be right.
But world class chefs don’t take this step so carelessly. They question everything:
- Regular vegetables or organic?
- Farm-fresh produce at a nearby market or produce from a supermarket?
If you’re just getting started cooking – the truth is – it probably doesn’t matter. But if you’re cooking for Gordon Ramsey or Bobby Flay, these details might start to really matter.
If you want to level up as a chef, the best thing you can do is to take this step just a little more seriously.
Step #4: Prepare The Ingredients
There are a lot of sub-skills involved in the overall skill of preparation. Again, like any other skill, focusing on acquiring them one-at-a-time will help you achieve your goal fastest.
One sub-skill is cutting an onion.
Cutting an onion is easy. Well, sort of. It’s easy to do a mediocre job. Just like it’s relatively easy to write some mediocre code.
But if you want to do better than mediocre, then you need to learn the proper technique.
Check out this video from Gordon Ramsey that has over 4 million views. He teaches you how to dice an onion in a radically different way.
Another sub-skill is slicing a pepper.
The technical term of what we’d want to do here is “julienne” the pepper. This means cutting it into fine strips so that they will be crunchy and properly sized.
The typical cook usually slices peppers in an ad-hoc way. It does the job fine. But it’s not the most effective way to do the job.
Now, watch Gordon Ramsey julienne a pepper:
If you really wanted to level up at the overall skill of cooking fajitas, you’d study Gordon Ramsey and practice his preparation methods.
Step #6: Cook The Ingredients
Preparing the Protein
Typically, you would prepare the protein like this:
- Throw some olive oil into a frying pan
- Wait for it to get hot
- Add in the protein.
However, experts do this in a completely different way. That’s because they’ve experimented and found more optimal ways to get things done in the kitchen.
Instead of using a frying pan, they use a wok skillet. They put aggressive amounts of oil into the pan and get it super hot. Then, once the oil is ready, it takes about 90 seconds to cook a generous amount of protein. The excess oil can be drained. [source].
Preparing the Vegetables
When I’m cooking, I generally just throw these in a regular frying pan.
But, again, skilled chefs take a number of steps prior to cooking the vegetables. These steps include things like:
- Drying the vegetables with a paper towel
- Rather than throwing all the vegetables in at the same time, they understand how long it takes each vegetable to cook and toss them in accordingly.
Step #7: Present The Final Product
When I’m cooking, I generally just throw all the results of the vegetables and protein onto the plate in no particular way.
But when you’re at a nice restaurant, they’ll often bring the Fajitas out on the wok as it’s steaming. There’s something cool about the experience of seeing the steaming vegetables and food on a wok, along with sour cream and cheese on the side.
Even Gordon Ramsay probably wasn’t born an expert at slicing, searing, sauteing and serving food.
Instead, if you want to be a master cook, the first step is being an ok cook. You need to acquire a level of competency. You don’t need to be a master the first time. In fact, an “Ok” result is actually a huge success.
Then, once you’re capable of producing an output, you can focus on honing your sub-skills.
You could try those complicated knife tricks. Then, once you get that skill, you could look into trying out a wok instead of a typical frying pan.
But these improvements come after the point where you reach competency. If you tried to cook like a master chef the first time in the kitchen, you’d never get anywhere at all.
The same is true with a skill like programming.
The process is the same. You need to break down the overall skill into a number of different steps that are needed to build applications. These include:
- Building feature sets
- Building front-end features that are visible to users.
- Writing complex algorithms to achieve advanced user interactions.
- Bug Fixes
The essential process you should use should be the same:
- Acquire a development environment, where you’ll ultimately be able to practice the craft.
- Break the overall goal into the different steps you need to take
- Isolate the specific skills you’ll need to achieve each step.
- Start by taking the simplest route possible to achieve your outcome.
- After you feel comfortable working with a simple strategy, start leveling up at the different skills.
For example, once you become proficient at building regular applications, the next step could be to build well tested applications, with something like rspec.
If you’re looking to level up your skill as a chef, leveling up your knife work would be one part of the process. The same thing exists in programming. Want to be a better programmer?
- Get better at algorithms
- Get better at data structures
- Get better at writing well-tested application
- Write your test before you write the core code in a TDD approach
Programming is a complex skill, which is made up of a large number of complex sub-skills. This is precisely why it can be so intimidating to learn.
But if you break it down into its parts, get good enough to produce an output, then focus on leveling up on each part to improve, I promise that you can become a programmer.
So, want to become world-class programmer?