How I went from newbie to Software Engineer in 9 months while working full time

Photo by Artem Sapegin on Unsplash

Full Disclosure

I took a Visual Basic for Applications (VBA) course in high school (nine years ago). In my freshman engineering course (seven years ago), I learned some C, Python, Matlab, and Labview. I graduated from a good university with a chemical engineering degree and a good GPA (three years ago). I hadn’t done any programming outside of school, in high school or college, until I decided I wanted to learn last year.

Why I wanted to change careers

I enjoyed solving technical problems, but I knew I wanted to get into the business/startup world at some point. I always kept the thought of an MBA in the back of my mind, but every time I looked at the price tag of the top schools, my interest waned.

The Goal

Photo by Robert Baker on Unsplash

The Plan

Photo by Glenn Carstens-Peters on Unsplash
  1. Take an Intro to CS course to get a solid base understanding of core CS concepts
  2. Follow freeCodeCamp until I can build portfolio-level full stack web apps on my own
  3. Refactor to clean up the code, add testing, focus on advanced concepts
  4. Contribute to open source
  5. Prepare for job interviews

Month 0 - Udacity CS101, Harvard CS50

The high of making this big decision gave me a ton of energy. I would start coding as soon as I got home from work and wouldn’t stop until I went to bed. And then again all weekend. Udacity CS101 tracked completion percentage, which was a big motivator for me. I logged my completion percentage every day after coding. I finished the first 75% in 10 days. The last 25% was heavy in recursion, and it was a bit tougher for me. All in all, it took me 20 days to finish Udacity CS101.

Month 1 - Harvard CS50, Linux, 1st Meetup, freeCodeCamp

I completed CS50 about halfway into the month. I’m not going to comment too much on my experience with CS50, because I wrote an in-depth post about my experience here.

  1. Developing relationships takes a long time. Starting early means that you have connections who can vouch for you when looking for a job later
  2. Talking about programming with strangers is a great way to prepare for interviews
  3. You can learn new frameworks, tools, and learning resources from people who are ahead of you. This can influence your future learning plan.

Month 2 — YDKJS, freeCodeCamp Front End, React

I started reading You Don’t Know JavaScript, because everyone recommended it to supplement freeCodeCamp. I had to re-read several sections as it is pretty dense, but it’s a perfect resource to learn lexical scope, closures, promises, and all parts of JavaScript that you hear about and want to learn but never do because they seem difficult.

Month 3 - freeCodeCamp React, CodeClub, Starting freeCodeCamp Back End

Ultimately, I just decided I would work my way through the freeCodeCamp React projects to see how it went. That code was ugly, but it did help me understand React a little better.

Month 4 - Finished freeCodeCamp Back End, Yeggle

I worked through all of the API projects in freeCodeCamp, but I started deviating from freeCodeCamp at the Image Search Abstraction Layer project.

Month 5 - StockIT

I didn’t get quite as much done this month, as I started it off with a two week vacation to Japan and Thailand!

Month 6 - jobSort(), Job Hunt Prep

After StockIT, I rolled right into my next personal project. I wanted to make a job board that aggregated the smaller tech-focused job listing websites such as Stack Overflow, Github, and Hacker News. To add my own unique spin to it, I decided to have it sort based on the technologies the user wanted in a job and how badly they wanted each of them.

Month 7 - Testing, Job Hunting

This month I focused on touching up my projects and applying to jobs. I also wanted to learn testing and Redux.

  • a contracting DevOps/testing role at a dotcom company
  • a series B food analytics company, and
  • a fairly large and successful startup that was recently purchased by a major corporation
  • be good enough to add value from day one
  • be confident enough to convince them that I can add value from day one

Month 8 - Night Shift, Redux, Open Source, Onsite Interview

I started this month working the night shift for a 40 day stretch at my full time job - 6 days a week, 12 hours a day, 5PM to 5AM. Ugh.

Month 9 - Job Offer

Advice

Up to this point, I have mostly shared my story with some advice sprinkled in. Chances are if you’re reading this, you either are thinking about changing careers or are in the middle of learning to code with the intent of changing careers. I hope that the advice below will help you develop a plan or stick with your current plan and reach your goal.

  1. Find out what motivates you and use it to your advantage. For me, it was checklists, documenting my progress, and interacting with various programming communities. If you are not motivated to reach your goal, then nothing else matters because you won’t finish.
  2. Make goals and meet them. I would argue that you should have monthly goals and maybe even daily goals. Monthly goals to make sure you are on track to meet your main goal, and daily goals to make sure that you actually make daily progress. One strategy that worked for me was to make my daily goals the night before. That way, you can’t do unproductive work all day and feel like you made progress when you really didn’t. It forces you to compare your daily accomplishments with your daily goals.
  3. Go to meetups way before you think you are ready. Going to meetups can feel scary, but as I mentioned above. But, in general everyone is nice and willing to help. You might find people that aren’t interested in talking with you, but they are the minority and no one will be judgmental. Also, everyone loves to give advice (like I’m doing right now).
  4. Contribute to open source way before you think you are ready. When you first start programming, Github seems like this scary place that you never want to go to. It is actually very welcoming to beginners and is a great place to see good code and get your own code reviewed. If you’re still not convinced, check out my post, Why you should contribute to open source right now.
  5. Start applying way before you think you are ready. This one was tough for me because I thought I was different. I thought I didn’t need to test the market to get a feel for what to work on. I thought I would know when I would be ready to apply. I’m telling you right now. You will not know when to apply. So you might as well start now. You shouldn’t go crazy and apply to 300 companies before you learn for loops. But you should know that the best way to know what you need to learn is by applying and testing the market.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store