@kia.eth asked if I’d write more about my path to becoming an engineer, so here it goes. For those who don’t know me, I’ve been a software engineer for 5+ years, and taught myself to code after graduating college. I’ll tell you what materials I used to learn to code, and three pieces of advice I would tell my former self.
Here’s what I used to learn (in 2019-2020):
David Malan’s CS50, mostly to get an overview of different paths to take
Fundamentals of Javascript textbook (the first one I found that’s free + online)
The reactjs and nextjs docs, plus some YouTube tutorials
Now of course, we have ChatGPT and a lot more YouTube tutorials, so I would probably use those things too if I were learning again today. But the point is that everything you need is free and available online.
And now for some advice that may or may not be helpful:
Push through to the plateau
The learning curve for programming is very steep—that’s why most don’t try, and most that do fail. But the beginning is the hardest part, and it does get easier.
I remember sitting in class on the day we “learned” a tiny bit of HTML and CSS. I use quotes because we made a 100px by 100px red square. And I remember sitting there thinking, “how the fuck does this red square turn into something like espn.com” But that’s always how it feels at the start of a curve.
Once you hit the plateau, the thing you realize is that beyond the basic skillset, really what you’re doing is learning how to learn. Engineers constantly pick up new libraries and APIs. A huge part of the job of an engineer is understanding how to read through the code that someone else has written, get familiar with it, and then use it to make your code better. And with each new library you learn, you become a better engineer.
Start where you’re most curious
In college I was very lucky to have some friends give me contract design work without any prior experience. And when I would design things, often I’d notice that things didn’t quite look right—a border or color would be off, maybe the text was too small, or an animation would be missing. And I would watch the engineers fix the issues and wonder, “what are they doing?” Can I do that too? How?
Eventually that led me to wonder more about CSS and learn more about it, and start sending CSS changes directly. And once I was there, I started to wonder how data and other elements got to the screen in the first place. How do you change pages? How do you update data? And I kept going down the rabbit hole. I learned by noticing the gap between my designs and the engineers’ code, wanting to fill them myself, and then wondering why I couldn’t just build things too?
You can do it
Sometimes I ask myself why I was able to learn to code later in my 20s, having tried and failed so many times. The answer is simple: I wanted to. When I was a kid I liked the idea of building things, of being a technologist. After all I was a nerd—I used to watch Steve Jobs keynotes for fun in middle school. But I didn’t understand what it meant to actually build things myself. I didn’t have the rabbit holes to jump down, and I wasn’t driven.
It wasn’t until college that I had worked at a few startups and tried / failed a few times myself, that I was actually motivated. I saw how small groups of people can and do build new things, that something you build on a laptop can be used by tons of people. Having to get other people to do the building for me felt like a crutch. I finally wanted it, and not being able to build things myself was frustrating. Eventually that feeling boiled over.
You don’t need any special skills. You don’t need to be good at math, and you certainly don’t need a degree. Do bootcamps and tutors make it easier? Of course. But really what they’re doing is keeping you accountable. All the materials you need to learn exist online and for free.
The reality is that it will suck. Anything worth learning does it first. The first thing you build will suck, and the second, and probably the third. Keep going, you will get better. In this case, you really can just do it.
@kia.eth asked if I’d write more about my path to becoming an engineer, so here it goes. For those who don’t know me, I’ve been a software engineer for 5+ years, and taught myself to code after graduating college. I’ll tell you what materials I used to learn to code, and three pieces of advice I would tell my former self.
Here’s what I used to learn (in 2019-2020):
David Malan’s CS50, mostly to get an overview of different paths to take
Fundamentals of Javascript textbook (the first one I found that’s free + online)
The reactjs and nextjs docs, plus some YouTube tutorials
Now of course, we have ChatGPT and a lot more YouTube tutorials, so I would probably use those things too if I were learning again today. But the point is that everything you need is free and available online.
And now for some advice that may or may not be helpful:
Push through to the plateau
The learning curve for programming is very steep—that’s why most don’t try, and most that do fail. But the beginning is the hardest part, and it does get easier.
I remember sitting in class on the day we “learned” a tiny bit of HTML and CSS. I use quotes because we made a 100px by 100px red square. And I remember sitting there thinking, “how the fuck does this red square turn into something like espn.com” But that’s always how it feels at the start of a curve.
Once you hit the plateau, the thing you realize is that beyond the basic skillset, really what you’re doing is learning how to learn. Engineers constantly pick up new libraries and APIs. A huge part of the job of an engineer is understanding how to read through the code that someone else has written, get familiar with it, and then use it to make your code better. And with each new library you learn, you become a better engineer.
Start where you’re most curious
In college I was very lucky to have some friends give me contract design work without any prior experience. And when I would design things, often I’d notice that things didn’t quite look right—a border or color would be off, maybe the text was too small, or an animation would be missing. And I would watch the engineers fix the issues and wonder, “what are they doing?” Can I do that too? How?
Eventually that led me to wonder more about CSS and learn more about it, and start sending CSS changes directly. And once I was there, I started to wonder how data and other elements got to the screen in the first place. How do you change pages? How do you update data? And I kept going down the rabbit hole. I learned by noticing the gap between my designs and the engineers’ code, wanting to fill them myself, and then wondering why I couldn’t just build things too?
You can do it
Sometimes I ask myself why I was able to learn to code later in my 20s, having tried and failed so many times. The answer is simple: I wanted to. When I was a kid I liked the idea of building things, of being a technologist. After all I was a nerd—I used to watch Steve Jobs keynotes for fun in middle school. But I didn’t understand what it meant to actually build things myself. I didn’t have the rabbit holes to jump down, and I wasn’t driven.
It wasn’t until college that I had worked at a few startups and tried / failed a few times myself, that I was actually motivated. I saw how small groups of people can and do build new things, that something you build on a laptop can be used by tons of people. Having to get other people to do the building for me felt like a crutch. I finally wanted it, and not being able to build things myself was frustrating. Eventually that feeling boiled over.
You don’t need any special skills. You don’t need to be good at math, and you certainly don’t need a degree. Do bootcamps and tutors make it easier? Of course. But really what they’re doing is keeping you accountable. All the materials you need to learn exist online and for free.
The reality is that it will suck. Anything worth learning does it first. The first thing you build will suck, and the second, and probably the third. Keep going, you will get better. In this case, you really can just do it.
Subscribe to @matthew
Subscribe to @matthew
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
@matthew
@matthew
No activity yet