What I began to realize was that simply reading from a textbook deluded me into thinking that I was making progress. Sure, reproducing the code samples was easy enough, but getting snippets of code to work is a far cry from solving the day to day problems of coding. There are no helpful hand holds when you actually have to set the environment up yourself. Most answers to questions that you’re going to have will be on Stack Overflow. But I did not have the mindset then that it was okay to break things, ask for help, re-build, and break things again.
I thought I was supposed to know everything after I finished reading a comprehensive book or after completing a Codecademy course. I’d start getting the “are we there yet?” syndrome halfway through a course, then I’d hop over to the next course. Rinse and repeat. I was that diner at the table who yells at the waiter or waitress, saying “Is the food ready yet?”
This is a mentality I couldn’t shake off till I was entrenched in a 9-month-long, 12,000 dollar coding boot camp. During the course, it finally dawned on me that programming isn’t Biology — you don’t have to memorize every function, every bit of markup, or every property.
All you need is an understanding of the steps it takes to complete a project. The online sources make up one large cookbook. You use the cookbook to help you solve your problems. Say step 1 in building a website is to set up a file structure. I can refer to a “cookbook” to find out how this should be done. Problem solved. If I had known this sooner, I wouldn’t have needed an expensive course to spoon feed me programming knowledge.
That’s not to say that my experience at a bootcamp was for naught. The mentality I imbibed from the bootcamp is what my instructors called the kitchen vs restaurant mentality.
Getting Out of The Restaurant
See, throughout our schooling, we’ve been used to getting served our education through homework, classroom lessons, and tutoring. At the end of x amount of years of education, we get served a diploma. We expect to understand everything after we’ve had a standardized learning curriculum dished out to us. The restaurant mentality works if you’re dealing with static theoretical subjects, but many people who get served this type of education realize that it hardly applies to real life.
The kitchen mentality completely shifts the way you go about learning. You set a goal, like the completion of a website, and then you set up a task list. At every step, you search Google/books/etc. for answers to questions, implement the answers, and you move on.
Learn By Doing
We should all treat learning like a 9 to 5 job. When you go to work, you don’t expect to get neat packets containing theoretical questions about your job that you then have to answer. Instead, you have a list of tasks to complete. These tasks require a level of muscle memory that you attain through a process of procedural learning. Repetition ingrains the action into your neural pathways. That’s part of the reason why a skilled typist can type 75 words per minute.
The skill a programmer should focus on honing is problem solving. You can only learn how to problem solve effectively if you treat your learning process like a job. Pretend you just got hired as a Junior Web Developer and your boss just asked you to build a simple calculator(or any other basic app) for his kid. It doesn’t have to look nice. He’ll get the designer to do that job for you. It just has to work.
Now instead of trying to remember what a particular syntax looks like so you can rattle it off if you’re ever asked about it, you’ll be focused on learning what it can do for you. You will see these strange words and symbols as tools rather than a language that has to be memorized cover to cover.
Let’s use the calculator app as an example of why we learn more by completing projects.
To build a calculator, you will need to know what functions a user would want in a calculator.
As a user of a calculator, I expect to be able to perform every arithmetic calculation.
As a new developer, you can then research the arithmetic function of your programming language. Once you learn to perform mathematical operations, you will then encounter a problem.
How do you receive user data? That should then lead you to another Google search. Once you learn how your programming language receives user data, you may then realize that you don’t want the user to enter letters. So then you have to find out how to set a condition. That leads you to another Google search.
Do you see how one simple tasks triggers a list of potential problems? This is what programming is all about. You don’t need an encyclopedic knowledge of a programming language to solve these problems. You just need Google and your logical might(Code Katas will make you mighty).
It takes 10,000 hours to master a skill, according to Malcolm Gladwell (You’ve probably heard that 100,000 times, so you’ve probably mastered the skill of eye-rolling). Still, you don’t need to be a Master of Code to be productive. Programmers aren’t writing 1,000 lines of code per day. They’re more like firefighters and cops, maintaining order in code and dousing bugs. Problem solving rules the day. So if you have a dense programming book sitting at your desk, know that you own it. It doesn’t own you.