I finally got my Full Stack Cert!

I finally have my freeCodeCamp Full Stack certification. It was a long journey, and I’d like to talk a bit about my experience, hoping it will inspire someone!

How long did it take?

About a year and two months overall, about 9 months concentrated. Worked through Responsive Web Design and Javascript from about August to late October last year. Then took a break for University classes until about May. Thanks to the lockdown, had a lot of time during the summer to finish the course. Worked through roughly one course a month:

August 2019 - Responsive Web Design

September 2019 and October 2019 - Javascript Algorithms and Data Structures

May 2020 - Front End Libraries

June 2020 - Data Visualization

July 2020 - APIs and Microservices

August 2020 - Quality Assurance

September 2020 - Information Security

My Thoughts on the Challenges

Most Fun Challenges

  • Basic Algorithm Scripting & Intermediate Algorithm Scripting - Loved being able to work through various problem using logic!
  • React and Redux - Was really fun to bring together what I learnt to build the Messaging UI
  • Advanced Node and Express (second part) - Was really fun building a functional chat app using Socket!

Most Boring Challenges

  • CSS Grid - I remember just wanting this to end!
  • Data Visualization with d3 - I really just wasn’t interested in charts and shapes
  • Regular Expressions - felt really long and stretched
  • Managing Packages with npm - Useful, just not that interesting
  • Quality Assurance and Testing with Chai - Mostly just copying and pasting changing variable names.

Easiest Challenges

  • Managing Packages with NPM
  • Information Security with Helmet

Most Difficult Challenges

  • Basic HTML and HTML5 - These are quite tough when starting out
  • Basic JavaScript - Again very difficult with no prior experience
  • Object Oriented Programming - I remember really struggling with this. There was lots of information, and it was difficult to make sense of everything.
  • Advanced Node and Express - The challenges themselves are poorly implemented and full of bugs, so you’ll find yourself being confused a lot and having to copy and paste solutions. It also doesn’t help that Passport has really poor documentation that doesn’t explain well.

Most Useful Challenges

  • Basic HTML and HTML5 - can’t go anywhere without these.
  • Basic CSS - All the basics needed for presenting documents how you want.
  • Responsive Web Design Principles - This one is really useful for porting sites for different display sizes, the media queries was a game changer!
  • CSS Flexbox - I love this technology so much. I almost always use it for every project because it’s easy to design centered and responsive layouts.
  • Basic JavaScript
  • ES6 - The extra functions aren’t so useful, but the syntax parts are really relevant when looking at and understanding different code.
  • Basic and Intermediate Algorithm Scripting - These introduce us to thinking through various problems and solve them using code. These are often used for interviews.
  • Basic Data Structures - Very Important Introduction to Arrays and Objects
  • Functional Programming - I personally found the array stuff really useful, especially in the later parts when working with data from APIs.
  • React - Essential part of the MERN Stack! React is heavily used throughout applications, and also allowed me to transform easily into React Native to build mobile apps.
  • jQuery - Used a lot in various front ends. Even if you don’t plan to use it yourself, it’s important to understand the code and what is happening.
  • BootStrap - Again, widely used. I personally am not a fan, but it’s important to know it.
  • JSON APIs and AJAX - The core concepts of dealing with APIs which you will need a lot throughout your career. Introduces you to JSON format which is used all the time for storing and exchanging information.
  • Basic Node and Express - Essential part of the MERN Stack! This set of challenges is a nice introduction to express and setting up routes. Probably one of the most useful parts of freeCodeCamp. Challenges are explained really well here too!
  • MongoDB and Mongoose - Essential part of MERN Stack! This is a really good, introduction to the core concepts of MongoDB documents. I felt quite confident after this one. Also really liked the inclusion of Mongoose, the cleaner syntax and simplicity of using Models made it so much easier for a beginner.

Least Useful Challenges

  • Applied Visual Design - Useful at the start, but I find myself hardly using the stuff here after learning the newer libraries, and most of the stuff taught here can be found with a quick google search.
  • CSS Grid - Just my personal preference! I tend to use flexbox a lot more.
  • Regular Expressions - I personally just prefer to use Google or Stack Overflow for Regex, not worth remembering this stuff.
  • Sass - Don’t find myself using this much
  • Redux - Don’t find myself using this much
  • Data Visualization with D3 - I think this one is very specific to be useful for general web development
  • Quality Assurance and Testing with Chai - I don’t find myself using this much either. I tend to just use JavaScript methods and operators to check things. Might actually be very important in the workplace though!

My Thoughts on the Projects

Most Fun Projects

  • Build a Tribute Page - This was so exciting as it was the first opportunity to apply what I learned and create a product
  • Palindrome Checker , Caesar’s Cipher , Cash Register - I really liked the problem solving contexts of these projects. They were a good challenge!
  • Random Quote Machine , Markdown Previewe r - I liked that we had the freedom to pick and choose any technologies we learnt to create these. These also felt like proper complete apps with functionality.
  • Pomodoro Timer - Really liked the product of this, and actually use it myself!
  • Visualize Data with a Choropleth Map - This one looked really cool when finished!
  • Exercise Tracker - Was fun putting together an express application with a UI.

Most Boring Projects

  • Build a Technical Documentation Page
  • Telephone Number Validator - Basically just building a Regex.
  • Visualize Data with a Treemap Diagram - The d3 projects felt very repetitive by this stage.
  • File Metadata Microservice - Don’t feel like I learnt much here, feels very short, should have been a challenge.
  • Metric-Imperial Converter - I felt like the there was way too much testing here, and it got boring and tedious.

Easiest Projects

  • File Metadata Microservice
  • Request Header Parser Microservice - Literally just returning data from a request header, could have been done in a challenge

Hardest Projects

  • Build a Tribute Page - The image resizing part was hard!
  • Roman Numeral Converter
  • Javascript Calculator - It was really difficult figuring out the calculation functionality!
  • Visualize Data with a Choropleth Map - Impossible to do with just the curriculum. Requires searching and figuring out how to work with GeoJSON and TopoJSON.
  • Exercise Tracker
  • Sudoku Solver - Coming up the algorithm to solve sudoku puzzles is really difficult.
  • Stock Price Checker - This requires multiply async calls to databases and other APIs so it was difficult to make code execute in a specific order.
  • Anonymous Message Board - Took a really long time to complete, and had to write the tests myself.

Most Useful Projects

  • Build a Tribute Page - First Website!
  • Cash Registe r - Experience building a complex function.
  • Front End Libraries Projects - Experience and Practice with React.
  • Markdown Previewer - First time importing and using an external JavaScript library and functions.
  • Timestamp Microservice - First experience writing an API.
  • Exercise Tracker - First functional express app with a UI.
  • Issue Tracker , Personal Library - More experience building complete express apps, with MongoDB database.
  • Anonymous Message Board - Express app of large scale with lots of features.

Least Useful Projects

  • File Metadata Microservice
  • D3 Projects - Unless you’re going into data visualization.

Resources I found most Useful

Not a complete list, just what I remember off the top of my head.

W3 Schools

This is a great reference for most HTML and JS Functions. You can see what different methods do, and get a refresher on their usage.

W3Schools Online Web Tutorials

Mozilla Developer Network

Another site for a quick reference on various data structures and functions. This one goes into a bit more detail.

JavaScript

Web Dev Simplified

I love this channel. You can see how various technologies, such as passport, work with very simple examples. There’s also some great refresher videos for things like CSS Grid and Flexbox.

Web Dev Simplified

Regex101

Some of the challenges require writing complex Regular Expressions. This site allows you to write expressions, and get explained exactly what they are trying to match. You can add in some text and it will highlight the matches.

Regex101

Express Docs

Pretty much everything you need for express help.

4.x API

Alternative Passport Docs

For the passport challenges, I didn’t find the official docs so useful. These docs on GitHub explain what each function is doing quite well.

jwalton/passport-api-docs

Mongoose Docs

Great Reference for Mongoose.

Mongoose

Best Ways to Learn

Build a Side Project

Each time you learn a technology, think about where you can apply it. Practice outside the FCC course. Try and build something of your own with each technology, something you’ve always wanted to do. Don’t worry about getting stuck, there’s plenty of places to ask for help online. Not having a set of guidelines and objectives will give you practice at making decisions yourself, considering things from a user’s perspective. You are also more likely to stay motivated if it’s something you’re interested in.

Understand Each Line of Code before Moving On

In each challenge, make sure you understand exactly what each line of code is doing. If it’s not explained, look it up, find examples and understand. There’s nothing stopping you doing your own research!

Make your Own Notes

While there are lots of well written documentations, if you truly understand something, you can translate it into natural language you understand. Maybe write a paragraph or so for each challenge about what you learnt and what the solution code does.

BEST - Make Notes for Other People

This is something I started doing halfway through. It’s related to the Feynman technique, where you should be able to explain to other people things you have learnt. For this, I created written and video tutorials for each challenge and project and I published them. This is a great technique, as it holds you accountable for the information you post which requires you to ensure you have understood it fully.

There’s a great essay about it here:

Learn In Public: The fastest way to learn

In addition to this, it also provides a demonstration to future employers about the way you work through problems and builds and demonstrates your communication skills.

The main disadvantage to this, is the fact that it is time consuming.

You can find the Written and Video Tutorials I made for each challenge and project from D3 onwards here:

Tutorials - Ganesh H

Transferrable Skills I learned on the freeCodeCamp course

Problem Solving

Each Project (and some challenges) is essentially a problem, described by Tests or User Stories. I broke these problems down, understanding what is required, found the appropriate help or resources and come up with solutions (the project app/website).

This ability to solve complex problems will be required throughout my career and personal life. I’ll be expected to come up with solutions either to implement features or fix bugs. In my personal life, it would benefit me greatly to take a logical approach to solving the problems I encounter.

Perseverance

Throughout this course, I faced many obstacles that required perseverance. It was frustrating to find the motivation to keep trying different solutions. Initially I found myself giving up temporarily, but later on I was able to stay calm and not let the multiple failures affect my thinking. I broke down the problems and tackled them using logic, making small changes each time, until I eventually got the results.

I know for a fact that I will be using this skill throughout my career. Firstly, when applying for my first job I will need to make sure I don’t give up after the first few rejections. I will use my perseverance skills to keep applying with enthusiasm until it eventually works out. Secondly, when working in the industry, I will need to make sure I stay resilient when debugging code.

Autonomy

This was one of the hardest skills to master. Most of the challenges and projects, I would have to tackle alone, without motivation, since I didn’t know anyone IRL on the same course. I sought help from the forums whenever I could, but there were certain instances where only I could understand the logic of the code I had written to figure out the problem. I had to build up the ability to independently debug and find solutions without relying on others.

This skill will be critical for my future career, since there is likely no guided course or path to learn the specific set of technologies I want. Therefore, I would have to become self-taught in a lot of frameworks without guidance or supervision, and I feel like this course has helped me practice this. In the bigger picture I think this skill will help me to become less dependent on others throughout my life.

Essential Skills You Won’t Learn on freeCodeCamp Course (for now)

Version Control

Using Version Control software like Git and GitHub isn’t something taught on the course. But there’s plenty of articles and tutorials, especially on the freeCodeCamp News and Youtube Channel. It’s important to learn about branches, commits and pull requests, and version control software is incredibly useful once you get to know it.

Working in a Team

Unless you collaborate with a partner on the projects, you are likely to complete these individually. When working in a team you’ll have to adhere to certain standards and principles, especially in terms of code organisation and syntax.

Important Things to Note

It’s good to have an understanding of basic CS first

I started doing FCC after doing the first year of a University Computer Science course. Knowing the fundamentals, such as data types and structures does help a lot. This isn’t an option for everyone, but I would highly recommend doing something like CS50 or watching some basic CS Videos on YouTube. Javascript is quite nice because we don’t have to worry about things like memory, but it’s always nice to know what’s happening underneath.

Take a Break

It’s very difficult and inefficient to work if you’re bored or burnt out. Take a break, do something else for a while. You know how long you need.

Find Some Motivation

You can follow pages and Youtube Channels of other coders and see the projects they are working on to get some Motivation. Day in the Life of Software Engineer videos are also great inspiration.

Or Create It

Action can lead to Motivation. Try and set a small achievable goal to get you started, and this can often lead to continued work.

Don’t Compare yourself to Others

This is something I struggle with all the time. I see other developers on places like Twitter posting about their achievements and this makes me feel like I’m not good enough. It’s important to know that most people only post their achievements, and that you are often comparing the average you to the best of them. Also realize that they’ve probably been coding a lot longer than you. If you take the context in to account it’s far more inspirational.

freeCodeCamp by itself is not enough.

It’s a good thing. You will have to read and research documentations, and get help. This is the same for the industry.

I’d like to Thank

The freeCodeCamp Team

It’s amazing that a group of volunteers have put together a resource and curriculum to learn a full stack of coding skills in your browser for completely free!

Quincy Larson

For founding this organisation. Also loved reading his newsletter which gave me a motivation boost each week.

freeCodeCamp Podcast Team

Was really inspiring to hear talks about various people and their experiences. Knowing what others achieved helps you to realise your potential.

The freeCodeCamp Podcast

freeCodeCamp Forum Mods

For maintaining a great community to find answers and get help and encouragement. Always see them jumping in and helping, giving really good answers too.

freeCodeCamp Forum Users

For helping me out when I got stuck and to understand stuff.

Family and Friends

For Motivation, Encouragement and Support!

20 Likes

Amazing and well done!!!

1 Like

Congratulations man,

For anyone doing quality assurance, information security or the microservices certificates Ganesh has made some excellent tutorials for those projects on YouTube, they’re easy to follow and a good fallback for if you get stuck,

I finished the Anonymous Message Board a couple of days ago, took me three days, I’ll be interested to see your solution,

What’s your plan going forward?

Thanks a lot! :smile:

Thank you!

Took me a long time too, it was a hard one!

I think maybe some of the interview challenges, or attempt to build a full stack product using the MERN Stack I learned!

@ganeshh123 Congratulations. thank you for sharing

1 Like

Thanks for your wishes! :smiley:

Congratulations!! As a beginner myself, I really appreciate you wrote such a long and helpful article about your learning journey.
You are doing so many things like blogging, tutorials, side project etc along side FreeCodeCamp. If you don’t mind, would you like to share your overall timetable of a day of learning programming? Like how many hours you spent on FCC/ Blogging/ Side projects/ some other things in a day?

I feel sometimes I am stuck in the freeCodeCamp tutorial hell where I could not stop but keep doing challenges. (Plus I have no background in tech so it takes me more time to understand and solve each challenge).

And what is your next step from here?

Thanks a lot man, I appreciate the kind words.

I don’t actually do any blogging, the tutorials like I explained for me are just part of the learning process, basically just making notes.

I don’t really have a timetable, I don’t like to focus on doing X hours. I could do ‘5 hours of programming’ and only be focused or productive for about 45 mins.

For me, it’s better to focus on the tasks you want to have completed. Make a to do list of the progress you want to make that day, if you don’t complete everything, don’t worry, just move it to tomorrow or the day after. Forcing yourself into working will likely make you hate it, you don’t want the mindset where you feel guilty for not working.

For some people they might need consistency and discipline, but I find that doesn’t work well with me. Somedays I work all day when I feel motivated, other days I do nothing.

The Side Projects, I tend to spend more time because I’m a lot more motivated. I tend to focus them to solve problems that I actually have, for example, a tool to manage video game mods, or a website to display photos I have taken. That way you stay more motivated on solving the problem, and feel a lot more satisfied when you get to use your solution. You can also build the foundations of your own project, from the projects on freeCodeCamp. For example, I created a web app to help me meditate, based off the Pomodoro Timer project.

Tutorials are really good for seeing how things work, but you really want to apply it if you want it to stick. It also ensure that you understand what you learn and are not just copying out solutions. While doing the fcc challenges, build a side project alongside and apply what you learnt in each challenge (even if it doesn’t quite fit).

For example, when doing the CSS course have a side project like making an old 90s website look more modern, or maybe making a desktop website mobile-friendly. It doesn’t matter what the project is, just make sure it’s something you enjoy.

In terms of background in tech, you’re absolutely spot on. It will just take you more time. I think once you grasp the fundamentals like functions and data structures, it will become easier. Thankfully, you have the internet, it’s crazy the amount of helpful content available for free online, especially YouTube, and there are tutorials that explain everything to the lowest level. Like you said, all you need to give is your time.

Right now, integrating the stuff I learnt from this course into my CV. I have my Uni classes starting again, so gonna be focused on that more. In terms of freeCodeCamp, probably the interview challenges, because they seem like fun problem solving challenges!

Hope some of those answers were helpful, Good Luck with your journey!

2 Likes

Thank you for your long reply ganesh! It’s very helpful to me. Good luck to your future!

1 Like

Congratulations for your certificate and good luck for the next step.
I agree with you, => fCC and its community are the best.
Thank you all

1 Like

Thanks man, you too!! :grin:

1 Like