Categories
FreeCodeCamp

I completed FreeCodeCamp….. Was It Worth It?….. Did it prepare me for the job market?

A year ago I finished FreeCodeCamp by completing all of the sections and projects that they had at the time. I wish an article like what I am sharing now had existed when I had first started FreeCodeCamp. It would have helped greatly to determine what I would actually be getting out of completing it. My goal for doing it was to gain the skills necessary to get employment as a developer. Some things I want to share are: What did I really learn?, Did it prepare me for the job market?, What did I get out of the projects?, Was it worth it?

If you’re not aware of what FreeCodeCamp is; it’s an open source learning platform for learning to code, kind of like a traditional coding bootcamp, but it’s all self taught. It was not easy by any means, but it was doable to finish the projects. There were 30 projects to complete to get your full-stack developer certification. Those 30 projects were split up into 6 sections. All you get for the projects is a user story(a list of requirements for what your project should do). When it comes to the projects there are no tutorials, no code along sessions, etc. You have to read the project requirements and build the projects to spec. There are some learning modules to help you learn certain technologies, but they are optional to get your certifications. The estimated time to complete all of these sections was a whopping 1800 hours. Based on my experience, and especially if you are new to coding, that is realistic. Since I have completed FreeCodeCamp, they added 3 new sections for Python/Data Analysis, but I won’t cover those here.

TLDR: Now that you have an understanding of the structure and time involved you can skip to: “Was it Worth it?”, if you are not interested in the details of the sections and projects.

Sections and Projects

Here is a breakdown of the sections and projects. I will highlight and go into detail on just one project from each section since the others in each section will be similar. Please note that I have left these projects and my code as the originals, many of these were done when I was brand new to coding, but I left them as they were so you can see my actual coding journey and progression.

Responsive Web Design Certification: HTML and CSS

This is the first section of FreeCodeCamp. This section only comprises of HTML and CSS. The optional learning modules are quite good for understanding how to use HTML and CSS together.

Time Estimation: 300 hours

Projects:

  1. Tribute Page
  2. Survey Form
  3. Product Landing Page
  4. Technical Documentation Page
  5. Personal Portfolio

Technical Documentation Page: Build out a page like something similar to what you might see on MDN(Mozilla Developer Network) or W3schools.

Project/code: https://codepen.io/Codemaster45/full/WymRvP/

If you want more information about this particular section read my article here: https://codingwithcolton.com/how-to-complete-freecodecamps-responsive-web-design-certification/

JavaScript Algorithms and Data Structures Certification: JavaScript

This section has you working with ONLY JavaScript. So you won’t be using JavaScript to manipulate HTML and CSS just yet. The optional learning modules can be difficult if you are new to coding. The projects are 5 algorithms that you need to complete. 100% JavaScript code. Please note this was my original code when I was brand new to coding and does not reflect my current skills, try not to judge me to harshly eh?

Time Estimation: 300 hours(if you go through all the learning modules) if you already know JavaScript you can complete just the algorithms quickly.

Algorithms:

  1. Palindrome Checker
  2. Roman Numeral Converter
  3. Caesars Cipher
  4. Telephone Number Validator
  5. Cash Register

Caesars Cipher: Values of letters are shifted 13 places.

function rot13(str) { // LBH QVQ VG!

let alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y","Z",];
let normalIndex = 0;
let rotIndex = 0;
let shiftIndex = 13;
let negShiftIndex = -13;
let arr = [];

for (let i = 0; i < str.length; i++) {

  if(str[i] == "A" || str[i] == "B" || str[i] == "C" ||str[i]== "D" ||str[i] == "E" ||str[i] == "F" ||str[i]== "G"||str[i]== "H"||str[i] == "I"||str[i] == "J"|| str[i] == "K"||str[i]== "L"||str[i] == "M"){
normalIndex = alphabet.indexOf(str[i]);
rotIndex = normalIndex + shiftIndex;
arr.push(alphabet[rotIndex]);
  }

 else if (str[i] == "N" ||str[i] == "O" ||str[i] == "P" ||str[i] == "Q" ||str[i] == "R" ||str[i] == "S" ||str[i] == "T" ||str[i] == "U" ||str[i] == "V" ||str[i] == "W" ||str[i] == "X" ||str[i] == "Y" ||str[i] == "Z") {
normalIndex = alphabet.indexOf(str[i]);
rotIndex = normalIndex + negShiftIndex;
arr.push(alphabet[rotIndex])
    }
else{
  arr.push(str[i])
}
  } 

  let joined = arr.join("");
 
return joined;
}
// Change the inputs below to test
rot13("SERR CVMMN!");

If you want to know more about this section read my article: https://codingwithcolton.com/freecodecamp-javascript-section/

FRONT-END LIBRARIES CERTIFICATION: React, Redux, jquery

In this section you will learn about creating some front-end projects. No databases, no servers etc. This section has you jump right into working with React and Redux as well as introducing you to jquery. The projects are not geared towards being like traditional websites(like a company landing page), but rather they are projects that have some type of a function like a calculator etc. FreeCodeCamp completely skips building websites with Vanilla JavaScript, HTML, CSS being used together. So you never learn about DOM manipulation(huge mistake in my opinion). You just jump right into using React to build your projects, and you never get to learn the fundamentals unless you look elsewhere. The projects you build don’t have anything to do with solving a business problem(also not good if you are trying to get a job), but they will get your feet wet with React and I did have a lot of fun building them.

Time Estimation: 300 hours

Projects:

  1. Random Quote Machine
  2. Markdown Previewer
  3. Drum Machine
  4. JavaScript Calculator
  5. Pomodoro Clock

Markdown Previewer: Use something called Markdown that uses a simple formatting syntax to accomplish the same thing as HTML.

Project: https://coltonhibbert.github.io/markdown-previewer/

Code: https://github.com/ColtonHibbert/markdown-previewer

If you want more about the front-end libraries section read here: https://codingwithcolton.com/how-to-complete-freecodecamps-front-end-certification/

Data Visualization Certification: D3.js a data visualization library

This section has you jump right into data visualization by building charts and graphs. The D3 library is well suited for this. You will be using Vanilla DOM manipulation for this section. The learning module for D3 is good and will teach you the basics. You will need to find other sources to teach you about DOM manipulation. Based on my area if I were to look up software developer jobs there might be 1200 on indeed. Only 5-10 will be looking for D3…. although other forms of data visualization might have a few more positions. I think data visualization is important, but that is something to keep in mind.

Time Estimation: 300 hours

Projects:

  1. Bar Chart
  2. Scatterplot Graph
  3. Heat Map
  4. Choropleth Map
  5. Treemap Diagram

Choropleth Map: Build a map that uses differences in shading or coloring to represent differing values or averages.

Project: https://coltonhibbert.github.io/d3-chloropleth-map/

Code: https://github.com/ColtonHibbert/d3-chloropleth-map

Read more about this section: https://codingwithcolton.com/freecodecamp-data-visualization/

API’S And Microservices: Servers, API’s, Databases

This section is where you start working with the back-end of web development. The optional learning modules are lacking in my opinion and I had to go elsewhere to understand how the back-end works. The projects are all geared towards performing a few simple tasks. The cover some of the basics with Databases and doing Create, Read, Update, Delete. The projects are not flashy.

Time Estimation: 300 hours

Projects:

  1. Timestamp Microservice
  2. Request Header Parser Microservice
  3. URL Shortener Microservice
  4. Exercise Tracker
  5. File Metadata Service

URL Shortener: Visiting a shortened URL will redirect you to the original link.

Project: https://colt-url-shortener-node.herokuapp.com/

Code: https://github.com/ColtonHibbert/url-shortener-node

Read More about this section: https://codingwithcolton.com/my-experience-completing-freecodecamps-apis-and-microservices-certification/

Quality Assurance and Information Security: Servers, Databases, Testing, Advanced Node.js/Express, Helmet.js, and more

This section was combined when I went through FreeCodeCamp, but now the Quality Assurance and Information Security are split up. The learning modules are optional for this section as well. The topics covered in the module section are are all important, but in my opinion you need exponentially more knowledge and context than what is provided. I had to go elsewhere to understand these topics. For the projects: you will build the projects and then you will build your own unit and functional tests to make sure all of your back end routes are working correctly. You will also take security measures to start making safe applications. The projects are not flashy. For the Quality Assurance Section 3/5 projects are still the same. For Information Security 2/5 are the same.

Time Estimation: 300 hours for the old certification, now with them being separate, that figure is 600.

Projects:

  1. Metric Imperial Converter
  2. Issue Tracker
  3. Personal Library
  4. Stock Price Checker
  5. Anonymous Message Board

Personal Library: Manage a list of books. You’ll need a database, the server code, and yep you guessed it… testing code as well.

Project: https://colt-fcc-library.herokuapp.com/

Code: https://github.com/ColtonHibbert/fcc-library

More about this section: https://codingwithcolton.com/my-experience-completing-freecodecamps-quality-assurance-certification/

Full-Stack Developer Certification:

After Completing all 30 projects which take an estimated 1800 hours to complete I earned the full-stack cert.

Was it Worth It? Did it prepare me for the job market?

My entire goal for learning to code was to gain employment. So I am going to share my experience through that lens. Some of the advantages of FreeCodeCamp are that it has structure, a good community, and it’s a free resource for people who may not have good access to learn otherwise. So if you are just wanting to learn how to code or get your feet wet, and you don’t need a job anytime soon, then it is a good resource. I appreciate everything that FCC is doing in the world, but if you want to get a job…. buckle up, because I’m going to be brutally honest. I’m assuming that 99% of people learning to code would like to eventually get a job. For me to get the full-stack certification, it no joke took at least 1800 hours to do that(learning and projects). That is basically 1 year full time. 1 year! FreeCodeCamp has on their front page that 40,000 of their students who graduated from their setup have gone on to get jobs. That is good, but the question that needs to be answered is: Was that directly because of FreeCodeCamp or was there more involved?

In my experience, FreeCodeCamp is very time heavy, and at the end of the day, the projects that you build are not suitable to impressing employers, solving business problems, or building websites like you actually do out in the wild. I finished the Full-Stack cert because I believe in finishing things, and I also thought that just by fighting through and finishing it would prepare me for the job market. Imagine spending a year to realize that none of the projects are suitable to show on my portfolio(not even close to being suitable). I know this by comparing the projects to my own personal projects and also seeing other portfolios of developers that are out there on the market. When I first started my journey, I had no idea that this would be the case. I was under the impression(From the picture FCC paints as well as other sources on YouTube, etc) that if I finished then I would just automatically be prepared to get employed. Nope, not in my experience. I can’t speak for anyone else. I know FCC is not being underhanded or anything, I am just giving my experience.

In my experience the things that have been helping me get interviews are having a good looking portfolio and good personal projects(not FCC projects) plus good skills/knowledge. I feel that whether you do FCC or not, that you STILL need good personal projects. These projects might take you months to build. They should be visually impressive and should be solving some type of a real world problem(ideally a business problem). My time spent on working on my own personal projects has been very well spent. So if you want to get a job, why spend a YEAR(yikes) working on FCC and then afterwards still need to spend months or longer building personal projects? Why not just start working on your own personal projects right away? You will be building something relevant to put on your portfolio and learning the direct skills you need to get a job. If you still need to learn, there are courses you can get online(Udemy, etc) that can teach you way faster and in more depth than FCC can. That was the case for me. FCC gets you right into working on modules projects and modules and projects and so on…, but the way it is done is time consuming and will take you right down the rabbit hole into things that don’t translate well into the job market and projects that won’t help your portfolio.

I have done a LOT more than just FreeCodeCamp. FCC has only taken up a portion of my overall development. I’ve done an 8 month internship, I am close to getting my Associate’s in Applied Technology, I spend a ton of time teaching myself, and I have spent a lot of time working on my own personal projects. For me, software development has been a lot more involved than I had originally thought, but it has also been more rewarding. So whether it’s been an online course, FreeCodeCamp, a degree, or something else, the thing that has helped me understand the most how to actually do development has been working on my own projects. It has helped me the most to get interviews and in the interviews themselves by giving me chances to do demos and giving me things to talk about. It took me going through FCC, getting close to achieving my Associate’s degree, getting internship experience, and much more for me to realize that building my own projects is actually what matters. In my experience, all that other stuff is just brownie points.

I hope what I have shared has been of service to you. Good luck out there on your coding journey.