Although this is primarily about software, the same (or similar) approach can be applied to other things.
This is an attempt to provide a comprehensive guide on how to get into programming using existing online resources.
reference
This is a reference post. Reference posts focus on giving you a good overview of a topic with resources and commentary to add missing details and nuance.
Preamble and Disclaimers
fyi
Iâll be very honest with you. Unless you have good reason to get into SWE Iâd highly discourage it and recommend trying to get into something more solid. Why risk getting into SWE now, if you can choose another career that also pays well and is more safe?
I recommend watching this - My Honest Thoughts on the Software Engineering Job Market in 2025.
Flow of This Post
alternatives
fyi: If you like - you can also look into boot.dev or freeCodeCamp.org. But I havenât had much experience with them.
This article is not supposed to be read as a normal post, but as a guide to keep referencing to.
Let me try to explain how to use this guide.
Two things about this post:
(1) To make sense of this guide, I need to first share my hypothesis on what I think is the best way to learn something, like programming.
There is a long version, but in short: the best way to learn is to start from the top and work your way down.
There are two powerful excerpts to make more clear what Iâm talking about.
(Black Box)
âIn science, computing, and engineering, a black box is a system which can be viewed in terms of its inputs and outputs, without any knowledge of its internal workings.â - Source
(Bottom-up and top-down design)
âA top-down approach is essentially the breaking down of a system to gain insight into its compositional subsystems in a reverse engineering fashion.â - Source
(Reverse engineering is a good keyword here.)
Instead of learning fundamentals first, you start with the big picture.
Top-down processing essentially is when you use prior knowledge to interpret new information.
Every time you go down a layer and understand it, you get that âaha moment.â
Say you want to learn how a car works, via top down processing. It would go something like thisâŚ
âThe engine starts because the starter motor turns it over. Ah - so what powers the starter motor?â
Then, you peel back one layer.
âIt works because combustion pushes the pistons. Ah - so what exactly is combustion?â
Then, you peel back another layer.
âCombustion happens when fuel mixes with air and is ignited. Ah - so where does the fuel come from?â
etc.
At each step, you get a âaha momentâ because every new detail slots into the picture you already understand. Youâre never lost. You are just zooming in.
I hope the examples made it very clear.
Iâm still working on this post Is black box learning better? (Have we been learning wrong all this time) and I havenât found many good videos that talk about this the way I want it to be conveyed, but those here do it a little.
(If you already get it, you can skip these)
Top-Down & Bottom-Up Processing AP Psychology Unit 3 Topic 4 - YouTube (3 min)
Top down learning vs bottom up learning - YouTube (12 min)
(2) Donât rush it, have fun, try to get hyped about programming to become interested to the point where you would come home after work just to watch random programming videos.
Imagine this: you have never been to NYC before, but you still really want to go. Why is that?
Probably because you have heard about all the cool things, places to see, the energy and culture. Perhaps you even saw some photos or videos online, that really wants you to go. That spark of inspiration builds motivation - it makes you want to experience it for yourself. Thatâs probably the real reason youâre drawn to it. Why not use this to your advantage?
Some professional sport players watch their own highlights back before a match, because it gets them hyped up, helps them be really invested and makes them want to perform well.
Iâm asking you to do the same.
Consume content for a few days, get a good overview of whats out there so that you may find out what exactly you might want to do (very important we will get to this later), get interested and get hyped up THEN use that energy to put into learning.
So you betterâŚ
- Get obsessed with programming
- Binge watch content (I recommend 1 to 3h a day if you can)
- And then, when you start practicing and programming, enjoy the journey, and get used to the pain and suffering
Content
The content is separated into 4 parts and one extra (Lifeline):
- The Lifeline - A Hand to Hold While You Learn
- 1. Setup Diving Gear
- 2. Observe the Ocean
- 3. Dive into the Ocean
- 4. Pick Your Poison
If you really have no patience for some reason, you can skip step 1 and 2 (although I highly recommend against it)
The Lifeline - A Hand to Hold While You Learn
This part of the post is for later. Itâs supposed to be a helping hand - tips for you during YouTube tutorials and programming. (When you read this for the first time, you can skim through this)
Important
- DO NOT expect or try to remember everything - you wonât, nobody does. This is why we have Stack Overflow, Google and AI. This video is a must watch (The video is part of the playlist found in 3. Dive into the Ocean)
- RTFM - Read The Friendly Manual. Going through and reading documentation is a boring but important skill to have. Now with AI itâs a little less important, especially with perplexity.ai. But please remember my words - you should not rely on these tools. Perhaps something else can be said in 5 years. I recommend watching this video and this to get a feel of how to go through documentation.
- Most tutorials donât explain how they know what they know and how you can learn these things. The intention here is to let you know that there are online docs with examples that you could read, or that if you have autocomplete, you can hover over variables or methods to see what they do and what methods even exist.
People may say âthe programming language you start with does not matter.â I call very big cap. That is a wicked and deadly lie.
Yes - technically you can start with any language, but to increase the chance of success to learn how to code and not give up in the process, some languages are definitely better suited than others.
I recommend starting with either TypeScript or Python.
Also a Little Important
- You will find really good content when looking for something like âHow to get into Software (If I could start over)â. I think these kinds of posts/resources are very, very good. (This should probably be in some How to learn anything)
- Be prepared for and embrace the Dunning Kruger Effect. (Click the link to learn more about it. Also maybe look at the pictures.) - There is Beauty in the Struggle
YouTubers
- Fireship (entertainment) Bro is all over the place. He does Videos. Highly recommend
- Web Dev Simplified (wisdom) Channel dedicated to making web development easy to understand for both beginners and experienced developers.
- Net Ninja (wisdom) Channel dedicated to Frontend & backend web development, databases, mobile development, etc.
- bigboxSWE (entertainment) Bro is all over the place. He does Videos. Highly recommend
- Theo (wisdom - advanced) Does TypeScript, Next.js, tRPC, web performance, developer productivity and builds startups.
- Lydia Hallie (wisdom - advanced) Creates visually engaging technical deep videos that demystify complex programming concepts. Especially about JavaScript and V8 engine.
- Core Dumped (wisdom - advanced) Focus on demystifying low level software concepts, systems programming, and operating system internals.
- (Many more, but those should do)
1. Setup Diving Gear
As I already mentioned before, and in the post Is black box learning better? (Have we been learning wrong all this time), I think the best way of getting started with programming, or anything for that matter, is to consume lots of content to know whatâs out there.
So instead of just randomly starting to consume, Iâd like to propose a framework for consuming in the best possible way via YouTube.
If you donât want to mix software content with your regular YouTube feed, you can create a separate channel on your youtube account. (Itâs kinda like Netflix profiles and allows having different 4u pages on the same account - and you keep YouTube Premium.)
But it might actually be better to mix software with your regular feed so that the interest in software stays alive and doesnât get forgotten.
And remember:
- DO NOT expect or try to remember everything - you wonât, nobody does. This is why we have Stack Overflow, Google and AI. This video is a must watch (The video is part of the playlist found in 3. Dive into the Ocean)
2. Observe the Ocean
This is where you start binge watching.
In general, Iâd recommend watching random videos about people building cool software - not only tutorials.
Hereâs a starter playlist and a list of YouTubers to get going. (For the list of YouTubers, watch the âentertainmentâ tagged ones).
Feel free to watch other random videos too.
Start with step 3. Dive into the Ocean whenever you like (I recommend consuming at least 7 hours of material).
3. Dive into the Ocean
This is an introduction to step 4. Pick Your Poison. The playlist has two videos that talk about the different domains for software fields.
Donât overthink the ârightâ choice. Once you feel grounded and at home in programming, switching focus wonât be too difficult.
Software - Choose Path - Playlist
4. Pick Your Poison
This is where you think and choose what youâd like to start with.
We will talk about the different options and how to start with each one.
Start by what YOU want to do, not what language to learn.
Paths
Each branch I have noted if their career future is safe and how difficult it is to learn (to get into).
- Web Development (Has future, easy to get into) (Very popular)
- WEB DEVELOPMENT explained in 10 minutes
- I recommend starting with Next.js - Next.js YouTube playlist by Web Dev Simplified
- Then understanding the âbottom layerâ meaning web dev via vanilla JavaScript
- If you learn React or Next.js (which you can think of as a superset of React), learning React Native with Expo for mobile development is not that hard
- Mobile (Has meh future, easy to get into. See explanation here)
- I recommend a cross-platform framework like React Native (Expo) or Flutter
- Desktop (Has very meh future, easy to get into. See explanation here)
- DevOps (Has future, little difficult to get into)
- Embedded Software (Has future, little difficult to get into)
- Also kinda fun
- Data Engineer and Data Analyst (Probably has future, little difficult to get into)
- (They are technically different things, but they are used interchangeably often)
- Games (Has future, depending on type of game, difficult or less difficult to get into)
- Unity
- But there is also Godot for simple games, and Unreal Engine for photorealistic games
I also recommend taking a sneak peek at https://roadmap.sh/.
The roadmaps are, in my opinion, way too detailed. Much of whatâs on there even experienced programmers wonât know, and they can still program well. But itâs maybe not bad to get a rough overview.
There are also - so called, Projects for practice. They could be helpful for practice. Take a look at this.
Donât just learn, build | Announcing Projects on roadmap.sh
Programming Language
People may say âthe programming language you start with does not matter.â I call very big cap. Thatâs is a wicked and deadly lie.
Yes - technically you can start with any language, but to increase the chance of success to learn how to code and not give up in the process, some languages are definitely better suited than others.
- When starting with programming, donât worry about picking the right programming language or the right field. Just pick one that interests you and is not too difficult to learn.
- You should strive to learn new stuff all the time. So if you start with game dev and later want to get into web dev, thatâs fine. In fact, thatâs good since you are hyped about learning new stuff. Try to always be excited to learn something new.
- As a software engineer, you will have to learn new stuff regularly, so getting proficient at learning new topics by constantly working on projects where you learn something new is very, very, very good.
- For almost every programming language, âProgramming with Moshâ has a video for it, and most of the time they are really good. In general, never choose language tutorials that are longer than 1 hour.
- I recommend TypeScript since can be used EVERYWHERE. Websites, servers (with some problems), mobile, much more. Itâs also not compiled but interpreted, so scripting and the use of it in CI is very easy and effective.
I recommend starting with either TypeScript or Python.
Later, once you have learned a programming language well once, all you need to learn another is a 10-minute video like this and you will be good to go (and use Google if you forget stuff): Every single feature of C# in 10 minutes
Development Environment Setup
Dev setup:
- Create a GitHub account
- Git
- GitHub Desktop
- Visual Studio Code
- Node.js
- Python (make sure to select âadd to pathâ in the installer)
If youâd like to start programming with AI tools, I recommend one of the two options here:
- Only use it once in a while, not too often. Also, if you feel like the AI is doing stuff that works but you donât understand, be careful. (I recommend Augment Code)
- If you donât have the discipline, itâs probably better if you donât use AI
Closing
Remember: the goal isnât to remember everything or understand every detail before you start. The goal is to get excited and learn by doing.
Start with what interests you, consume lots of content to get hyped, then dive in and start building.