First things, first
Hey everyone! I’m back today with a new blog and I’m sorry for the long pause since the last one, it’s been a busy couple of months, I was working on the Postman Vault & Postman Vault Integrations, both of these features were unveiled during POST/CON 2024 and these are very exciting times, at least for me! You can checkout the POST/CON stream on YouTube. Looking forward to you trying out our feature on Postman. Anyway, coming back to today’s blog, I will be delving into, (🥁 drumroll please)
How I’d learn to code, if I were to start today
So, I’ve been a software engineer for over 7 years now, even more if we’re just talking of my coding experience. I started coding back when I was in 5th grade, with a little bit of BASIC, and later some ActionScript to build out some flash (🪦 RIP) games - being the video game nerd I am.
In 2012, I was introduced to C in my first year of engineering at Dayalbagh Educational Institute and then graduated to using Java in 2013 during my second year. It was 2014 when I first picked up JavaScript and web development because I was so inspired by Apple’s website that had a video playing in the background as you scroll through the page, I was able to build a similar website using the animation library GSAP and realizing that I was capable of replicating something a tech giant like Apple built out was rewarding to say the least. This was the time when I also dove into Python and Arduino to work on my capstone project, a Raspberry Pi based surveillance robot that had a camera and could be controlled over SSH. In 2017, I started working as a software developer, and well, here we are today, I’ve developed a pretty vast skillset right from several programming languages, CS concepts, data structures, algorithms and all the other shiny stuff.
I hear you thinking, 'I don’t have 7 years to learn all this,' and 'the tech industry is pretty bad at the moment,' and you’re right. Today, companies are on the lookout for 'experienced' or 'senior' engineers instead of hiring new grads or interns and then training them. Everyone wants to hire people who can hit the ground running, so to speak. How you can be that person is exactly what I’ll cover in this blog. So, if I were to learn programming today, how would I approach it?
A disclaimer before we start…
You’re going to read some hot takes over the next few paragraphs.
I’ve been a full-stack engineer all my career, and I enjoy writing backend code as much as I do frontend. Not just that, I like to delve into various other things like game programming, designing, and systems programming, etc. because I actually enjoy things. Honestly, I still feel there’s so much I need to learn and not enough time 🥲. This is to say, there’s no wrong way to learn programming, and what you’re reading in this blog are just the opinions of one person, me, and may not sound appealing to everyone.
So, How?
Hot take: I would not start with HTML, CSS, or JavaScript in 2024. Over the last few years, when someone approached me, I would always advise them to try frontend first by learning HTML, CSS, and JavaScript, and then learn React because that was simply the best recommendation back then. Frontend is easier to get started; if you do it right, you could easily land your first job in 4-6 months. But (yes, there’s a but)… There’s too much saturation; everyone today knows React, even JavaScript for that matter. In 2024, you need a lot more than just these to be a 'high-value' software developer. Or… You could teach your brain how to learn anything and stay ahead of the curve, and that’s exactly what I would do:
- I’d start with CS50X, hands down the best free resource on the internet to teach you Computer Science, not just programming. If you pay attention, you’ll have a solid foundation for everything that’s to come. By the time you’re done with CS50X, you’d have dabbled in C, Python, HTML, CSS, and JavaScript. You’d know enough to develop things from basic CLI apps to decent websites. This is definitely a slightly difficult course but is taught by one of the best professors in software engineering, David Malan. A beginner may need to spend somewhere around 2 months to complete this course fully, but like I said, you’ll be in a pretty good shape by the time you’re done with this.
- By the time I’m done with CS50X, I would start contributing to open source. Just search for “how to get started with open source,” and you’ll find tons of resources that will help you do exactly that. Try to make at least 1 contribution every week.
- Right after that, I would learn how AI works, not just prompt engineering or how to use the OpenAI APIs but…, how ML & AI work without a blackbox. This playlist by Radu Mariescu-Istodor is a great resource for that. Once I’m done with this playlist, I’d probably check out his other playlists and then the CS50AI course if I’m feeling adventurous.
- Right after that, I would recommend going through CS50W to take things full circle and brush up your web dev skills.
- With all that out of the way, while continuing to make my open source contributions, I’d start learning Rust. It is one of the most satisfying programming languages to write code in, did I mention, it is super fast and the compiler is going to be your best friend? Rust can be used for a lot of things from systems programming to Web3. Since you’re fresh out of CS50, your CS concepts must be pretty fresh right now and that is exactly why learning Rust will teach you to write high quality, clean code. To learn Rust, I would recommending watching this video by No Boilerplate (thank me later). Once I’ve learnt the basics of Rust, I’d start making open source contributions in Rust.
Note to those who’re wondering, why Rust - because it has one of the best compilers, it is enjoyable to use, it will teach you some low level concepts gracefully and lastly it has a lot of scope. But if for some reason you hate it, you can try Go instead.
That’s it, yes, that’s it… Because, by the time you get here, you’re ready to take on most of today’s challenges. You haven’t learnt just a language or a framework instead, you’ve learnt how to learn anything and that’s the most important skill you need to be a “high value” developer. So, if you feel like getting deeper into frontend, go ahead, backend? Sure. You can learn any library or framework, and even master them, but what you’ll also be able to do is consistently repeat that “lightning in a bottle” moment for everything you learn or set out to learn. Tech is advancing really, really fast, to be ahead of the curve, you need to be a learner.
What next?
Well brave adventurer, you’ve come to the end of this blog journey, but you’re ready to take on the tech world. It’s dangerous out there, so take this “knowledge” with you (Legend of Zelda reference for the uninitiated). Well, good luck and feel free to reach out to me on my socials if you need help.