With AI changing coding as we know it, learning languages in depth might not be the best use of time anymore. This article talks about how I learned to code, well before these tools were mainstream. Also, take what I say with a grain of salt. What worked for me might not work for everybody.
Python
The first real thing I did to learn was Codecademy’s Python course. It was free and really awesome for giving me an understanding of the basics. I built some cool things in Python like a Raspberry Pi server to control some Christmas lights in my bedroom or an AprilTags detector prototype for my robotics team.
Learning Python did wonders for my initial understanding of programming basics. Control flow, loops, and functions are super easy to get started with in Python due to the fact that Python reads very similar to English.
Take this loop, for example. It’s easy to understand what’s going on for a first time programmer.
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)I liked Python a lot but many of the applications seemed out of reach for me as a beginner. At the time, before the LLM boom, in my mind Python was a language for robotics and computer vision. I thought these things were interesting, but I wanted to build things that I could apply to my life right away.
Javascript
I think I owe a huge amount of my initial awe of programming to this Ottomated video. Especially Javascript programming. I really liked the idea of being able to build nearly anything I could think of.
Here’s where the bulk of my learning comes in.
Initially I learned just basic Javascript as a language. Then I started learning tools like React, Next, and others. I worked on some fun basic projects and got to really enjoy the React ecosystem.
Typescript
The discovery of Typescript was life changing for me. The thought that you could know the shape of objects/variables before running code was somewhat foreign to me as a new programmer. This concept is super powerful and makes codebases infinitely more scaleable.
Typescript has completely won me over. I don’t think I’ll ever touch a vanilla JS codebase again, unless I have to.
Learning typescript and understanding language/framework primitives well unlocks so much in the TS/React ecosystem. If there’s some basic chunk of functionality you need, there’s probably an NPM package for it.
Learnings
Here are some overarching lessons I learned throughout the process of learning to code (which never ends by the way!) that I think anyone can apply to learning to build software.
Just Do It
The Nike slogan also applies to learning anything technical. Want to learn calculus? Do Calculus (a bunch of problems). Want to learn CAD? Do CAD (model a bunch of stuff).
The same principle applies to software engineering, at least in my experience. Tutorials and reading were great for getting me 40% of the way there. Actually building projects and getting in the weeds was what taught me the most by far. If I wanted to build something, I’d just start building it. If I hit a road block, it was Google and Stack Overflow until I could figure out the issue (seems like forever ago with LLMs nowadays!).
Actively building instead of actively learning will teach you more about building software than books or videos ever could.
Build things you’re passionate about
The best way to learn and have motivation to build is if you’re building things that you actually want to build. For example, to learn about React for the first time, I build a super simple stock tracker. I was excited about it not only because I was learning to code but also because it would serve a practical purpose and involve something I was interested in (stocks).
Don’t pick the tech stack to learn and then pick a project to build. Do the opposite. While there are many ways to build something, pick a project idea or something you think would be interesting to build and then pick a tech stack that will best help you accomplish that end result.
Want to build a machine learning model? Learn Python and PyTorch.
Want to build a website for yourself? Learn Typescript, React, and CSS.
Keep learning
Learning never really “ends” when your building software. I think the most senior engineers at the biggest companies or most popular startups would tell you that they learn new things about software all the time. While that might not be learning new languages or entire new frameworks, your way of thinking as a software engineer will change all the time, and you should embrace that growth.