After logging in here for the first time in months, I thought it would be nice to quickly drop a line and briefly share the story of how I went from being a programming newbie to full stack developer. If it helps motivate any of you that are out there and in a similar position to where I was a year or so ago, then that’s great. It’s just a quick summary of the steps I went through in order to be job ready. I’ll also post links to some of the resources that I found useful that other members might want to take a look at. Edit: I’ve written way more than I anticipated, so there there’s a little conclusion at the bottom for the lazy readers amongst you!
Anyway, up until about 2 years ago I’d never written a single line of code, didn’t know what a variable was, and even something like HTML looked like a strange and indecipherable alien language to me. I ended up having to learn a tiny bit of HTML as part of some SEO activities at the company I was working for, and that’s how my interest in coding all began.
I narrowed it down to FCC, The Odin Project and CS50. In the end, I opted for CS50, as I liked the idea that it would teach me some good computer science fundamentals - which it definitely did - and expose me to a few different languages (C mostly, with some PHP, JS and SQL thrown in towards the end… although I think Python has replaced PHP now). Anyway, it took me about 3-4 months to finish it while holding down a full time job, and I learned loads throughout the course. The best things it did was give me my first taste of big ‘projects’, programs that would take a few days to build and get running, and taught me to be patient and not expect instant successes when it comes to programming.
After finishing that, I finally joined FreeCodeCamp. Just looking at my profile, it says that my first challenge completed was on Sep 29, 2016. I’d forgotten lots of HTML and CSS over the course of CS50, so the initial projects, although much simpler than the CS50 ones, took me longer than expected to make. I definitely got better with every project, and by the time I’d finished the intermediate projects, I was well into the swing of things. By the time I’d finished the advanced projects, my styling was much improved, any my JS had got loads better. I managed to build my Tic Tac Toe game using D3, which I didn’t end up learning properly until much later, and have a fully-functioning AI opponent, which I’m still pleased with to this day.
One thing, though - the front end certificate alone is nowhere near enough to get you ready for a front end developer role, unless you want the most basic of web development jobs. You don’t need to know how to build APIs to be a front end developer, but the tooling, package management and command line skills you pick up during the back end certificate are things that front end dev’s use every day of their working lives.
I skipped the data viz certificate, and decided to start with the backend certificate. Before starting I took about 3 weeks to learn the basics of Node.js. I have to be honest and say that the Node/Express/Mongo teaching material on Free Code Camp is pretty inadequate, and actually just confusing if it’s your first experience with those technologies. Definitely hit some external resources up if you’ve never worked with any of them before! I bough this Node course on Udemy https://www.udemy.com/understand-nodejs to begin with. It’s quite good at introducing the basics of Node and then Express, but there are lots of other good Node video tutorials out there, too. This MongoDB course by Stephen Grider, however, which I took immediately after the Node one, is superb. I think learning Mongo would have taken a lot longer without it, so I can’t recommend it enough. It also taught me how to write tests using Mocha as well, which is a hugely employable skill to learn, and one of the things that ultimately got me hired.
Those two resources were more than enough to start the API challenges, and it took me 2 weeks to build all of the projects. I think I enjoyed these more than any of the other projects and they were just super fun to make.
Next up were the full stack projects, and although they might have been possible to build using some of the backend templating stuff I’d learned with Node, I realised that I needed to learn React before I even attempted any of them. After gaining so much from Stephen Grider’s Mongo course (I’m not affiliated with him, I promise!), and knowing that he has React/Redux courses available on Udemy, I took the plunge and bought both his introductory and advanced React courses when they were on sale. I’m not going to lie, it took me nearly a month to finish both of them, and it was a struggle to stay motivated while watching hours and hours of tutorials and coding along… but I learned SO much from them. It was also where I got my first taste of ES6, which he bundles in withe first course. The URLs are here and here, by the way. Learning things like authentication (Passport, password salting and hashing, etc), the proper Redux flow and bunch of other things would have been so laborious without those courses that I’d rather not think about it.
After that it was just a case of combining my new React knowledge with the backend stuff I’d previously done to get the full stack apps built. Each one took at least two weeks to finish, but the most important thing was that I improved with every app that I build- I learned how to handle errors better, how to handle my API calls better, how to write better Redux actions, how to write more comprehensive backend tests, and so on. This was probably the point at which I noticed myself becoming a much better coder. I was learning from my mistakes, improving on the good stuff I’d done, and getting rid of some of the more cumbersome approaches I was taking.
If you want a decent entry-level developer job, not just working with HTML, CSS and jQuery, then the full stack projects are the absolutely necessary IMO. The data visualisation stuff doesn’t give you enough practice to be able to use React in a professional capacity, but the full stack projects are definitely adequate.
After finishing the full stack projects, and already armed with React knowledge and lots of practice under my belt, the React projects in the data viz section were a breeze to build. I was dreading getting to the dungeon crawler game in particular throughout the FCC curriculum, because it looked like it was going to be really hard, but it was fun to make, and only took a few days. The D3 stuff was fairly simple as well, as there really isn’t very much to learn with D3.
And that was that, all cert’s completed! From my first challenge on FCC to gaining the final cert took 7 months in total, and I can’t tell you how helpful this site really was. It’s actually building stuff that forces you to improve you as a developer - having to learn something is all well and good, but until you can implement it yourself and demonstrate that multiple times, then it’s worthless, really. The projects on here and the user stories that need to be satisfied are definitely what turned me from a novice coder into one that was ready to start looking for software developer jobs.
I was definitely job ready after completing the curriculum, probably across the entire stack, and it’s only through personal circumstance that I didn’t start looking for jobs immediately after finishing last May. I’d been living in South Korea since 2011, and was due to get married and move back to the UK at the end of 2017, so held off looking for jobs until then. It was quite weird once I’d finished, and I remember thinking, “what the hell am I supposed to make now?”. In the meantime, I learned some Golang and built some of the FCC API projects with Python, built all of the FCC beta projects out of sheer coding boredom then picked up React Native (again, some of Stephen Grider’s courses) and built a nice full stack mobile app using it. By the time I’d done all that another 5 months had passed and it was time to move back to the UK after 6 years abroad.
I was pretty apprehensive about starting my first dev job because my Git skills weren’t great (had never collaborated on a project, really) and wasn’t sure how many gaps there were in my knowledge. I didn’t know how good (or bad) I actually was, or if I’d have to have my hand held. It turns out that there was nothing to worry about - the three certificates here had prepared me more than well enough for the job, and I was soon offered a permanent position.
I had my heart set on a move to London, though, and this job was in another city, so when I managed to get an interview for a junior full stack job (React, React Native, Node, Postgres and Golang) that I’d applied for online, I was delighted. The interview went well, I thought, and my lack of experience wasn’t too much of an issue, neither was my lack of CS degree. If anything, the interviewer was impressed with my ability to get this far without any formal CS education, and told me that he’d seen enough good developers come from non-computer science backgrounds for it not to be an issue. I also got good feedback about my willingness to admit when I didn’t know the answer to a question, and not try and bullshit my way through the interview. I was ultimately offered the job, and even managed to negotiate up to the upper limit for junior developer salaries in London (at non-finance companies, anyway, where the pay rates are much better than dev jobs in any other industry). I’ve been there for the last few months and am learning loads all the time, getting to use my brain every day, which often isn’t the case in other jobs, and generally just loving my job.
I’m nothing special, I just enjoy coding, and was willing to put the work in and keep myself motivated to keep it up - if I can change careers, so can anyone else. Just takes perseverance and an actual enjoyment and satisfaction in building programs/websites/apps and completing them to the best of your ability.
Anyway, a quick summary of the things I’ve learned since I started my journey:
- Be patient and try and be realistic with your time expectations. It’s unrealistic to think that you can just pick up coding and have a job within a few months without attending a bootcamp. Don’t think that you’ll be job ready after the front end certificate - you might be able to get some kind of job, but probably not one that’s particularly well paid, or very challenging. The entire curriculum, from start to finish, took me 7 months, so that might be a good ballpark figure to aim for.
- Rely on external resources - FCC itself is a fine educational resource for the front end certificate but it doesn’t really cut it when trying to learn anything else. I remember doing the LearnYouNode and LearnYouMongo bits on here and being utterly confused as to what I was doing - and that was after I’d done my fair share of backend programming with CS50. The one’s I’ve linked to here have been the ones that have served me really well, but there are others (Colt Steele’s, for example) that are meant to be fantastic as well. Using resources like that for learning Node/Express, MongoDB and React will speed up the entire process, so look out for sales on Udemy.
- Controversial one, but move away writing your code in browser-based editors like Codepen. I know that the whole premise of FCC is that anyone with a browser can do the whole curriculum, but it’s simply much easier to build things in dedicated code editors. I’ve recently switched to VSCode, and would recommend that as a great place to start. The sooner you get used to using your own setup, the smoother the ride will be, I promise you.
- DO THE BACKEND CERT, even if your goal is to be a front end developer - I can’t stress this enough. I think the front end aspects of the full stack apps are much closer to modern front end development than anything covered in the front end certificate.
- Don’t worry about not having a computer science degree - some jobs will require a CS or similarly technical degree, but plenty won’t. I applied to four companies when job hunting, and only one of those turned me down based on my educational background.
- Learn how to write tests - it’s valued so highly by employers. One of the reasons I was able to get the job offers I received was because of my knowledge of testing. Very few juniors know how to write tests or use libraries like Jest, Mocha, Jade, Enzyme, Sinon, Chai, etc., so if you can, you’ll instantly make yourself more marketable than a lot of the competition. All my full stack apps had fully tested back ends. If you go down this route, it will actually speed up the development of your apps, as you don’t have to manually check to see if your functions are behaving as expected. Check Stephen Grider’s MongoDB course for a great introduction to tests using Mocha.
So yeah, this got a bit wordy in the end, but I thought it might help anyone out there that might be struggling to stay motivated, or questioning the worth of the Free Code Curriculum. It’s such a great resource, and I wouldn’t be where I am now without it. Here’s a link to my Github repos if anyone’s interested, by the way. Peace!