During the past year, I finished the entire freeCodeCamp curriculum while working full time as a teacher. In this article, I will outline how I managed to do this. Particularly how I organized my time and what supplemental material I used.

Background

First, the back story. I wasn’t completely new to coding. I grew up in a small tech company.

My father founded his own company before I was born, where they carried out different activities within tech, such as fixing computers, setting up Internet connections and networks for other companies, teaching computer courses, and building administrative applications for companies. It was a small town, so they were basically the go-to “tech guys” for the whole town.

The company’s offices were in our house, so I literally grew up among computers and people who liked them. I started playing around with Visual Basic as a kid (one of the guys in the company taught me how to use it) and I spent all my free time online, chatting with fellow nerds.

When I was about 12, one of those nerds emailed me a web development manual (a huge .txt file that basically dealt with HTML) and I used it to build my own fan site. It even had one of those cool visit counters.

I hosted it on Geocities, got a free short URL, and listed it on Yahoo and AltaVista (these were the biggest ones at the time).

After that, life happened and I completely gave up on the idea of being a programmer, as the circumstances demanded for a more “realistic” approach. I won’t go into the details now, but basically I had to give up studying and get a job.

I went on living my life. I built the occasional website for my dad’s clients, and then eventually decided to start teaching English, which was something that came easy to me, and basically forgot all about web development. Until 2016 that is.

How I decided to switch careers

I love teaching. It’s a rewarding profession, interesting and fun. But it has its downsides. At the beginning, everything felt like a challenge, but after so many years doing it, I began to feel that I had no purpose. That I wasn’t growing or learning anymore.

I was feeling stuck. Like my job was exactly the same year in and year out. I was just going through the motions. It also didn’t offer a lot of opportunities to relocate, which is something that became very important for me later on.

In 2013, I met my husband, and the next year we went on a three month backpacking trip to Europe, which is a whole different blog post, but basically it was extremely low budget and we had an awesome experience. We loved Europe and we decided we would come back for another long trip.

Time passed, we did other stuff, and then I found Codecademy and started to play around with it, and to toy with the idea of becoming a full-time developer. I already had some experience building websites with just HTML and CSS, but no JavaScript. I was reading lots of success stories online, but I still didn’t consider it a real career, not by a long shot.

Meanwhile we were planning out next long trip, saving money, planning and so on. I was working as a freelance translator more and more, super involved with my career, translating cool stuff like novels and poetry. 2017 came and we went to Europe again this time for two months.

There we met a bunch of developers. It was crazy. Every single couch surfer we met seemed to be in IT somehow, either as a software product manager, a developer, a tester, and so on. They all encouraged us to get into tech. By that time we had already decided we wanted to move to Europe so a lot of them told us: “You could find a job here. Developers are in demand here, we need a lot of them.”

Before the trip ended, we made the decision to sign up for a 2 year technical certificate in a newly founded technical university near our hometown. The program was mainly Java so when we came back, we started a Java course in Cousera. The first module was actually a JavaScript course, so we actually got hooked with JavaScript immediately.

While we learned JavaScript, we waited for the beginning of the school year in March 2018. There were only 50 spots for the Uni, so we got super dedicated and learned beforehand. We went, took tests, passed courses, and then we had to wait until they decided. We got the highest marks among all the candidates, but those marks didn’t make a difference. The spots would be assigned via a lottery system. My husband got in and I was left out.

He decided he preferred to learn by himself, he wasn’t that interested in Java anymore because he was hooked on JavaScript, so we started learning on our own.

We started with Codecademy, but it was too hand-held for us (we didn’t have Premium accounts). Somewhere we read about freeCodeCamp. And we started it, very slowly at first (the first certificate took me months to get, admittedly in the middle the curriculum was changed and I dropped my laptop and had to get it repaired). After the summer holidays ended and I went back to full time work, things got hard.

Working full time and doing freeCodeCamp at full speed

It wasn’t easy, I won’t lie. It helped that most of my friends and acquaintances don’t live near me, and I live in a small town that doesn’t offer a lot of entertainment opportunities. In that sense, programming was a life saver. I had something fun to do, and it was addictive so I could kill hours of boredom with it.

So that helped a lot when dealing with the amount of hours I spent doing mental work (teaching and studying).

The first certificate took months, partly because I was waiting to get into Uni and partly because I was working 10 hours a day for the first 3 months of the school year.

Unfortunately I couldn’t just quit my job and study full time, since I needed to pay the bills, so I had to get really good at 3 things:

  1. Time management
  2. Discipline
  3. Organization

Time management

I started work at 7 AM, so I started getting up at 4:30 AM on most days. I started the day with freeCodeCamp challenges and coffee. Sometimes I would also read from a book or do other tutorials, depending on what I was working on at the moment. I also studied during my lunch break and after work, but I came to terms with the fact that I wasn’t so productive during the week because of work. So during the week I did mostly short challenges, reading, and so on. And I worked on projects on the weekends, holidays, and free time.

If I had 30 minutes, I’d read 30 minutes. If I had 15, I did some study for 15 minutes. I employed every single free moment of my day to study.

On Sundays, I would meal prep most of my meals for the week so I didn’t have to spend time cooking and I didn’t have to end up eating unhealthy stuff. I also planned and gathered everything I needed for work for the week, so I didn’t need to spend extra time besides the normal work hours.

Luckily after June, my work hours were reduced from 10 -12 to 8, so I was now working a normal schedule and there I started to pick up the pace.

Discipline

You will have to study even on days you don’t feel like it. Here is where motivation also plays a big role, but discipline is important — especially if you’re like me and get distracted a lot with social media and cat videos.

The best tip I can give you to fight the temptation to read articles online is this: if you come up with a question in your head like “how do planes fly?” (which is usually the type of question that gets me carried away and sucks me in for 30 minutes), write it down somewhere and promise yourself that you can read all about it after you finish what you’re doing.

99% of the time you won’t care anymore, because those questions just pop up in your brain because it wants to get distracted. Push through and you will beat it.

Another aspect of discipline is having to choose study over other things. This is the not so fun part. I had to give up on many, many things I enjoyed to favor studying, and I can’t wait to be able to go back to them. I did it just because I wanted to become a developer as soon as possible (see Motivation below), but even if you’re not in a rush like I was, you might find that you spend a lot of time doing things that, even though they’re enjoyable and nice, take up too much of your time.

You will have to prioritize and make hard choices.

Motivation

I had a very strong motivator which was becoming a developer and moving to Europe. This was my goal for a long, long time and I reached the point where I was getting frustrated that I wasn’t getting it. All my friends left town, I have virtually no family here, I felt isolated and wanted to leave.

That’s what pushed me. It felt like a fire beneath my feet, I felt I had no choice. You need a strong motivation to do radical changes. I don’t know about you, but I’m a “don’t fix what isn’t broken” kinda person, so it’s really hard to get me to do things just for the sake of doing them.

My hobbies are all very practical and productive: gardening, yoga, cooking. I need to have a reason to do them (I want free veggies, my back hurts, I’m hungry). If you’re anything like me, you will need to find a carrot to keep you going.

Spend some time thinking about this, what is it exactly that you want to accomplish by finishing freeCodeCamp? What do you want to change or get in your personal life through it?

The Curriculum + Supplemental resources

The following are some of the supplemental resources I used on my freeCodeCamp journey. Bear in mind this is not an exhaustive list because I did tons of Googling, and that some of these courses are not free.

Responsive Web Design: This was the part that I already had some experience with, so it was easy and fun. I used some supplemental resources, especially for Flexbox. My favorite place for this is Interneting is hard.

JavaScript Algorithms and Data structures: Once I got to the JavaScript modules I got hooked. Everything was super fun, I learned a lot and I was eager to put it into practice.

For this section I used books, mostly. I already had enough exercises with freeCodeCamp, but I needed more in the way of explanations. Beginning JS has tons of exercises as well.

By the time I reached this section, I also joined 1 Million Women to Tech’s (1MWTT) Summer of Code program. I learned basic Python and basic to advanced JavaScript which helped a lot, especially with Promises.

Learning Python also helped me reinforce some basic programming concepts. I seriously recommend that when you feel confident with JavaScript, you try a new language, just its basic concepts. You will be way more comfortable afterwards once you know how to do the same thing with different tools.

JavaScript Frameworks: This section was great too as it gave me a foundation in React and Redux. I had been already following a React course on Udemy, React 16.6 - The Complete Guide (incl. React Router & Redux).

I highly recommend this course and others by the same author. He’s incredibly thorough and his explanations are awesome. This was one of the few Udemy courses where I actually followed along the project that he makes: I normally watch the videos and apply the principles to whatever I’m working on.

On 1millionwomentotech we had a React week that was mostly React native and then I started playing around with it. By that time I also started working on my side project with my husband, which we decided was going to be a PWA with React.

I cannot stress how important it is to build something of your own from scratch. I have learned way more in a couple weeks building our app than I have learned with any course or tutorial.

APIs and Microservices: This section was a big revelation for me and changed everything. Up until that module I was certain I wanted to be a front-end developer, but after learning Node.js I started thinking about being a back-end or Full Stack developer. Building APIs is just so much fun and you see results so quickly. I started building my first small Full Stack projects and I got very excited.

Some of the resources I used:

During this time I was also volunteering for “1MWTT” and I was requested to build a Probot app for on-boarding volunteers with Node. This also gave me some practice with Node, which was great fun.

QA and Information Security: This module was also an eye opener. Up until then I had never ever written a single test in my life. Now I love writing tests, and I even got super interested in Test Driven Development.

I mostly used the docs for this section but then I decided to test my front-end as well, and I found this amazing course on Udemy that I cannot recommend enough. The instructor is by far the best instructor I’ve ever seen on Udemy. I cannot wait to consume whatever other courses she releases in the future.

- Chai docs

- React Testing with Jest and Enzyme

Data Visualization with D3: This was the hardest certificate, hands down. The explanations were good, but once you get to the projects you find out that the challenges only cover the first project, and you’re kinda on your own for the rest. And there aren’t a ton of good resources online. I mainly read the docs and used tutorials. Here are the resources that finally got me through this certification:

- D3.js Tutorials by d3Vienno

- D3 documentation

Tips to finish the curriculum

To sum up, these are the things that helped me the most in accomplishing my goal of finishing the curriculum:

  • Use the curriculum as a roadmap, but supplement with other resources
  • Don’t get stuck for long: ask questions, Google, pair-program.
  • Set realistic goals for each day and week. Don’t beat yourself up if one week you’re slower: life happens. Don’t let it throw you off-course.
  • Keep your motivation in mind: it’s what will push you through the tough days.
  • Prioritize: you will have to cut down on the time you spend doing other things.
  • Don’t forget to take days off. They are vital to the learning process. And get enough sleep!

After freeCodeCamp, I felt a bit lost. This was the roadmap that guided me through my journey from teacher to developer.

After a few days of reflection and planning, I devoted myself to my side project which I’m building with my husband. We’re learning and having fun, and we’re very excited about it.

And yes, I did get a job offer right after finishing the curriculum, but more on that on an upcoming article.

All in all, I couldn’t have learned all that I have learned so quickly had it not been for freeCodeCamp and I’m extremely grateful to everyone who makes such a wonderful project possible.

If you feel the same and are able to give back, please consider donating to freeCodeCamp here.