If I Were to Do It Again, Part I: Learn the basics without spending a dime

April 26th, 2020

I am now about 8 months into learning software development, and it’s been 4 months since I started studying full time, and 2 months since I started the App Academy online bootcamp.

The other day, I was thinking upon my journey so far, what I’ve done right, and what I’d do differently.

Overall, I’m pretty happy with the choices I’ve made and the direction I’ve gone, but there is always room for improvement. In another article some time soon, I'd like to discuss what those steps have been.

In this post, I wanted to take a moment to reflect on what, if I were to start from zero, I would do. I hope that this article can serve as guidance to anyone looking to get into the software development field. It can be daunting to start learning programming on your own. What language to start? What courses and resources to use? How much to practice?

There is of course no right answer here, but if I were to start learning software development again, here is what I would do.

Start Slow(ish) and Be Cheap

Before you sign up for some bootcamp and cosign away 15% of your income for the next couple of years or quit your job to lock yourself in your parents’ basement for 6 months teaching yourself to code, you should see if you like it and get a lay of the land.

Life as a developer isn’t for everyone. Sure, everyone can learn to code, but that doesn’t mean it’s something you want to devote yourself to. Coding is interesting, engaging, and a constant challenge, but it totally has it’s down sides that might mean it’s not for you. You are sitting in front of a computer screen all day, often with no company, and you often get stuck digging into problems that make you want to tear your hair out, just to name a few downsides.

Before you fully commit to the life of code, learn the basics and make sure it’s the right choice for you. Plus, you’ll have a nice foundation for when/if you decide to dive full in.

I'd estimate that doing everything outlined below will take approximately 2 months if you're studying 15hrs/week.


For anyone looking to learn software development, I highly recommend finishing The Odin Project (TOP) Web Development 101. It’s a free online curriculum that aggregates some of the best free resources on the internet, and blends them together into a unified curriculum, with some cool projects thrown in. It’s instructions aren’t super in-depth, but gives you just enough structure and guidance to push you along. Plus, this builds independence and self-teaching, necessary traits for any developer.

TOP provides a great foundation for further learning, and you get to produce some cool projects like a tomato timer and calculator.

I’d estimate finishing TOP Web Dev 101 takes around 80 hours if you want to do it right. I’d devote approx. 10-15 hrs/week for 2 months to it, so you’re getting constant practice, but can still continue with your other commitments in your life as you get a lay of the software development landscape.

Once you’ve finished TOP Web Dev 101, you can probably get into virtually any bootcamp you’d like and be confident that beginning a career in software development is the right choice for you.

Trust in the Algorithms

In addition to the actual programming, start learning about the industry, developer culture, and computer science fundamentals. Use sites like YouTube, Medium, and reddit to wrap yourself in the culture.

Many of these sites are powered by some really smart algorithms that can find content that you’ll like better than you’d be able to, so once you’ve started liking a few topics and content creators, similar stuff will start magically popping up in your feed, keeping you learning (and generating them advertising $$, but that’s a different subject).


YouTube is your best friend for learning about programming, due to its massive volume of content. Just start searching around for topics of interest, and once you watch a couple of videos the YouTube algorithm will catch on and start putting lots of relevant content in your feed.

To get yourself going, here are a couple of my favorite YouTube channels for everything programming:

  • Computerphile: Some very high production value, high-quality deep dives into computer science topics. Not necessarily stuff you’ll use day to day, but provides a nice foundation in theory and CS history.
  • Crash Course Computer Science: More high-quality deep dives into computer science, with an emphasis on the history of computers. What’s extra cool about these videos is that they’re a unified curriculum, not a scattershot of topics of the day, like most YouTube channels.
  • Colt Steele Colt, in addition to having an awesome name, does a really good job explaining complex topics so that they’re easily accessible to beginners.
  • Code Drip - Another dude in his bedroom talking about programming and how to get a software development job. Basically a subgenre in and of itself on YouTube. Code Drip is one of my favorites, but there are many more. Search around and you’ll find more.

A note of caution on YouTube: Don’t waste your time on YouTube learn-to-code instructional videos. If it’s in a video, that means that they’re doing the work. You don’t want to just code along with that because it’s totally passive learning. You’ll barely retain anything and won’t get to engage in troubleshooting and looking stuff up—at least 3/4 the battle of programming.

Don’t forget to read too

There’s also a ton of great stuff on Medium, reddit and scattered around the web. I don’t have any particular recommendations here. I have read a lot of blog posts and articles about programming, but I would mostly find content just through Googling around topics and clicking on links. If I expand this article into a proper guide, I’ll come back and add some resources here.

Talk to People Doing the Stuff You Want to Do

Talk to some real devs! See how they entered the industry, and what their advice to you is. I was lucky enough to have lots of developer friends to talk to, and they gave me tons of invaluable advice and direction.

If you don't know any professional developers, you’re not out of luck. There are lots of other ways that you can meet people in the developer community.

One thing that has always surprised me by how well it has worked for me is reaching out to people on LinkedIn. Find someone who is doing something interesting and send them a flattering message saying how you are impressed by their experience and want to chat w some questions. I’d estimate I get a >50% response rate, doing this and have gotten a ton of great feedback.

It should be noted that if you’re going down this path, make sure that you have a decently curated profile to leave a good 1st impression and make this stranger that you just sent a message to actually want to respond to you.

I've also heard good things about going to coding meetups. Check Facebook and Meetup for stuff near you. I’ve never actually done this, so can't speak to it personally. But I have a couple of friends who’ve had positive experiences with Meetups, and it’s consistently mentioned round the web as a helpful tool for getting into your local developer community.

Part I Wrap Up

Alright that was a lot of words, but really it’s just 3 simple steps:

  1. The Odin Project Web Development 101 to learn programming fundamentals
  2. Watch some YouTube videos and read some blog posts in your free time to learn more about the industry and computer science
  3. Get networking to meet people in the field.

I’d estimate doing all this will take approximately 15 hrs/week for two months. And once you’re done with this, you’ll have a solid understanding of programming fundamentals, have a couple of decent projects under your belt, and know a lot more about the programming landscape.

That’s a hell of a lot accomplished in 2 months, but it’s totally doable, and completely free. Not too bad.

Part II Coming Soon...

In part II of this If I Were to Do It Again series, I’ll talk about why you should do a bootcamp, and how to choose the right one while still continuing to learn programming.