Why is it so hard to get started?
Knowing how to code and knowing how to teach are 2 very different skills. As a developer, I really want to share my knowledge with people who are interested. I am however, a very poor teacher. I feel compelled to make YouTube videos sharing information with people who are trying to learn to code but ironically, by doing so, I’m only fueling the problem of bad tutorials created by non-teachers on YouTube.
I feel like I’m so far behind everybody else
When you’re learning to code, most people latch onto a teacher whether it be a friend, online content creators, or maybe some combination of resources. We have a lot of big words, buzz words, technologies with several names, techniques with several different paradigms. The people who you are trying to learn from are talking over your head. This is normal, don’t let it make you feel stupid.
I’ve heard this dismissed as elitism or gatekeeping but I’d like to propose another explanation. I see this as a consequence of 2 things. Obsession and enthusiasm. Yes, we’re proud of what we know as developers but the learning process is so gradual that we forget how foreign these concepts can seem to someone who hasn’t worked with them. We see basic concepts as almost ‘common knowledge’ because we’ve learned them so gradually that we’ve forgotten that even the basics of the basics still have a learning curve. We also tend to ramble when we talk about things that excite us.
If you’ve ever posted on StackOverflow asking why your “very basic” code isn’t working you’ll notice something very unusual. People who can clearly answer your question with little to no effort would rather shame you for not knowing what you’re doing. This is, in my opinion - the real elitism.
Still to this day, I feel the need to heavily qualify anything I post on StackOverflow for the fear of having my ego bruised if I don’t provide the context as to why I’m trying to do something without the prerequisite knowledge. I may want to interact with live streaming video for 1 basic component but I don’t want to take a full week to learn WebRTC, I just need someone to tell me that my function is missing an argument.
I assure you that just because you watched a tutorial on YouTube and ran into a breaking bug half way through doesn’t mean you’re an unfit programmer just because the comments on that same video show that lots of people finished the same app that you’re now abandoning because you haven’t learned to properly debug yet.
On top of forgetting what it’s like to learn the basics, and being overly enthusiastic, we feel so strongly about the languages and frameworks that we use that we’ll argue for hours with a perfect stranger online about who uses the better language or framework. This is exactly why you get so much conflicting information online. Things that are opinions are stated as facts in a world that has too much nuance to ignore.
Common Internet-isms in the ‘learn to code’ ideaspace
There are a lot of common things you will read online but because they lack the nuance, I thought I’d add the context that belongs with the statement.
“Python is the best language for beginners”
"Don’t learn Microsoft technologies”
Microsoft is a very divisive company because of its history and unfortunately, it’s had a hard time shaking some of the old preconceived notions. In recent years Microsoft has embraced open source and cross platform development. Before that, Microsoft was known for making their technologies ‘windows exclusive’ which the larger development community didn’t appreciate. Should we continue to hold this against them now that they’ve changed? Probably not. In fact, I’d argue that C# and TypeScript are 2 of the most well designed programming languages there are currently and they were both designed by Microsoft. Windows can now run native Linux apps with the Windows Subsystem for Linux which makes Windows an excellent option for software developers now more than ever giving you the best of Windows and Unix both on the same machine without even having to dual-boot. Microsoft has purchased NPM (Node Package Manager) to save them from financial failure, they’ve created my absolute favorite text editor, VS Code, and to take it even a step further, they have a team at Microsoft who builds out Python integrations for VS Code. Probably most noteworthy is that Microsoft owns GitHub, the single most important platform for software developers. Long gone are the days of being boxed into a single solution courtesy of Microsoft and now they’ve become a friend of the ‘everyman developer’. Unless they start to give us reasons not to trust them, I can’t help but feel that Microsoft really knows what they’re doing now and I trust their direction.
“You can learn to code in 3 months”
You can learn Japanese in a single day if you disregard the fact that what you learned is nowhere near enough to apply in real life. The idea of learning from my perspective is more about knowing what you don’t know. If you decide to learn to code, it will be a lifelong endeavor because you simply can’t master code as the result of constant innovation. Sure, you can learn to code in 3 months - there might be a coding bootcamp that can even teach you how to act the role of a Junior developer but as an employer, I’d never consider hiring someone with 3 months of education. Don’t start learning to code just because you want a high paying job in 90 days, start learning to code if you love learning, you love computers, you love creating things, and you are in it for the long haul. Learning how to code is more about learning how to self-teach. No matter how much you learn from school, a bootcamp, or a Udemy class - it’s always on you to practice, test, and explore deeper. A good developer is a good problem solver. Also, being a software developer is incredibly satisfying if you love what you do but I’d imagine it’d be like doing homework for your least favorite class all day every day if you find employment as a developer without loving it so much that you spend your free time learning and coding just for fun.
Tutorials don’t translate to real-world knowledge for me
If you ever watch a tutorial and find yourself mindlessly copying code without understanding why you’re doing it, or what the code does, you’re watching the wrong tutorials. It could be that the tutorial is more advanced than you anticipated, or that the creator is making assumptions about your existing knowledge. Either way, don’t waste your time. When you hear about getting stuck in ‘Tutorial Hell’ it’s because code-along tutorials without any real substance litter the internet and you might feel good about following along but the realization that you just wasted your time is discouraging. You need all the encouragement you can get when you’re learning to code, respect your time and find a teacher that you connect with.
Which language should I learn?
If you’re interested in the enterprise space and you don’t mind competing with all of the recent college graduates, you can learn Java and Spring Boot. If you want to scrape the web or build Robots, maybe Python is ideal for you.
It’s a marathon, not a sprint
As cheesy as it sounds, this couldn’t be more true. Repetition and practice are the keys to learning to code. If you look at ‘knowing how to code’ as a destination instead of a journey, it will feel impossible. If you spend several months building small basic apps - you’ll look back at your first few apps in disbelief of how far you’ve come and you’ll probably forget how hard it felt at first. Then, some day soon after that when a friend or acquaintance asks for your help learning to code, you can confuse them by glossing over all of the basics that you now think are common knowledge because just as the people before you, you’ve also forgotten how steep the learning curve felt at first.
Interested in learning to code (casually and for free) with the author of this article?
Fill out this form and join us in livestreams and zoom calls designed to teach beginners how to code!
Interested in networking with other developers and building a portfolio while learning new skills? Check out . It is currently in beta but will be launching mid 2021.