Learn to code in less than 5 months, get hired, and have fun along the way

Not me…but a nice picture

There is now an updated version of this post: check it out here.

Last year, I decided that a career change was in order. I wanted to take 5 months to learn a new skill that will let me have greater control over my work. This is the story of how I taught myself computer programming from scratch, got multiple generous offers, started a side business, and still had time to travel along the way. Maybe my story will inspire someone to change careers and take a deep dive into coding. It is a fast growing industry with many rewards, but most importantly it is a ton of fun. This is how I did it, and how you can too.

Important note: The post may seem like a step by step guide of what to do to become a coder, but if you look closely, it is a strategy that you can apply to any sort of learning.


Why Coding?

Before we get into the steps I took to become a developer, we must first dive into why I decided on this path:

a. Previously, I was working in an industry where there were a lot of supply of employees and only a few people at the top making the big decisions and reaping the rewards.

b. I love travelling. Therefore I wanted a skill that allowed me to get a job anywhere in the world. If I decide to move to Iceland tomorrow, I want to make sure that I won’t have issues finding a job.

c. Change is good, and learning should never stop. So why not do something new?

When choosing a new career I had a few must-haves:

1. It must be relevant for the next 40+ years. This skill should be valued many years in the future guaranteeing me security.

2. Demand for people with this skill must be higher than the supply. The less available pool of skilled workers in the industry, the more control you can have over your job and companies you work for.

3. Ability to have a high salary regardless of years in the industry. I Don’t want to spend many years climbing the corporate ladder until I make a decent living.

4. An industry that doesn’t require a specialized degree from a university. I don’t want to spend the next 4 years getting in debt and going to a graduate program before I start making money.

5. Ability to catch up to the top performers in the industry in the shortest amount of time. Can little experience still get you employed? And can I close the gap as fast as possible to be considered a senior or an expert in the field?

6. Have fun. The most important one. Can I see myself doing this 40 hours a week for a long time?
 
Coding hit every one of the points above.


The First Month

I spent the first month avoiding any tutorials or books. Instead, I spent this month looking at the best way for me to learn and get hired. I studied other people’s experiences, looked at job postings, spoke to established developers, reviewed online courses, looked at bootcamps, and even read articles by futurists on where we will be with technology in 20 years. Based on those, I created a curriculum for myself focused on efficiency: The critical amount of learning in order to be employable in the shortest amount of time. If you love Tim Ferriss’s work as much as I do, you’re going to love this. The curriculum isn’t focused on doing the least amount of work. Instead, it was focused on working really hard at the things that matter most in order to be employed in the optimum way. This doesn’t mean doing the bare minimum and being hired as an entry level developer. If you can work hard and skip the line by jumping straight into an intermediate developer role, that is a better outcome.

I spent one month planning my studying instead of actually studying. This had great benefit in the long run because I wasn’t running blind. I knew where I was going, and I had a map to the finish line.

One last step in my planning: What programming language to learn? I wanted a language that has a lot of employability. There were 2 languages that stood out to me:

Javascript — everywhere you look javascript is a requirement on job postings.

Ruby (Ruby on Rails) — It has become really popular in the last couple of years with a lot of startups in Silicon Valley.

After spending a few days researching which avenue to go, and introducing myself to these languages, I chose Javascript for the following reasons:

  • Even if I learned Ruby on Rails, I would still need to learn Javascript because it is so heavily used in Front-end development.
  • With the introduction of Node.js you can use Javascript to create a full-stack app (english = you can use javascript to build your entire project).
  • Javascript community is growing at a crazy fast pace. Industry demand for javascript experts is HUGE.
  • Although Ruby on Rails looked great and beginner friendly, the fact that Javascript was harder to pick up (since more and more new tools are being developed every day), it was to my advantage. I would be learning these new technologies at the same time as people who have been in the industry for years.

The Next 4 Months

I have listed for you the best resources that I have found. I tried many, but these are the ones that stuck with me and have really helped me learn. Each of the links below point to a specific course.

The Big Picture
How Does the Internet Work: LearnCode.academy and thenewboston

Terminology/Jargon: LearnCode.academy and this

How to use the command Line: this by Zed Shaw

How to build a website/get a domain/and have it up and running: LearnCode.academy

How does HTML CSS and Javascript fit together: freeCodeCamp and TutsPlus courses

What is a Computer/Server/OS: buy a raspberryPi and build your own server. Look up different projects on youtube you can do with your raspberryPi

How does a computer work: Follow this Harvard course on youtube.

What is the event loop: Once you have a good grasp of Javascript this talk will be a game changer.

What Is The 20% That Will Get Me 80% Of Results
I think most people have an idea that you need to get something 100% before they can move on to the next step. However, for most skills, including programming, the closer you get to 100%, the longer it takes to get there. I only had 5 months, and I knew that the last 20% will be better served actually working in teams, on real projects (and getting paid).

HTML → learn basic html syntax without going too deep into every single feature and elements introduced in HTML5. Know how to make a basic HTML website.

CSS → learn how CSS works and the most common properties used. Know how to centre elements or position them on a website. Make websites look pretty, or at least know how to copy and paste CSS to make websites look great.

Javascript → This is where most of my focus was. What problem does Javascript solve? Start writing little programs in Javascript to make your website behave in a certain way. Javascript make your websites do things other than just look pretty. Learn how it can be used outside of just browsers. Watch this and this by Kyle Simpson, CodeSchool, and again TutsPlus courses.

jQuery and Angular.js → These skills appear on a lot of job postings. Know why they are there and how it makes developer’s lives easier. TutsPlus, CodeSchool give you some great introduction courses to these. (**Update: Since writing this article Angular2 and React have grown in popularity. Do your research and see which one you would want to learn instead of Angular.js)

Google Developer Tools → learn how to debug your programs and websites using google Chrome. Do this CodeSchool course.

Don’t spent more than 1 day learning about:
Testing, Machine Learning, Computer Science Theory, SQL or UX/UI.

I can already hear people screaming at me with the above suggestion. “Are you out of your mind?! You don’t think testing is important?” But hear me out. I do agree that the above is important to be a good developer, and everybody should learn those skills. However, we are trying to build a trunk of foundation here. It is easy to start diving deep into a topic, but without the foundation you won’t actually know why it’s important, or how it relates to what you are doing. Additionally, in most job postings I found, there was very little mention of the above skills. Just save learning these until you are on the job.

REMEMBER: your goal is to get employed in the most efficient manner.


The Checklist

1. Learn HTML and CSS first. Then, buy a domain, buy hosting from a place like BlueHost, and make a website and put it online. This is going to be your portfolio from now on. Learn how to update it and make edits. As you learn new things, continue to make it nicer and nicer. Don’t spend too much time on this. Just enough to show that you’re able to put something online and make it look nice. This is how mine looked at the end of 5 months. Nothing fancy, but it’s something.
 
2. Start learning Javascript. How can you make your website interactive now? Go through the above resources and see what Javascript does. 
 
3. Start pushing your little projects to GitHub. Employers will look at your GitHub profile and how active you are on there. Try to make commits 5 times a week on your personal projects even if it’s bad code.

4. Learn to google and use Stack Overflow when you have problems. 99% of problems you will encounter when you start out can be found online. Or join the Javascript IRC channel and ask questions when you are stuck.

5. become comfortable using a command line to do things. Always have it open when practicing and try using it instead of the GUI (graphical user interface).

6. Learn the newest language features and trends in Javascript, and learn to solve problems with them (i.e. Promises, ES6, functional programming techniques.)

7. Attend local meet-ups and start talking to people. You will be really overwhelmed and confused by all of the things you don’t know. Don’t worry as this is natural. Just start meeting other coders so you can be surrounded by the lingo and jargon.

8. Start listening to the podcast: Javascript Jabber. This will get yourself familiar with the jargon so when interview time comes, it doesn’t overwhelm you. The first few times you listen, you will have no idea what they are talking about. Don’t lose hope. Eventually you it will all make sense.

9. Start applying to recruitment agencies early. We are going to use them as practice. Most of these have interviews with professional coders so they can rank your skill, but you can use these to practice programming question, and ask these experts any questions you want!

10. Start applying for jobs you are way overqualified for. You will get some interviews. You should never settle for a job. If you never ask, the answer is always no.

11. Make your LinkedIn profile look nice. Don’t spent too much time on your resume. Make it one page, make it concise and write down all the skills you’ve learned in the previous months. Being self taught shows a lot of courage. Remember that your resume is just to get you an interview, after which, they are as good as paper towels…ok bad analogy because paper towels are very useful. I spent less than 2 hours on my resume. What makes you different than other developers is the fact that you come from a different field and background. How is this going to differentiate you?

12. Interview and be amazed at how employable you are. Not all of them will go well, but then again, not many developers learned everything in the last 5 months. It shows ambition. ONLY apply to jobs on LinkedIn, and the rest should just be you emailing directly or calling the company you want to work for. Don’t waste your time on mass Craigslist, Kijiji, or Monster.com ads.


Biggest Lesson I Learned While Doing This

Technology is always changing and especially in Javascript. Things are moving so fast right now that it is impossible to know every single library, quirk or framework. What you do need to know is how everything fits in together and what each technology is trying to solve. Most importantly you just need to know it exists so you can look into it and figure it out when the time comes. Most programmers spend a lot of time on pages like Stack Overflow or researching google because there are so many resources out there. You just need to know how to look for answers and ask questions. Most of the time a programmer is spending his working day trying to understand something. The actual time where he or she is writing code is short.


Conclusion

I love focusing on efficiency. The reason most of us give up on a goal is when we don’t see results. By focusing on the things that matter, it makes learning fun. But it doesn’t end here. Learning never stops, and my goal was to get employed as soon as possible so that from that point on, everyday I am getting paid to learn.

I started all of this in January 2015. By June I received multiple offers of employment at great companies (I took a month off in between to travel…in case you were counting months). Coding gets fun more and more with each passing day and it’s even better when you get paid every day to solve problems, keep learning and develop your skills. The real growth happens when you start working on real projects with real teams. That’s why I strongly believe that you want your ‘study’ period to be as short as possible, in order to avoid debt, and being in the best environment for learning which is while working in teams. I wouldn’t even recommend freelancing to start off. You want to surround yourself in an environment where everybody is smarter than you and you are working everyday with them. From there, be a sponge and absorb all of the information.

We’re building that trunk. When that trunk gets big and strong, and the roots are all put into place. Your rate of learning new things will be exponential. You’ll form leaves of knowledge faster and faster with each passing day.

There are a few more things I wanted to mention but this post is getting too long already, so stay tuned for part 2 where I share how to interview, and impress potential employers despite your lack of experience. I’ll go over how to get a raise after 6 months at your job, and I’ll also tell you about how in the same year I started a company, and explored the world… because you should be always having fun along the way. 2015 wasn’t the year that “I gave up, buckled down and had to change careers”. it was a year of new experiences, new adventures, and new opportunity. Give it a try.

One last thing…

I created an online course: The Complete Web Developer in 2018 where I walk you through the entire steps I mentioned above if you want everything in one place, extra help or you want to support my work. It’s over 100 HD videos and 30+ hours of content. It took an insane # of hours to make. But I’m really proud of how everything turned out. I’m releasing it to the world today, and since it’s the holiday season, you can use coupon code RELEASEYA77 and the course will only be $10 (Available to the first 100 people UPDATE: Sold Out)

Update: We’ve passed 40,000 students from over 180 countries who have enrolled in 6 months. I still want to support the learning spirit, so use the coupon code KHDKA7166 for a nice discount.


Thank you for reading this far. Sorry for the long post, but if you enjoyed this post, please share, comment, and press that 👏 a few times. . .Maybe it will inspire someone to make the jump into a new career.

Follow me on Twitter and Medium if you’re interested in more in-depth and informative write-ups like these in the future!