2019 Edit: I am very gratified that this writeup continues to help people over a year after publishing! I have updated my thoughts in a new essay called Learn in Public.

In the last year (and a bit), I went from Hello World in Javascript, to deploying fullstack webapps, to getting freelance jobs, to interviewing at top tech firms including Google, and receiving multiple six-figure offers as a professional software engineer. Here’s how I did it.

What I did in a nutshell

That’s it! My year in five minutes. In preparation for this post I wrote out the month by month process in a ton of detail on my devblog and on FreeCodeCamp so if you need more info head there. My only goal here is to show you the big picture of what I did and give you some inspiration if you would like to do something similar. It can be done.

Disclaimer: In the first draft of this post I did not mention the fact that I am not new to programming (I have coded in VBA, Python, and Haskell before but never as a professional software engineer). I am only new to web development and Javascript. I also shortened the timeline to 12 months given my 2 burnout months. This was a mistake and I have restored the timeline.

Guiding Principles

All these bullet points above might make the transition process seem easy but they paper over a lot of long nights and some weeks where I felt like I was repeatedly banging my head against a brick wall. Javascript is evolving at a tremendously fast pace (see this viral article pointing out the tremendous confusion going on!) and I wanted to share with you some overall principles that helped me navigate through it all.

Fight Impostor Syndrome

I want to leave you with one concept and it has many names.

Ira Glass (the uber podcaster at NPR) calls it The Gap:

Social Scientists call it the Dunning-Kruger Effect:

And for the rest of us, the term is Impostor Syndrome:

It’s what I named my audio documentary (2019 edit: now dead), with the idea that if I could name the elephant in the room, I could fight it. What’s more “impostory” than going from paying thousands of dollars and months of time to learn something, to actually being paid many thousands of dollars to do it? Worse still, having the audacity to negotiate over it?

It is always going to be a truth that the more you know, the more you also learn about that stuff that you didn’t know that you didn’t know. So if you are doing it right at all you are going to feel like you are terrible at what you are doing. This is good. Just don’t stop there, keep working on your system.

Be at peace with the fact that there are multiple paths to what you want and the only way to figure out which one works for you is to try them. Often twice. Pay if you have to, because this is valuable stuff. Find supportive people. Do this every day, then teach what you learned. These are the principles you should take with you on your new journey.

And remember: No Zero Days.

If this essay helped you at all and you’d like to update me on your own 2018 journey, find me on Twitter @ Swyx (https://twitter.com/swyx). I’d love to be part of your cheerleading team!

Thanks to Jeff K, the CodingBlocks gang (Firro, Joe, dance2die, and sowen) and the FreeCodeCamp community for reviewing the full length draft of this essay!