281: Marketer to Programmer in 6 Months

This is the Monday Medley, a newsletter that goes out, you guessed it, every Monday. I republish it here for sharing and referencing, but if you'd like to sign up you can do so right here:

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Happy Monday!

I published a DeFriday last week about borrowing "Magical Internet Money" against yield-bearing tokens, one of the crazier new DeFi options out there.

Also if you're a member of the Every bundle, I'll be doing a walkthrough of some DeFi basics for our community on Thursday at 1pm CT!

Alright, on to the newsletter.

Going from Marketer to Developer in Six Months

This week is my six-month anniversary of deciding to go all-in on learning programming.

I've always thought it was fun, and I dabbled with it some back in 2014-2015, but I've never had the time or energy to go all-in on learning it. But in March, after the whole Creator Towns idea clearly wasn't going to work out, I figured then was my best opportunity to actually give it a go.

I also finally had a compelling reason: crypto. I'd been interested in the space since 2017, but now there felt like there were things to actually do with the technology, and it provided an exciting reason to learn programming.

I already published an article about learning Solidity, so this will be more focused on where to start if you have similar goals of making a significant career switch.

And this will be focused on learning full-stack Javascript since that's what I learned, and it seems to be the most broadly desired programming skillset these days. Especially if you want to work in Web3.

Project Driven Learning

Sitting through online courses can get pretty dull pretty quickly. Even the best courses will get stale after a while, especially if you're unsure how the material is going to translate to a real project.

I found the best way to learn was to do a kind of zig-zag approach between projects and courses. I'd start trying to do one project, and then as I hit the limits of my knowledge, I'd circle back to a course to try to learn more to get past the hurdle.

I spoke about this some in my last newsletter, but there are two distinct phases to learning a new skill:

  • Structured: where you cannot advance on your own through trial and error + googling. You need to build your foundation first.
  • Self-Advancing: where you can grow organically by responding to obstacles in your path and either experimenting or googling.

So let's talk about getting through the Structured part as fast as possible:

Structured Foundations

HTML & CSS

To get started for full-stack JS you'll need to know the basics of HTML & CSS. If you don't already know them, check out a free program like Codecademy. This is the easiest part to learn, so there's no need to go crazy with a fancy or expensive program.

Javascript

From there, you need some Javascript fundamentals. There are two ways you could do this:

One option is to just work through Beginner Javascript by Wes Bos. It's a fantastic program and it will get you up to speed pretty fast.

The downside is it's kind of long, and you might get bored. So if you want to learn in a more challenge-first way, try to work through Javascript30 first, and check out Beginner Javascript for when you get stuck.

However you do it, once you're through those you should have a solid JS foundation in place to move to the next step.

React

React is a framework for Javascript that makes websites more responsive and app-like, and is used pretty extensively by most webapps these days. So especially if you want to work on webapps or in Web3, this is your next step.

Wes Bos does have a React course, but it's out of date. Instead I'd recommend checking out this Modern React course, but you only need to go through the first 220 lectures. Don't bother with the Redux part.

From there you'll have a really solid foundation to start doing more projects on your own!

Self-Advancing Learning

You could really start doing this as soon as you start to make progress in the Beginner Javascript course. Self-Advancing just means you're learning by trying something, hitting errors, then googling around to figure out how to fix the errors.

Or, you want to do something but aren't sure how, so you google around till you find someone explaining how to do it. That's really all there is to it.

The biggest challenge with self-advancing learning is making sure you're constantly encountering new challenges that are pushing your skillset forward. As with any skill, if you're just repeating what you already know how to do, you're not going to learn much. You need to always be on the edge of discomfort.

To do that, you'll want to have an endless list of ideas of projects you could build. The simplest way to generate this list is to think about the apps you use every day, and then consider which ones you might try to build yourself. Certain apps would be very easy to hack together, like a to-do list. Others might be considerably harder and have to be saved for later.

It helps if you're building stuff that you'll actually use, too. I worked on DeFi Calcs because I was doing that math all the time anyway, and wanted a good tool to do it with. And it happened to be a great way to practice JavaScript and React.

Another thing that can help at this point is building something, then starting to do a course but instead of following the course explicitly, watch a section and then try to implement what it's teaching you on an app you've already built.

So when I decided to learn NextJs, I worked through the first half of this course, but instead of doing the projects I tried remaking some stuff I had already built but using Next. That was a really helpful way to learn the material since I was applying it to something I cared about, instead of an abstract project.

I know this isn't a super structured guide, but I do think that if you follow it and try to emulate it you can get surprisingly far quite quickly without having to do a bootcamp.

Build enough of a foundation to start hacking on some projects. Build stuff that pushes the limits of your abilities. And continue to work through education material, incorporating it into the things you're already working on.

If you can do that, you'll be amazed at how fast you can learn.

Have a great week!

Nat

Enjoyed this? Be sure to subscribe!