Snacks, time, and the internet. Everything you need to learn to program
I spent many of my formative years in a small oil camp on the island of Sumatra — the big rocket-shaped island in the Indonesian archipelago. That’s where I first learned to program computers. There wasn’t anyone there my age, so I had a lot of family time, and a lot of time to myself. That left me with hours each day to sit in the backroom of our one-story house in front of a computer eating popcorn and puzzling through programming exercises to the sound of gibbon monkeys hooting from the jungle across the street.
Limited social interaction, questionably-healthy snacks, and lots of time. That’s basically the perfect setup for learning how to program. Toss in a novel coronavirus and a stockpile of toilet paper and that’s also basically a description of the situation many of us find ourselves in during this quarantine.
As a professor of Computer Science at McGill University, over the past few weeks, I’ve received several emails asking for advice about how to get started with programming. Some are simply curious and now have time on their hands. Others are uncertain about their jobs and looking for a potential new career. Whatever your reasons, this quarantine is a great time to learn how to program. And, compared to my teen years spent sitting in a house surrounded by jungle with two programming books and the DOS prompt on my screen as my only guides, the internet provides a wealth of resources that ease the journey into the magical and intoxicating world of software development.
That said, even though there are tons of resources, it can be really difficult to understand where to begin. There are almost too many options. Online courses? YouTube tutorials? Random blogs? A good-old-fashioned book? Where to start? And what are reasonable expectations for a month of quarantine — is it possible to go from n00b to hired developer in 1 month? In 3 months?
There’s no one way to become a programmer, but having programmed for over 25 years, consulted with companies like Facebook, running my own tech startups, and teaching programming to hundreds of undergraduate and PhD students for the past 11 years, I thought I might offer some thoughts for those who are embarking on the amazing and sacred adventure that is software development.
First and most importantly, DO IT. I have never, ever known someone who learned to program and regretted it. I’ve known some students who decided it wasn’t the kind of career they wanted. I’ve known others who found it frustrating and gave it up. But even including those who eventually decided to go another way, I have never heard someone say that the time they invested and the things they learned weren’t worth it.
I think this is largely because we live in a highly digital time. This quarantine period proves the point — virtually everything, from work to shopping to entertainment to hanging out, is now done entirely through computers. Our digital devices create our reality. So, in a very real way, learning to program is about learning how to shape and reshape the world.
I also think that people value time spent programming because it is personally rewarding. Programming is, in reality, a very pure form of puzzle solving. Every program is a puzzle and the rush of satisfaction when the breakthrough comes and the code works feels absolutely electric. If you have even the slightest interest — give it a shot. You won’t regret it.
My second point may disappoint some: you won’t become an employable programmer overnight. And chances are good that you won’t even become employable in 3 months. I really don’t like saying this, but I think it’s important to set realistic expectations. To be sure — there are exceptions. I’ve had students develop profound mastery of software development in months. You may be that person. But that is very rare and requires an almost destabilizing kind of focus. For most of us, it will take longer.
This is because — plainly put — programming requires a lot of practice. It’s not enough to understand the concepts. To learn to program, we have to write programs and more programs and more programs. We have to try things and get terribly, incredibly lost. We have to write code, realize that we did it all wrong, tear it apart and write it all over again. This requires time — lots of it. Learning to program is like learning to play an instrument proficiently. There aren’t necessarily a ton of tricks you have to learn… but mastering those tricks can take a lifetime.
All this said, I absolutely do not mean that you shouldn’t see quarantine programming practice as a path to a career in software development. Often the early days of programming are the hardest and most demanding. During that time, you quite literally are learning a new and radically different way of thinking. That takes a lot of focus and a lot of downtime to digest. Quarantine is great for that. While you may not emerge from quarantine with a software development job, it’s quite possible that you’ll have pushed through the hardest, most intense part of the journey.
My final thought is that, when digging into programming, it can help to have an idea of what kind of software developer you want to be. These days, there are — very loosely speaking — three different paths you can choose. You can be a frontend developer — that’s someone who builds the part of websites and games that you see. So, for example, they’re responsible for designing and implementing the look and feel of websites and the flow of iOS apps. Another option is to be a backend developer. This is a person who build the logic of the program or website. This typically involves working with databases, thinking about being efficient with internet communication, and writing code that transforms data in various ways. The final option is to be a data scientist — a person who is focused on writing software that discovers hidden patterns in data. This path draws heavily on math and statistics.
These different paths involve different skill sets and, early on, knowing different programming languages and technologies. There are also different online resources for these different paths. Knowing which of these paths you’re most interested in can help narrow down the things you need to focus on learning and the online resources you can use to learn them.
Regardless of which you choose, if you put the time in, you WILL be a programmer. For those looking for a new career — each of the three paths are important and will continue being important in a post-quarantine world. For those curious, each path offers tantalizing challenges and new ways of thinking.
When I look back on my teen years in Indonesia, sitting in front of a computer keyboard and loving it, I had no idea where my newly discovered interest in programming would take me. It was and continues to be a winding, thrilling path full of unpredictable turns. In this time of quarantine, I hope the same for your first steps in programming — and wish you luck on your journey should you decide to begin.
Get your feet wet
- A practical guide to learning front end development for beginners
- How to Become a Data Scientist
- What’s The Best Path To Becoming A Data Scientist?
- Sololearn Python 3 tutorial