This is a bit of a long story, but I’m encouraged going back through it and I hope it can offer encouragement to those who might need it.
TL:DR: I’m a linguist and language teacher who wanted to switch to a career that would provide more long term stability and support for my family and development seemed like a good choice so I dove in and loved learning about it. It was difficult to find a job, so I ended up using a combination of freeCodeCamp, the military, and freelancing to learn to code, grow my network, and boost my reputation. At the end of the topic, I also give some advice for leveraging fCC in a solid study routine. Good luck learning and happy coding!
Back in the fall of 2023, I was just starting my third year as a French language teacher. I was married for just a few months and my wife and I started talking about what raising kids would look like and we both agreed that it made sense for her to stay home and for me to find a better-paying job to meet the new needs of the family.
Being a middle school teacher had always been a stepping stone–my background is in academic linguistics, not education–and I had always planned on moving on to higher academia (I had just started a master’s and was a graduate assistant at a prestigious institute to get my name on some published papers before trying for a PhD), but we were quickly seeing that the payoff for that would come way too late if we wanted to start a family soon. And, as luck would have it, we ended up needing to prepare for that MUCH sooner than we thought!
Scrambling to find something, I remembered the words of my academic advisor and mentor during my time in undergrad:
If you want a good academic career, stay in linguistics. But, if you want to make money, get into computational linguistics.
I made a few big choices pretty fast: I needed more time to develop a new skill set, so I dropped out of the program after the semester ended, and I needed to learn how to code.
Big into books, I bought the very popular “Automate the Boring Stuff with Python” and followed along the first part which dealt with learning the language and some beginner concepts. Computational linguistics was way beyond what I had time to learn, so I figured I would start with the basics and try to get a job, and if I wanted to stay in linguistics, I could choose to do that when I could afford to spend time on those more niche skills.
Eventually I found my way onto freeCodeCamp (it’s not hard to find when half of my search history is “learn to code for free”). I blitzed through the first half of the Responsive Web Design cert and had a lot of fun, but decided frontend wasn’t for me and started learning Java Spring Boot to make terminal apps. I followed a great tutorial and even made some useful projects that helped facilitate odd-jobs I picked up after the school year ended.
Then my daughter was born, and I had all the motivation in the world to keep programming and refining my skills, but my odd-jobs would get in the way.
Then something happened–I don’t know if I would call it burnout, but I started not programming as much. Then all of a sudden, I noticed that I didn’t really want to continue down this route at all. There was a bit of a crisis: should I just go back into teaching? It was fun and I was good at it, I already had a few years of experience, and if I started teaching at a public school, the salary would be a little better after a few years.
Then, I enlisted in the Air National Guard.
This might seem like it was a little out of the blue, but a career in the military had actually been an option early on. My wife had been in for about 8 years at a nearby base, and her brother and dad had been in too. And it just so happened that the base which she was working had just geared itself toward a more tech-oriented mission. I would have joined earlier, but I was torn between a few different options, and this was a big choice! I started easing back into some half-hearted programming projects before a spark of inspiration caused me to examine my military options more seriously.
I thought that the only options at the base for tech were akin to network administrators and IT jobs specializing in hardware, not software, so I wasn’t as interested in pursuing it if the training and job itself weren’t relevant to the job I wanted in the civilian sector. After talking with some folks who worked on the base, it turned out there were a ton of jobs in a variety of fields in tech, not just hardware stuff, including my current job, Software Developer.
If you’ve read or listened to Quincy’s “Hot to Learn to Code and get a Developer Job”, you might remember he mentions the three things you need to get a job: solid skills, a tight network, and a reputation as a software developer. By enlisting with this job, I’d be getting paid to get all three at the same time.
So I joined and learned I had to wait longer than I thought for my training… a lot longer than I thought. Almost a year was going to go by before I would be shipping out and training for my job. And even then, I didn’t have exact training dates, meaning it could be sooner than expected, but it could also end up being a lot longer than expected. So I still had to find a job in the short term.
I had been substitute teaching at that time and, one day, after not having written very much code in a very long time, decided that while the students were busy I would give it another quick try. I wrote a tiny terminal-based wordle game using Python and I had another little spark of excitement.
Talking with some friends who already had jobs, as software developers, I sometimes expressed my frustration at the hiring process (there was a time when I was applying for a lot of software jobs). I would say something like “I know they’re getting a lot of applicants and my resume doesn’t exactly stand out, but I have the skills!” Then one day it dawned on me:
Why don’t I just hire myself?
I started to explore freelancing options very seriously. This seemed like the best option to break in during the short term, and it’s also something I wouldn’t be bound to when it comes time to leave for training. Imagine me interviewing for a developer job, saying “You should totally hire me, because eventually I’m going to be developing something with the Air Force. Also I can’t tell you what it is. Oh, and I’m going to be leaving for training for half a year. When exactly? I don’t know! Maybe soon! So, am I allowed to work from home?”
I came across a video (this one) about freelancing from a source which I remembered being really useful: freeCodeCamp. I was thrilled how in depth he was going into a lot of things I didn’t even consider. I think a lot of people view freelancing as a stepping stone to getting a “real” developer job. To me, it seemed like this could be a seriously formidable end goal.
After finishing the video, I was energized. I thought that maybe web development wouldn’t be so bad, at least relearning some of the basics. I thought to myself, “how hard can it be?” So I fired up freeCodeCamp at the beginning of this year and finished the first certificate. I had already completed a lot of it, so the basics were not at the forefront of my mind, and I realized I was terrible at HTML and CSS.
After I completed it, I was excited to move on to the JavaScript Data Structures and Algorithms course… until I realized that I wouldn’t just be doing Code Wars kata or Leet Code questions to pass the certification projects, but building layouts with them. I decided to pick a few of the Responsive Web Development projects, work through them again slowly, and make flashcards in dedicated decks on Anki, a flashcard app and spaced-repetition system I showed off to my students as a language teacher, every time I learned something new or something that looked important.
Between subbing jobs (and a lot of the time during less demanding subbing jobs) I was practically doing freeCodeCamp like it was my full time job. Some days, I would wake up a few hours earlier just so I could get in some extra time studying and building before my wife and daughter woke up. I wanted to practice all the time, but I still needed to spend a lot of good time with my family, especially if I would be leaving for training soon.
In a matter of three months, I finished the certs that I wanted (Responsive Web Development, JavaScript Data Structures and Algorithms, Backend Development and APIs, and Frontend Libraries, in that order), and figured it was time to start building some real things for real people. And this is about where I am right now: building real things for real people. For some, it’s tiny changes to websites that the owners aren’t comfortable making on their own. For others, it’s building and configuring big web apps with a lot of learning on the fly.
Soon, I’m solidifying the practice as a genuine business entity. Then it’s off to the races, expanding to newer clients little by little. And when I get back from training: government contracts!
Advice for people who are wanting to get a developer job
Odds are, if you’re here in the freeCodeCamp forum, you’re like me: someone who just needed a way to learn, probably even wanting to get a job developing software. If that’s the case, I want to end this topic with some things that I wish I would have stuck to a lot earlier on that would have gotten me much farther much sooner.
First, treat freeCodeCamp as either your main base or your only source of learning up to a certain point. If there’s one thing I appreciate in learning something new, it’s consistency, but it’s still really tempting to flutter around from course to course, especially on YouTube, learning in circles. Having one dedicated curriculum will simplify your learning and streamline your progress. My advice to you would be to stick to one provider of information, whether it’s freeCodeCamp, the Odin Project, or Leon Noel’s free bootcamp, 100devs (which Google’s search algorithm thinks is a musical artist–you can even see a list of songs). Decide up to what point you think it would be necessary to learn with them and make that your goal.
Second, use flashcards. It’s not enough to just breeze through a fCC course; you need to meet the content halfway. If you don’t remember what you’ve learned, you might as well be back on YouTube, dancing back and forth from course to course getting distracted along the way. “Oh look, a new fireship video! Primeagen has a new hour and a half long video reacting to articles? Maybe I’ll just have it on in the background!” I mentioned Anki before, and I recommend that for nearly all studying endeavors. Here’s how I used Anki with freeCodeCamp:
Try to stay organized! Every project that you choose to sit through needs a dedicated deck.
Stay on top of it! Every time you learn something new, make a flashcard. Ideally, make two or three, giving yourself less “clues” on the front of the card to lead you to the answer on the back.
Learn syntax! Many of your cards will be related to syntax. Knowing syntax well will boost your confidence as a developer. For those, I fire up a text editor (on Ubuntu Linux, just type “gedit” into the terminal and hit enter). Every time you get a card prompting you to remember some code, open your text editor and type every character. Time at the keyboard is important, especially when you’re doing your flashcards.
Study with some consistency! When I was studying the most, I would do it first thing before diving into freeCodeCamp. It was my warm-up for the day.
The third thing that I wish I would have done from the beginning is to build all my certification projects from the ground up. I started doing this on the Roman Numeral Converter, and it prepared me for real work in a big way (especially when you do it for the frontent libraries cert). It’s amazing that freeCodeCamp puts you in an editor for these projects so that you can do it totally from your browser. That way it’s totally free—all you need is a library card, you don’t even need a computer! But, if you have one of your own, do your projects locally. Make the boilerplate yourself. Look something up when you don’t know it. Copy the user stories into a .txt file and put that in your project’s root directory. Maybe even use some basic git commands. This will all help you make your projects even more your own and it will teach you a lot about staying organized and get you ready for real-world workflows.
If you haven’t already, listen to How to Learn to Code… by Quincy (it’s the one hundredth episode of the freeCodeCamp podcast). And if you’re interested in freelancing, definitely check out the video I mentioned above (this one).
Long story short… if I can do this, then YOU CAN DO IT TOO!
A river cuts through rock, not because of its power, but because of its persistence
~ James Watkinds