My Recipe For Learning

Jesse Calton
8 min readAug 25, 2020

--

Photo by Sean Stratton on Unsplash

Hey gang! It’s been a long time since I’ve settled down to blog, and I’m ready to dust off the cobwebs and jump back in the saddle.

Over the last 7–8 months, I’ve noticed a great deal about my learning process and how I learn. I’ve been spending a significant amount of my free time leveling up my skills in JavaScript development, nailing down the fundamentals of the language as well as working with React and React Native.

It’s been a very fruitful experience, and considering the amount of free (or very cheap) online resources available for software developers, think I might be able to impart some wisdom to those developers stuck in “tutorial hell.”¹

¹ Tutorial hell is when you finish one tutorial only to jump into another one because starting your own project feels too overwhelming, or you feel ill-equipped.

Your Learning Style

What gets you most excited about learning a new technology? Do you enjoy watching videos? Reading books? Do you pore over documentation or play around with code snippets? Whatever your style is when you’re finding your bearings, I think we can all agree that the best practice is by doing, and not simply observing.

It’s kind of like music theory. Yes, it exists and informs our listening and how chords are formed and whatnot, but do you think Jimi Hendrix was playing by the “rules” of music theory when he wrote Voodoo Child

² The answer is, of course, a resounding no.

The First Steps

I’ve found some amazing instructors with YouTube channels and/or Udemy courses. I like to get a feel for an instructor’s pedagogical style before investing the $12 in one of their Udemy³ courses. You can usually find an extended preview of the course or a related video from the instructor on YouTube.

I’m a big fan of Brad Traversy’s YouTube videos and Udemy courses. Coding can make your brain hurt sometimes, but learning from Brad feels like learning from a good friend. He has a very calming demeanor and a cool Boston accent.

Whatever criteria you have for a good instructor, find one who you look forward to learning from. This will come in handy on those days when you aren’t feeling motivated.

³ Udemy courses are regularly listed at around $100 a pop, but there’s almost always a sale where they drop the prices to the more sane $12 or so. If you can be patient for a couple weeks, make a wishlist and grab whatever courses you’re interested in during the sale.

Learning from tutorials shows you how to do something the “right” way. In software development, and in life, there are many “right” ways to do something, and two tutorials on the same subject might take different but equally valid directions. Either way, you get to see how a professional works.

For instance, one React intro course I took used both class-based and functional components, and another course did it all in functional components. Both were valuable lessons in their own right.

Taking Notes, Coder Style

Having a finished tutorial project was a helpful reference when striking out to do my own projects. I had plenty of code snippets and examples to pull from when building my own projects. Unfortunately, the road wasn’t all that smooth. I realized I had failed to leave notes or comments as to why we wrote some pieces of code, and had to do some backtracking when I ran into problems.

To fill those contextual gaps, I started taking lecture notes in Evernote. While this was also a great way to reinforce my learning, I was in a similar situation as before, having to dig through the project’s code to find the snippets being referenced in my notes.

And then it occurred to me:

whynotboth.jpg?

Evernote has a cool feature that allows you to include code blocks in your notes. Using that, I could write notes narrative-style, and paste in the relevant code snippets.

This took a little bit more time, but saved me a ton of brainpower in the long run when I would go back and read through them. Here are a few examples:

Notes on initializing the Express.js and MongoDB backend

Below is an actual code snippet from the project, with a bunch of inline comments detailing what’s going on.⁴

A code snippet for setting up Express routes. Lines beginning with // are comments in JavaScript, and do not get compiled.

I like to be verbose in my comments when coding along with tutorials. Not only does it help me understand what’s going on, but it appeals to my lizard brain and thus have to think less when I go back and read through it.

Live look at my lizard brain reading the notes I wrote

⁴ Copying and pasting from a code editor into Evernote unfortunately doesn’t keep your tabs or line breaks consistent. To get around this, I pasted my code into https://tohtml.com/jScript/ and copied it from there to Evernote. It’s an extra step, but it works!

Here I Go Again On My Own

That voice in your head telling you you aren’t ready to build your own project and need to do another tutorial? That’s our familiar friend, Imposter P. Syndrome.⁵ He gets to hang out in the passenger seat while we drive, but he doesn’t get to change the radio station.

Imposter Syndrome will tell you none of your ideas are original, and your code sucks, and you should just quit, and yada yada, but so what? Make another todo list app while he yammers away in the passenger seat. You’re still driving and you still control the radio station.

The way I see it, once you’ve completed that tutorial project, whether it’s a Craigslist clone, a contact keeper, a pizza ordering app, you are more than capable of doing that same thing on your own. In fact, I would encourage you to stop partway through the tutorial and take a stab at building your own thing.

Your first project using your newly acquired knowledge doesn’t have to be the thing that solves world hunger. Save that for the second project (kidding, of course, but don’t let me be the one that stifles your creativity).

Nay, this project is your shitty first draft.⁶ There will be spaghetti code, there will be head-scratching decisions, there will be design flaws and inconsistencies — and that’s totally cool. You’re doing the damn thing!

⁵ The P stands for “perfectionism,” which is what his strength derives from.

⁶ This is an excerpt from Anne Lamott’s Bird by Bird: Some Instructions on Writing and Life. Should you ever come across a copy, it’s a must-read. Take it to your zen place and soak it in. Even if you don’t fancy yourself a writer, I would argue that you are a writer — a writer of code!
Code? Literature? What’s the difference?⁷

⁷ (A footnote of a footnote? I’m here to break all the rules.) If the aforementioned comparison of code and literature intrigues you, let’s talk.

Follow That Spark!

A great literature professor I had in college encouraged the class to “follow that spark,” meaning to capture an original idea that springs organically in one’s mind and follow it to see where it goes. While this was meant as a guide to writing analytical papers, I don’t believe the metaphor stops there. This process of building your own project is where you build that neuroplasticity. A tutorial will only get you from about 0–20, but it’s your first project that will get you from 20–60.

In the headspace of your own project, you get to follow your inspiration wherever it takes you. If you decide halfway through that you want to change your Yelp clone project to a WeRateDogs project, do it! Do you want to serve random dog pictures to your users? A simple Google search pointed me to the Dog API. You can incorporate your newfound Fetch API knowledge in the literal sense of the word!

My only concrete suggestion is to try to apply a few of the core concepts you’ve learned so far. Did your tutorial incorporated routing? If so, try that out. Did you read some documentation about the Fetch API or some other HTTP library? Give that a shot!

In my first React project, I wanted to add routing, but had no idea how to do that, so I googled around and gave it the old college try. While it functioned as expected (that is to say, not in the way in which I was hoping), I realized I needed some help…

Hitting a Wall

Sometimes it be like that

Maybe you’re midway through a project and it was working fine at first, but then you got fancy and broke everything and can’t get unstuck. Or, perhaps you finished your WeRateDogs clone and want to add some more functionality.

Whatever the case, give yourself a high-five, or a hug, or a cookie for tackling your own project in a new tech stack. Be proud! You stepped out into unknown territory and dared yourself to fail, when you could have done something easy and familiar, like napping and re-watching The Office.⁸

In my case, when I failed to add routing to my project, I went back to the drawing board, which is another way of saying… I resumed the tutorial.

*Audible gasps are heard*

Don’t worry — I would hardly consider us stuck in tutorial hell at this point. By trying out these new concepts your own, you’ve cleared a significant hurdle in galvanizing what you’ve learned, but once you hit that wall, it’s high time to fill in the gaps in your knowledge.

⁸ Let’s not beat around the bush here, The Office is the GOAT sitcom.

The Next Episode

Now that I’ve got my sea legs, there are several paths I may take from here. If there’s still some tutorial left, I’ll finish it, still taking notes coder-style. I may also google around for further clarification on certain concepts, or perhaps read some documentation and experiment with some other built-in functions.

I’m also not above watching another tutorial. The advantage now is that if an instructor is going over something I already know, I can speed up the videos and slow down when it sounds like there’s something important.

The main idea now is that I’m better equipped to start doing. Like any great athlete or musician, once you’ve been coached on the fundamentals, it’s time to start getting those reps in. Practice your jump shots, practice your circle of fifths, and practice building stuff in JavaScript. The world is your oyster!

The Key Takeaways

Just as valuable as the knowledge we gain is the building of a habit of gradual and methodical improvement.

Don’t worry about picking the “right” tech stack or framework to learn. Find that thing that you’re going to wake up feeling excited about. I wish I had given myself that advice during my post-bootcamp days when I was overwhelmed with the amount of stuff I thought I was supposed to learn.

Coding is a skill like any other, and we get good at it by doing it as much as possible. There are no shortcuts.

Be patient, be kind to yourself, and celebrate the small victories.

--

--