Share
Explore

icon picker
Roadblocks when learning to code

What you should know when starting the journey to become a developer

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.

Tribalism

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
Unless you have a formal education and interest in data science, you’ll be much less employable as a Python developer than if you start elsewhere. Jobs for Django or Flask are in short supply compared to more popular technologies. Python is a great language and it’s easy to learn because it reads like english however, you can pick up python insanely fast as a second or third language whereas learning C# or JavaScript after Python is going to be significantly harder.
"JavaScript is a pig wearing lipstick among the ‘real’ programming languages”
JavaScript was famously created in 10 days and named in a way to ride the Java hype at the time. It was created to make web pages interactive in a much more lightweight manner than the ‘Java applets’ at the time so it was not as carefully planned as other languages. JavaScript is now over 25 years old and it has been standardized, re-imagined, patched, and iterated on for the modern web. There are some strange parts that may not be considered ‘good computer science’ such as how ‘’ == 0 will result in true but once you learn these unusual parts, and why the language acts that way, you can leverage that to your advantage. I don’t subscribe to the idea that just because JavaScript has a few quirks, it’s not a quality language.
"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.
It has never been easier to find free resources to learn to code online, and for free. You just need to be picky about which content creators you share your limited free time learning from. A good teacher with a good tutorial will set you up so that you can modify the app on your own and continue to solidify the concepts that you learned during the lesson. If you make a website for the sake of learning HTML, CSS, and JavaScript, and at the end, your website looks just like the instructor’s website. You need to spend an hour after the tutorial customizing it, changing the layout, the theme, the functionality, etc. This is how you’ll retain information so that when you load up an empty project folder, you won’t feel so lost.

Which language should I learn?

If nothing else, I was hoping to get across in this article that different languages and frameworks are better for different people based on their interests and goals. I got my start with C# and I appreciate that I started there because I feel that I got a good foundation for the ‘computer-scienc-y’ parts of the language, structure, and syntax which eventually made JavaScript and TypeScript so much easier to learn.
Right now, you can use JavaScript for everything. Front end development, back end development, desktop development, mobile development, game development, embedded microcontroller development, artificial intelligence and machine learning - all of that and everything in-between can be done with JavaScript.
React is a wildly popular JavaScript library which makes you very employable, meanwhile a Framework called Vue is my personal favorite because I can build complex apps fast with it.
The modern C#/.NET alternative to React/Vue/Angular would be Blazor which allows you to create single page applications without using any JavaScript at all and it compiles to Web Assembly.
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.
If you want to really learn the fundamentals of software development, C or C++ will always be the unsung heroes, and you’ll really learn how things work under the hood, but the learning curve there is very very steep. Or, the slightly less intimidating and more modern alternatives such as Go (Golang) or Rust feel like a great gap between JavaScript and C.
At some point you’ll probably need to learn SQL to interact with relational databases, but it’s pretty easy because it reads like english so although you shouldn’t be intimidated, you should accept that you won’t ever be done learning. Don’t put the decision for which language to start with on a pedestal because at the end of the day, it just doesn’t matter. It’s only a jumping off point. Just be sure not to shut yourself off from experiencing new technologies because you joined the JavaScript tribe or the .NET tribe. That is where you limit your growth potential.

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.

Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.