Do you have any thoughts on programs or stacks for learning web development?


A friend asked me this recently and I wanted to capture my response. I’m curious to look back on it in a few years to see what will have changed.


Assuming they want to work on the web: there’s a few primary categories of programming computers you need to know about:

  • Command Line
  • Scripting language (with a backend focus)
  • Database
  • HTML, CSS, and plain ol’ JS
  • Frontend framework
  • Version Control
  • Hosting

I do think it’s important to understand a little bit of everything above. Even if, say, you end up as a front-end engineer you’ll be happy if you know about databases. Likewise back-end engineers should understand how all those services they’re writing will be used to present that information to the end user.

Command Line

If I could go back in time I would take a whole class on the command line. The reality is that you’ll be using it every day and without understanding the basics a lot of other parts of coding will just not make sense. Plus, it’s useful to understand what you _can_ do on the command line since sometimes that’s the best place to do your work.

Oh, and learn just enough Vim to open a file, make a change, and save it.

Backend Scripting

Some sort of backend scripting language. JavaScript could be an answer! Python is another strong choice. It used to be PHP and still is if depending on your company. What you use here will probably change at some point in your career so don’t get too attached. The core idea here is that you can use this language to do “backend things” like changing data in the database, or processing files, etc.

Databases

A relational database of some sort. MySQL or PostgreSQL. If you get into this it goes deep, but to start with you just need to understand how to make some databases, tables, and data.

Front End

HTML, CSS, Javascript

You should have some foundation of how to put a page together using HTML, CSS, and JavaScript. All frontend frameworks are just fancy ways of using these basic tools. My soapbox rant is that we’ve lost sight of that in the web world. You need essentially nothing to get text on a page at a domain name!

Frontend Framework

In 2023 I would recommend React. In 2024 it will probably be something else. The concepts should, mostly, transfer easily to whatever the next thing is. Get used to pining for some feature of some other framework. Get used to conversations about frameworks that start with “I’ve heard good things about…”

Version Control

Git. You don’t need to start with version control, but as soon as you can you should start implementing it into your workflow. If you work with other people you HAVE to use version control otherwise you’ll end up losing work or reinventing a worse version of Git in dropbox (ask me how I know!)

Hosting

You can make all of this work on your local computer, but the magic is putting it somewhere else and seeing it work elsewhere. There’s a deep rabbit hole here. Pick a cheap host and figure out how to get it live. You do not need to dive into AWS/Azure/Cloud infrastructure right now. You will need to later on!

What about Bootcamps?

If they want to go to a bootcamp the answer to “Which boot camp is best?” is constantly shifting. I would ask very recent graduates (as in: graduated in the past year) if they would recommend it. I certainly wouldn’t go to a bootcamp that doesn’t have a money back guarantee or some sort of job placement scheme. Your goal with a bootcamp is to get enough knowledge to land your first job. Everything you do in that bootcamp should be oriented around that goal.

Conclusion

I’ve been making websites for years and years and there’s still so much left to learn and everything is changing constantly. Getting comfortable with learning (or just being confused) is a key part of the job. The reward is that when you get things working the feeling is amazing. There’s just a lot of times where it’s not and that’s okay!