Learning to program can be brutal. You never know if you’re learning the right things, and it’s easy to become overwhelmed by how much content there is to learn. That brings up a good thought: How do you know when you’ve learned enough to start applying for jobs?
Chances are, you’re concerned with how long it will take you to learn how to code. You feel this pressure to learn as much as you can in as little time as possible. You want to get away from your current role, or lack thereof, and make your way toward finally landing a job that pays you to code.
Whether it’s a pay raise you’re after or an entire career change, programming can lead to a very fruitful and empowering career. You just need to learn the fundamentals of code so you can start your new and exciting journey to programming success.
However, nobody wants to spend unnecessary time nailing down fundamental programming principles—don’t worry, I won’t let that happen to you.
If you want to learn to code fast, keep reading. I’m going to unpack the secret to learning how to program fast by giving you proven strategies and tactics that will help you apply for jobs, garner interviews, and land high-value job offers.
Ready? Let’s get started.
Stop Settling for Short-Term Gains
I get it. You want to code fast and you want to code now.
But I’m going to be as straightforward with you as possible. You aren’t helping yourself if you’re doing any of the following:
- Copying and pasting code without understanding it.
- Mindlessly completing courses and tutorials.
- Being unable to apply syntax you’ve “learned” in courses/tutorials to problems outside of your learning environment.
I remember when I first started learning how to program. I completed two coding courses and completed three project tutorials that all had 1,000+ lines of code each. I felt so good about myself.
But when I started interviewing for programming roles, I failed every technical interview. I even tried taking W3Schools’ Python quiz and failed miserably. The reality was that I was settling for the short-sighted joy of “completing” courses and tutorials.
Don’t be like n00b Daniel and mindlessly complete courses and tutorials. Don’t copy and paste code without understanding what you’re copying.
Fight for Understanding (The Speed Will Follow)
If someone told me to “fight for understanding” and that I would actually learn faster than completing courses and tutorials, I would have laughed at them.
The first year of my programming journey was brutal because I was mindlessly writing code—I wasn’t seeking to understand what I was learning.
Consider the below example and how I didn’t fight to understand for-loops:
n = 4
for i in range(0, n):
If you don’t understand anything from the example, don’t worry; apparently neither did I. I recognized that n = 4 was a variable storing the number 4. I could also tell you that the for-loop printed 0 through 3. But I couldn’t tell you what (i) was, nor why the for-loop only printed 0 through 3 and not 4.
This was my programming life for six months.
I’d try and identify syntax I was familiar with, but when I saw code I didn’t understand my mind would go blank. The worst part was that my only resolve was to output a result without understanding the code I was writing.
This was the worst place to be.
But if I were to learn how to program all over again, I’d try to fight for understanding. I’d probably also read Grokking Algorithms earlier in my career because it helped simplify so many complex coding concepts for me.
Here’s how I’d try to understand a for-loop:
Any of those search mechanisms would tell you that for-loops are all about iteration. For-loops boil down to one action: They are saying “for each something in a set of things, give me each something.”
In the example above, the for-loop is saying: for each thing (i) in a set of things (range(0, n):), print out each thing one at a time.
The second principle at work is the “set of things” (range(0, n):) part of the for-loop. For this principle, you would find the range(0, n) is a function called the range() function. If you Google the range() function you’d find that it allows the programmer to create a sequence of numbers.
So in this case, the range(0, n) says your “set of things” is the number 0,1,2,3. The range() function doesn’t print the number 4, even though n = 4,because the function is only inclusive of all numbers before the second number.
If you wanted to print the number 4, change n = 4 to n = 5. The range(0, n) will now include the number 4 and exclude the number 5.
If you prioritize understanding, I guarantee you’ll learn faster in the long term. Learning how to program is not a numbers game. I repeat: Learning how to program is not about how much syntax you can memorize or how many projects you can complete. The key to learning how to program is understanding. Which brings me to my next point.
Don’t Worry About Learning Everything, Just Learn the Right Things
There is no way you can learn every fundamental programming principle in a realistic amount of time. You don’t have two years to nail down every concept about recursion, classes, and data structures. After all, you want a coding job ASAP, don’t you?
But I’ll tell you what you do have time for. The right concepts.
You have ample time to learn the concepts that will land you a job. The more difficult part is figuring out what those “right” concepts are. If you want a head start on those concepts, I recommend you check out Python Crash Course, which is from the series as How to Automate the Boring Stuff with Python.
Dozens of people have asked me, “What should I be learning?”
I tell them the same answer every time and it doesn’t include the words “function,” “recursion,” “regular expressions,” or any other fundamental/interview programming concept.
I bring them through an exercise that tells them exactly what they need to know. I want to take you through that same exercise:
- Find an entry-level software engineering role on LinkedIn. You can use the “Experience” feature on the Jobs tab or be on the lookout for roles that are hiring for 0–2 years of experience.
- Locate the “Responsibilities” and/or “Requirements” sections of the job descriptions. What do you see? Is it something like “strong software architecture fundamentals, data structures, and critical thinking”? Do you see something resembling “knows how a service handles an HTTP request”?
- Translate the “Responsibilities” and “Requirements” sections into programming concepts. In the example above, you can deduce a number of programming concepts you should know. Architecture fundamentals, data structures, and back-end services (HTTP requests).
- Research and fight to understand the programming concepts you derived from the job descriptions. Google will be your best friend here. Find established programmers who are willing to help you. Check out this article for how to find a coding mentor.
It’s easy to get overwhelmed with this process. The most important thing you need to know is that you don’t need to know every bit of syntax, just the right syntax and concepts that will land you a job.
Take the Boot Camp Test
There’s been a long-standing discussion of whether coding boot camps are a good path for learning how to code. Here’s the one argument that cuts right through the debate: Everything you learn in a boot camp can be learned online for free.
So why do people sign up for boot camps?
Boot camps are a convenient yet rigorous, six-to-nine month option for getting a job in tech fast. They also connect you with coding mentors and networking resources to help set you up with interviews.
Here’s what I like to call the “boot camp test” and I encourage you to see how you do. Answer the following questions:
- If someone gave you all the learning resources you needed to learn how to code, would you take it?
- What if you had to devote the next six to nine months of your life to a rigorous routine of lectures, problem sets, and interview practice?
- What if you had to pay several thousand dollars?
- What if interviews and jobs weren’t guaranteed?
If you answered “no” to at least two of the questions, 1) a boot camp probably isn’t for you, and 2) you’ve just learned something many aspiring programmers never figure out.
The boot camp test puts the learning process into perspective. You’re not here to undergo a rigorous six-to-nine month boot camp. You’re here to learn until you can land a job. You want to land a job with as much certainty and guarantee as possible.
Realize the “Long Game” Isn’t So Long
I highly recommend you play the “long game” with learning how to program.
You may be thinking, “What, like two years? Five years? Ten?”
None of the above.
If you’d like to take two years of your life to learn how to program, be my guest.
But know that you don’t have to.
When I say “long game” I’m referring to how you learn, not how fast.
The long game of learning how to program requires you to stop settling for short gains. No more mindlessly completing courses and tutorials. The long game also demands you to prioritize understanding over anything else. If you forget about learning everything and, instead, focus on learning the right things, you’ll learn fast. When you feel frazzled, take the boot camp test to put the learning process back into perspective.
The learning process can be brutal and overwhelming, but it’s all there for the taking. You’re heading in the right direction and you have everything you need.
I know you want to code now and you want to code fast. You now have the tools and means to do exactly that. Keep learning, keep pushing, and never give up.