How to Learn to Code for Free – freeCodeCamp / Quincy Larson

source

Hi! Caleb here. Have you heard of freeCodeCamp? freeCodeCamp is a nonprofit dedicated to teaching people to code for free and and helping people get development jobs. Not only is it free, but the curriculum is extremely comprehensive teaching hands on responsive web design, front end development, APIs, data management, algorithms, source control, data structures, and more.

If these technologies are frightening or unknown to you, this blog will help you understand the big picture of web development, how to code, and what you should expect going through the freeCodeCamp curriculum.

freecodecamp-learn-to-code-for-free

Quincy Larson founded freeCodeCamp in October of 2014. In the years following this, freeCodeCamp has grown to be one of the most successful learning platforms with an incredibly strong community. I had the privilege of interviewing Quincy once on full stack development and now on what it takes to learn to code and how to be successful. Quincy is an intelligent and humble guy and I’m glad to have him on this channel. We start with some general tips and career advice and then do a deep dive of the freeCodeCamp curriculum. Here’s is the interview!

Quincy, Introduce yourself

Hey everybody, I’m Quincy! I’m a teacher by training. I spent 10 years as a teacher and school director. I then learned to code in my 30s. I realized how powerful coding was and I decided that I should take my teaching skills and turn them towards teaching technology. So I created freeCodeCamp.org. Now, through freeCodeCamp, we’re helping millions of people learn to code and get developer jobs.  

What is your suggested strategy for me to get a software engineering job or start my own technology company?

The most important thing is to practice a ton. Getting a job requires good interview skills, you have to be able to put your self out there, and be resilient to failure. To actually ace the coding interviews and get a good job you have to really put in the time and energy practicing and learning to code.

I encourage people to spend as much time as possible building projects, going through algorithm puzzles, and learning as much as possible.

An example of freeCodeCamp’s hands on exercises

As you’ll find out later in this article, freeCodeCamp focuses on 100% hands on learning. In addition to the curriculum exercises, freeCodeCamp regularly shares resources outside of freeCodeCamp where you can learn more theory behind the technology (such as through MIT OpenCourseWare).

How long does it take for someone to go through the freeCodeCamp curriculum?

Very few people have completed everything because usually they get a job before they do. If you were an absolute beginner and haven’t spent a lot of time programming, we estimate that each of the six certifications will take 300 hours. That’s 1800 hours total. Assuming you’re learning full time (40 hours a week) it could take you four months.

From your perspective, what are some of the things new students can do to help themselves perform better?

I think the biggest thing people struggle with is that they’re not used to getting immediate feedback that says “you’re wrong!” and pointing out where they went wrong, like the experience you get with coding. 

There is a psychological barrier of understanding that I have to get the code exactly right and the computer is not going to afford me much leniency at all.

This is in contrast to say, an English composition class in a university. You may submit an argumentative essay and the professor may be lenient in the grading, forgiving mistakes or correcting without taking off points.  

When coding, an issue in the code can cause the software to crash, which is hard, immediate feedback. 

In addition to these challenges, the career path for a software developer is not a clear path with obvious progression. It does not feel as concrete where you’re doing. This can be a big hurdle for people, but it’s just another psychological hurdle. This is not an issue with innate ability or access to resources, but rather whether or not you can keep yourself motivated, sitting down and cranking out code and learning. 

Do you believe coding has a strong calling for self-starters and people who do not fit the status quo? Can anyone succeed with coding?

I think anyone can succeed with coding.

Software development does not have a traditional career path. Anybody at any period in their life can become a professional software developer and leverage those skills to become an entrepreneur, start a startup, or rise in the ranks of a tech company or other organization.

Because anybody at any time can learn to code, it absolutely attracts a lot of those people who are otherwise frozen out of the knowledge worker positions that society exalts. It absolutely does draw those people, but they’re not the only people that can succeed in software development. I firmly believe that anybody who is sufficiently motivated can sit down and learn to code and go out and achieve great things. 

Do you consider free online learning a replacement to a traditional bachelor’s program? Or a supplement?

I see it as a supplement in some cases but in other cases it’s a substitute. I know 100s of developers who didn’t finish university and are working as developers. Initially maybe there was a slight penalty in terms of their compensation or what level they could enter the field at, or what kind of companies they could get jobs at, but once they got past that it didn’t really matter.

A few years out, there is very little differentiation between the career trajectory of people who did go through a four year degree and those who didn’t.

Should I go to University?

If you can afford going to university, do it! But I would not build your entire life around the notion that you have to go to a university. I don’t think that’s necessarily the case any more. I would definitely not encourage people go to a private university where they’re going to wrack up a ton of student debt, even if it’s a prestigious university. It’s better to not have the student debt and have the flexibility of doing things in your twenties and thirties where your entire life isn’t structured around paying off this debt that will follow you even through bankruptcy. 

Should you go to university? If you are high school age and you have the resources, absolutely, I’d strongly recommend you go to university. Should you go to university of you’re in your mid twenties? Probably not. 

What if my degree is not in computer science?

If you have a university degree that’s not in computer science, I wouldn’t recommend going back and getting a master’s in computer science to compensate or trying to get a second undergraduate degree. I would just accept that you have major that is not directly relevant to software development and move on. 

 A computer science degree is a huge badge, but if an organization insists that you have a computer science degree, keep looking, because there are plenty of organizations that don’t.

What degree should I get if I want to code? Computer Science? Software Engineering?

If you are going to get a degree, computer science is by far the best degree to pursue. Even more than software engineering. From all of the data I’ve looked at personally, computer science is the more flexible, superior degree, allowing you to go into any field.

Do freeCodeCamp students struggle more with concepts or applying concepts to actual code?

freeCodeCamp’s curriculum is 100% coding. It’s all applied skills. If you look at the different skills covered in the curriculum, they almost all start with applied. There is an entire theoretical area of these things that you should also get exposure to, but interactive coding isn’t necessarily the best place to learn theory. Because of this we often publish huge lists with free courses available from MIT, Stanford, and other traditional, lecture based courses. 

Here is an example from the freeCodeCamp Medium. 
The 50 Best Online Courses of all Time (image from article).
Here is an example from the freeCodeCamp Medium.
The 50 Best Online Courses of all Time (image from article). 

The curriculum

What are the major sections and topics? 

The way we built the curriculum is to have each certification be about 300 hours. That is a rough estimate assuming you have no programming experience. Some people may take longer and they shouldn’t feel bad about it because it is a lot to digest. 

We have six certifications and if you claim all six then you can also claim the full stack developer certification which is the ultimate certification. 

Certification 1 – Responsive Web Design

First people learn responsive web design which starts with basic HTML, HTML5, CSS, applied visual design, accessibility, responsive web development principles, and popular CSS tools that are now native CSS (flexbox, CSS grid).

At the end of every certification (or whenever you want to), there are five projects. You have to build those projects and get all of the tests to pass.  If you do, then you get the certification.

Let’s say, hypothetically, you just want to get the certifications, you don’t need to actually go through any of the coding challenges. You can go straight to the projects and see if you can build them.

Even though it’s a 300 hour certification, if you are very fast you could get it in 10 or 20 hours by doing the projects real quick.

Certification 2 – JavaScript Algorithms and Data Structures

After the responsive web design certification we have a javascript algorithms and data structure certification, which is focused on coding. You start learning basic JavaScript ES6. ES6 is a more general name for ES2015, 2016, 2017, 2018. ES6 is just the general term we’ve come up for the newer features that are added to JavaScript.

We teach regular expressions. We hand them a loaded shotgun pretty early on in the JavaScript algorithms and data structures certification, but then we immediately teach debugging, which should help a little bit. 

Then we dive into the data structures. The main data structures are the ones that are native to the scripting languages like arrays, key value pairs, and objects. We don’t go too into complicated data structures here, but save them for the coding interview prep session which we’ll touch on later.

We then go into algorithms. These are mostly coding challenges that teach you algorithms, such as coding a cash register that accepts money and provides change. 

We cover functional programming, object oriented programming, and the projects themselves will keep you busy. For example, we go over Ceasar Cypher which is probably one of the most common computer science assignments ever. We also build a palindrome checker and a telephone number validator to really strengthen your regular expression skills.

This is a great place to start if you’re not too interested in learning front end technologies. There are no dependencies between the JavaScript certification and the responsive web design certification. You do not have to take one or the other first, so you can start with either.

We recommend doing the responsive web design first because HTML and CSS are more forgiving than JavaScript and you can visualize the output of your code rather than just seeing a console output or test output. 

Certification 3 – Front End Libraries

We then have the front end libraries certification – bootstrap, jQuery, SASS, React, Redux.

There is talk about whether or not jQuery and bootstrap are necessary. I think these are tools that make things easier, allowing you to quickly get something up and running.

We cover a lot of other front end libraries and you’ll build some projects teaching you how to use these libraries. 

Certification 4 – Data Visualization

The 4th certification is the data visualization certification. You learn D3.js, which is an amazing library for doing data visualization. A lot of people wonder if this is that important that it needs it’s own certification. Personally I believe that visualizing data is going to become more and more important. We’re generating more and more data. It’s becoming harder to describe this data in words. By being able to create interactive visualizations you can communicate so much to people and increasingly user interfaces are using visualization (such as twitter analytics).

Certification 5 – APIs and Microservices

After data visualization we get into back end development – APIs, microservices Certification – NPM, Node.js, Express.js, MongoDB, and Mongoose.

Instead of Mongo you could just as easily learn Postgres and SQLize, which is a the JavaScript tool for working with a relational database. This is an example of an ORM (object relational mapper).

We chose MongoDB and Mongoose because you don’t even need to learn SQL. You can write your queries in JavaScript. It’s much more forgiving and less work not requiring you to write the migrations needed for a relational database.

I think if you’re building a little project, MongoDB is a great place to start. I have my document database, I can throw whatever in there and worry about it later. If you’re going to operate at huge scale it may makes sense to use a traditional relational database.

With freeCodeCamp we have millions of users and it’s all being supported with MongoDB.  We actually have a sponsor – mLab – a place where you can get a hosted cluster of MongoDB. They’ve been very gracious in sponsoring freeCodeCamp’s database there.

This section also has 5 projects – a timestamp microservice, url shortener, exercise tracker (post to the API to track your exercise), and more.

Certification 6 – Information security and quality assurance

The final certification is also backend focused – information security and quality assurance. We talk about using different library like Helmet.js, bcrypt to secure your app, we cover authentication – how to have a user sign in to your app and how to track their session. We then have quality assurance and testing. We use Chai.js which is a popular JavaScript testing library.

For the projects you’re going to build a stock price checker, an anonymous message board (like forchan), and more! You’ll build a lot of stuff, you’ll learn a lot of skills. All applied.

Interview Prep

We have a coding interview prep section that has thousands of hours of additional challenges if you want to dive in to that. Even for a senior developer who wants to get some additional practice for job interviews, this is a great place.

Job interviews are skewed towards recent graduates focusing on algorithms and data structures used more in interviews than in the field. You’ll learn how to do different sorts – merge sort, and quick sort. We cover data structures like linked lists, doubly linked lists, binary search trees, and matrices. We talk about breadth first search vs depth first search, and more. It’s not just an explanation, you’re implementing it with tests making sure you’re building it right.

We have pulled in projects from Project Euler that expands on the project by providing tests rather than a simple yes or no answer. We wanted to make it so you could build the project, run tests, and see how you’re doing along the way.

Study Groups

We also have study groups in 2000 major cities around the world. That means you can get together people in your neighborhood or on your university campus and code together. freeCodeCamp study group directory. 

Final thoughts? 

I want to reiterate that if you’re watching this and you’re questioning whether or not you should learn to code, yes, you absolutely should learn to code. It is the new literacy. It is as important as learning to read used to be and learning how to drive a car in the 1930’s and 40’s, using spreadsheets, slide decks and word processors in the 90’s.

Learning to code is the next big skill that everybody has to adopt if they want to work productively in the knowledge economy. Increasingly jobs are going to require coding.

You absolutely should learn to code, and you absolutely can learn to code. It’s just a matter of sitting down and putting in the energy and using the many amazing resources that developers and teachers have built up over the years.

You absolutely should be doing this and regardless of what excuses may come to mind and what other people may tell you, I think you know deep inside that learning to code is something you should do with the direction that humanity is heading in and the increasingly important role that technology is playing in our lives.

You can follow Quincy on Twitter and check out the freeCodeCamp Curriculum
For more questions such as how to get a job in web development and where Quincy would like to take freeCodeCamp in the future, check out the complete interview:

2 Replies to “How to Learn to Code for Free – freeCodeCamp / Quincy Larson”

Leave a Reply

Your email address will not be published. Required fields are marked *