I Taught Myself How to Code
I wish it were as easy as some magic list that, after you were done reading, could get a job as a developer. The truth is a bit more simple... consistency and discipline.
That's my actual desk, by the way. It's horribly ugly; I didn't even clean up to take that picture. Two coffee mugs, an empty bag of Haribo Starmix gummies, two mice (I can explain), an iPad on a 3D Printed phone stand... it's a mess, I know. Not important right now, okay?
I think any big career change, at least the ones that I've witnessed, have stemmed from someone being unhappy. Unhappy with their current job prospects, unhappy with the amount of money they're making, unhappy with vertical or horizontal growth opportunities... just unhappy.
My story is no different. In all of my previous jobs, I was unhappy. If you read My Name Is Heath, then you'll know that I have a degree in Petroleum Engineering, worked for a number of years as a Mechanical Design Engineer, and now am a Customer Success Engineer for an IoT startup. Up until this job with the startup, each job in my past has been more miserable than the last.
So, one day, I got tired of being tired and started to look around at what was our there. I asked myself:
What could I teach myself, in a reasonable amount of time, where there is plenty of free-to-low-cost material online, that could pay as much (if not more) than my already pretty good engineer's salary?
I know, a lofty question. But there was really only one answer... Code.
Where I Started.
Listen, I'm not the sharpest shed in the tool. Everyone has to start somewhere, and that's where I happened to start.
To be 100% honest with you, I didn't know that I wanted to be a developer. I just knew I wanted to work for a startup, and that most startups weren't hiring Mechanical Engineers with Petroleum Engineering backgrounds. They were hiring developers. So, that's where I started.
But what kind of developer did I want to be?
I read thread after thread on r/learnprogramming on the types of software development available. Web? Embedded Systems? Backend? Frontend? Dev Ops? All of these options seemed to be viable, but one stuck out to me, as I did my reading, googling, and searching on places like Udemy and YouTube.
Why I Chose Web Development.
I chose web dev for a few reasons:
- Almost instant feedback. When I make a change to my websites HTML/CSS/JS, I get to see those changes instantaneously. Working with a database? That connection and CRUD operation is almost instantaneous. I needed that as a new developer.
- Barrier of entry. It's super low for web dev. You don't need a fancy Macbook, you don't need a top of the line Windows laptop with dedicated graphics, all you need is a computer with a web browser.
- Web is the future. Now, this last one is my opinion for sure, but as tech moves forward, I think a lot of the innovation will happen on and with web technologies. Sure, there will be some sweet advances in Machine Learning & Artificial Intelligence, but you'll end up accessing those through APIs (i.e. GPT-3 and OpenAI). My opinion, also, is that learning Web Technologies is good "gateway drug" into the world of software development. Once you learn how to use web technologies, I think it's easy to then move into the next step of learning backend or DevOps technologies.
It's no secret that Web Technologies are everywhere. With Progressive Web Apps, you can install a web app. React Native takes Web Technologies to apps on your phone. Electron takes Web Technologies to your desktop as application (Slack, Discord, VSCode, all Electron). If you want to build something that people use daily, it has to be accessible. What's more accessible than the internet?
Web Development, in my opinion, is the place to be if you want to make things that will be seen and has the lowest barrier for entry.
It wasn't magic. Actually, before I sat down to write this I read a quote:
It's not magic. It's hard work, discipline, dedication, and consistency.
That's exactly how I approached learning how to code. I set aside 1-2 hours, sometimes more, a night to go through a Udemy course, and code alongside it. I took part in the #100DaysOfCode Challenge.
I also surrounded myself in "all things web". I followed all kinds of developers on Twitter (my social media of choice), I read blogs in my free time, I even joined programming subreddit Discord servers so that when I was in Discord chatting with my friends I could pop over to a different server and see what everyone was talking about, or the types of questions that people were asking.
Here's what a typical day looked like for me:
- 6:30am - Wake up, shower, go to work.
- 7:30am to 4:30pm - Work work work work work.
- 5:00pm walk the dog, make dinner, enjoy a tv show or 2.
- 7:00pm - 11:00pm - code.
That last item, code for 4 hours, is a bit interesting. It wasn't like I was only writing code, or only watching videos. I used this time to just learn. What do I mean by that? I mean that I used this time to watch YouTube videos from TheNewBoston, and The Net Ninja. I used that time to go through a section or two of a Udemy course. I used that time to read blogs and see what developers were talking about on twitter.
I also made sure that I was dedicating time every day to learning these things, to reading, iterating, and making. If I were to only get 1% better every day, I'd get better quickly. The ole Kaizen approach.
The Resources I used.
This is a highly touchy, and highly personal section. This list is in no way comprehensive... I taught myself how to code over the course of about a year and a half, so there's no way (unless I had had the future thinking of keeping track of this) I could remember all the blogs I read or the developers I followed. So, here's the list of the major things I used to help myself, and hopefully they help you.
- The Complete Web Developer in 2021: Zero to Mastery. Andrei is a fantastic instructor, and this course is updated very frequently. The community around this course is also fantastic.
- The Web Developer Bootcamp 2020. Colt Steele and this course was the first course I took. Colt has since updated this course, and it's another fantastic one. A great place to start.
- Traversy Media. Just an all around great resource. Brad and his team are, again, fantastic. Their content is great, their teaching style is great. Almost any time I have a specific question on how to do something, I always check Traversy Media first.
Finally, the end.
Thanks for reading through this whole thing. If you have more questions, reach out ot me on Twitter, or on my Contact Page. I'd love to help folks who are starting on this journey themselves and answer any and all questions you might have. There are no stupid questions, only Zero Knowledge questions. So ask away!
Until the next one, stay curious.