You're stuck at home. You can't hang out with your friends or go to events. The economy is in free fall. But that doesn't mean that you are powerless.
Fate has handed you this giant chunk of time. It could be weeks. It could be months. Nobody knows.
The question is: what are you going to do with this time?
- You could start streaming a new TV show.
- You could get really into a new game.
- You could stare out the window at the empty streets around you, and maybe drain whatever bottles you have lying around the house and go to sleep.
Or you could take control.
For every skill you could ever want to learn, there's a free online course that teaches it, just waiting for your attention.
People underestimate just how many free learning resources are out there. It's crazy. Imagine a Library of Alexandria the size of Manhattan. That still wouldn't hold everything.
You don't need money. If you have a phone or a computer with internet access – and a warm place to sit – you're set.
You just need time. And with the Coronavirus floating around out there, you've probably got more time than ever.
I am a self-taught software engineer. I used to work as an English teacher.
But in 2011 – at the age of 31 – I started learning to code using free online resources.
In the 9 years since, I've worked as a software engineer at tech startups and built websites for freelance clients.
I am not special. There are millions of people like me who have successfully switched careers into software development in the past 5 years. I know this because I have helped a lot of them do this.
Five years ago, I created an online learning community called freeCodeCamp.org. Yes – *checks logo above this article* – that freeCodeCamp.org.
And as of 2020, more than 40,000 freeCodeCamp graduates have gotten jobs at tech companies, including Google, Apple, Amazon, Twitter, Spotify, and Microsoft.
Most of these people didn't have to go back to college. They didn't have to quit their retail job for 4 months to attend a coding bootcamp. They didn't even have to spend any money. They just learned to code in their free time – at night after the kids went to bed. Or on weekends when they could have been watching sports or playing video games.
Do you have free time right now? Do you have blank spots on your calendar for the next few weeks?
Great. Then you can do this, too.
I'm going to tell you how.
And remember – unlike a lot of the people out there, I'm not trying to sell you something. freeCodeCamp is a 501(c)(3) public charity. Everything's free.
You can use freeCodeCamp if you want. Or you can use some of these other resources I recommend here as well.
I just want you to succeed.
I want you to be able to go out there a few months from now and kick some post-Coronavirus ass on the job market.
So use whichever learning tools you see fit to accomplish that mighty goal. I'll be here rooting for you either way.
Free Courses and Other Online Learning Tools
There are thousands of courses I could recommend. And I'll include some links to giant lists of these at the bottom of this article.
Instead I'm just going to focus on a good cross-section of courses that I think are a good use of your time.
The main skills I recommend everyone learn in 2020 are:
- Computer Science concepts, algorithms, data structures, and databases
- Python and basic data science libraries like NumPy
- Command line tools like Linux, Git, and Bash
And some other skills that would be helpful:
- Small business basics – how to find freelance customers, how to do basic sales, accounting, legal
- And job application basics – how to pass technical interviews, how to negotiate a high salary
- How to earn professional certifications that can make it easier to get a developer job
For each of these I'll recommend a single resource. And again, at the end of this article, I'll show you some other comprehensive lists of learning resources. So many free learning resources you can Scrooge McDuck away the rest of your life in a becoming a mad genius if you want to.
These are the basic components of the World Wide Web.
For every website you visit, HTML is the bones. It provides the structure.
CSS is the skin. It provides the styling and aesthetic.
You can learn the basics of these – enough to build basic websites – in just a few days of self-study.
Except for HTML. You really can learn HTML in a day or two. And yes – you can build basic websites using nothing but HTML. They won't be pretty. But they will work. (We're talking about you, Craigslist.)
The best way to learn this trinity of web development languages is to earn the first 2 certifications of freeCodeCamp's curriculum. Along the way, you'll build 10 websites. That should be more than enough practice for you to check this box on your LinkedIn profile.
Again, as the name would imply, freeCodeCamp is free. It's also completely self-paced, and runs in your browser so you don't have to install anything. You can do it on your phone or tablet. But since you'll be typing a lot of code, a keyboard would make things a lot faster.
Learn Computer Science Concepts, Algorithms, Data Structures, and Databases
A lot of people freak out about computer science because they "suck at math" or because they took some Java course 10 years ago and hated it.
Well I've got good news for you all – computer science doesn't have to be a grind. It can be quite fun. And there's no course that does a better job of making it fun than Harvard's excellent computer science intro course, CS50.
We've published the entire course ad-free on freeCodeCamp's YouTube. Here's the full playlist.
The course is about 17 hours worth of lectures. And along with each lecture video's description, there is a downloadable problem set that you can do to make sure you've understood everything. And there are downloadable lecture notes, too.
Learn Python and Basic Data Science Libraries Like Numpy
Python is the most popular programming language for Scientific Computing – a catch-all term for statistics, data science, machine learning.
Dr. Chuck is a professor at University of Michigan, and he's been teaching programming for decades. He created the awesome Python for Everybody course.
And we've published his entire 14-hour course ad-free here. (Be sure to check the video description for his downloadable code examples and lecture notes.)
Python has a library for almost any task. And arguably the most important library is NumPy (pronounced num-pie).
Here's a free, ad-free 1-hour course on NumPy, complete with code repos you can use to play along at home.
Learn Command Line Tools Like Linux, Git, and Bash
When you watch Mr. Robot and other shows about developers or hackers, you will see a lot of command line interfaces that look like this:
Developers often use command line interfaces because you can get things done much faster and more precisely than you can in a Graphical User Interface (GUI).
And there are several command line tools developers use a lot. First of all, they use Linux for servers. Many of these servers don't even have a Windows-like GUI installed on them, so you're stuck in the command line. And the command line scripting tool most Linux computers use is called Bash.
You can use Bash as a prompt for running commands. Here are some of the most commonly used Bash commands explained (10 minute read.)
You can also use Bash for scripting. (Though these days, most people prefer Python for doing this.)
Here's a 2-hour introduction course on a computer security-focused version of Linux called Kali Linux.
But there's another important tool that every developer should know in 2020. It was invented by the same guy who created Linux, and it's called Git.
Git is a Version Control System that helps you store the state of your code. If you make a mistake, you can easily roll back to an older version of your code. And Git makes it easy to collaborate on larger code projects with other developers, using websites like GitHub.
The best resource for learning Git is GitHub's own documentation. Here's a good article that explains how Git works and walks you through some of the most common commands.
Learn Small Business Basics – How to Find Freelance Customers, and Do Basic Sales, Accounting, and Contracts
Finding your first developer job is hard. You may have to apply to hundreds of jobs before you ultimately get through the interview process and get a satisfactory job offer.
Most hiring managers don't want to take a chance on an unknown applicant who's never worked as a developer anywhere else. This isn't just limited to self-taught developers – I know tons of computer science majors who just graduated and struggle to get job offers (even in a booming market for software developers).
My personal advice is – build your reputation and your network.
You can amplify your reputation by building tools for local businesses.
You can start out by doing work for local nonprofits for free. You could help a local church or mosque build their new website. Or you could help a local food bank build a new inventory system.
But if you're feeling ambitious, see if you can find a paying gig right off the bat. It's not as hard as you might think. There are tons of job boards out there with one-off contracts. You might even be able to find a gig on a local classified page. (We're looking at you again, Craigslist.)
By building your reputation as a freelancer, you already have successful projects under your belt when you go to apply for full-time developer jobs.
This free Freelance Web Developer Guide features in-depth advice from a veteran freelance developer, an attorney focused on business law, and an accountant. Think of it as "your freelance developer business in a box." It's a 3-hour watch.
As far as building your network – normally I would advise people to go to local tech events, and hang out at hackerspaces and makerspaces.
But with the coronavirus out there, I instead recommend you stay home.
Go on LinkedIn and add every single person you've ever worked with or gone to school with.
If you are part of any Facebook groups or Discord servers, you could create a new group and encourage them to join it specifically for people who are planning to transition into software development.
You can also introduce yourself on the freeCodeCamp forum, and start building a personal network of likeminded people who are learning to code.
Learn Job Application Basics – How to Pass Technical Interviews and How to Negotiate a High Salary
My friend Haseeb Qureshi is a former professional poker player turned software engineer. His first-ever developer job was working at Airbnb making $250,000 per year. That is not a typo.
He was able to get job offers from Google, Twitch, Stripe, and other big companies, then play those offers against one another.
Here's his story of how he did this, which is filled with tons of tips for what to expect during the job application process.
And Haseeb has also written a comprehensive guide to negotiating a high salary once you start getting job offers. These are a must-read and could add $10,000s to your starting salary:
- Ten Rules for Negotiating a Job Offer (20 minute read)
- How Not to Bomb Your Offer Negotiation (30 minute read)
Learn How to Earn Professional Certifications That Can Make It Easier to Get a Developer Job
Most recruiters and hiring managers operate on pattern recognition. They famously spend an average of 6 seconds looking at each résumé.
Professional certifications are an easy way to prove to employers that you know a technology. They also increase the likelihood of you coming up in employers' résumé search tools.
You don't have to get professional certifications. They do cost money (usually about $100 to $200 per exam). But if you do want to earn some, I recommend starting with cloud certifications.
Pretty much every major company and government on earth is in the process of moving from their own servers to cloud servers. And you can become part of the huge effort to securely do so. If you want to work in DevOps or Site Reliability Engineering, these cloud certifications are a good way to go.
freeCodeCamp is publishing new free cloud certification courses each month, and eventually we'll cover security certifications as well.
But for now, I recommend starting with Amazon Web Services (AWS) certifications. Amazon owns more than half of the public cloud industry, and pretty much every Fortune 500 company uses AWS in some capacity or another.
I wrote this comprehensive guide to AWS cloud certifications, which includes several comprehensive free (and ad-free) courses to prepare you for these exams.
And Finally, Some Massive Lists of Free Learning Resources
As promised, here are some massive lists of free courses for you. These are actively maintained. And they will keep you busy until the end of your days.
This first list includes 450 free online university courses from the 8 Ivy League universities – Harvard, Yale, Princeton, Brown, Columbia, Cornell, Dartmouth College, and the University of Pennsylvania.
You can do all of these courses from your laptop or phone, at your convenience. And again, they are all free.
And next, freeCodeCamp graduate Dylan Israel put together this awesome list of coding resources, which also includes lots of communities you can join for support while you learn to code.
Dylan's list has been trending on GitHub for the past few weeks. You can even practice your Git skills and contribute your own favorite resources to this list.
Stay Safe Out There. Better Yet, Stay Home.
I will end by wishing you and your family safe passage through this difficult time.
Let us all hope that the world can bounce back from the coronavirus.
But let us all prepare for the immense amount of work that we'll need to do when the dust settles.
By learning these new skills, and gearing up for a post-coronavirus economy, you can put yourself in a position to do the maximum amount of good for your community.
Stay strong, friends. And happy coding. 👍