My ultimate web development reads

Sunday, May 2, 2021

TL/DR;

If you're new to software development or just curious about learning more big-picture topics, it can be hard to find the right resources. We all learn optimally in different ways, so success ultimately depends on how you learn best.

I have always desired a well-defined outline up-front to understand the various working "concepts", which then each drill down into a problem definition, the solution, and then a concrete (hopefully simple!) example of what the concept looks like in the real world.

I am often asked what specific resources I would offer to someone who is learning web development. I am writing this post to put together My Ultimate Web Development Reads as a one-stop shop for the resources that I found most helpful in my journey.

The intended audience for the following list is folks who are currently interested in- or recently transitioned to a hands-on technical career, but it could also be useful for anyone with general curiosity. I offer a brief explanation of what the resource offers and why I like it. Oh, and they're free.

I did order these on purpose. I think each will build nicely on the previous resource's concepts. However, each one can be independently read on its own.

Computer Science

Resource: Crash Course Computer Science

We hear all the time about how computers are just 1's and 0's. Do you ever wonder how that actually works? Why is it 1's and 0's? Do you ever see a job description that says it requires a Computer Science degree (which you don't have) and wonder what is actually taught? And how can you acquire some of this knowledge without 1) paying for it and 2) being confused and discouraged by dense technical explanations and/or the year(s)+ time commitment?

Well, then Crash Course Computer Science is for you. The Crash Course Computer Science video series on YouTube is comprised of more than 40 videos about ~10-13 minutes each that build on each other to explain computer science. It is the best overview of computer science I've encountered on the internet. It will put into context how clients/browsers and servers can do what they do. Sit back with some popcorn and soak in the info. Don't feel the need to remember every single thing, but just remember that it's all about layers of abstraction.

Web Development

Resource: MDN Web Docs: Learn Web Development

MDN Web Docs "Learn Web Development" is the best place to start learning how to make websites. They explain the tried-and-true building blocks of web development, exploring the various domains of the engineering process to create web-based applications.

I have returned to this resource multiple times throughout my coding career to refresh my knowledge. Also, most developers look up syntax many times throughout a project, and MDN Web Docs is one of the best places to find clarity. Check out this explanation of Javascript's Array.map() method.

I'm going to make two honorable mentions here, since they helped me out a lot in this area, too:

  • Critical Rendering Path - As a web developer, your domain includes the browser: a ubiquitous application that does many, many things that we all take for granted. Sometimes we create apps that perform poorly, and sometimes that's due to not understanding how browsers take your html and create a consumable web page. This Google resource is all about understanding how this html-to-page process (the critical rendering path) happens, and reveals how you can speed up your time to first-paint metrics.
  • High Performance Browser Networking (hpbn.io) - Especially in the modern web, there are a lot of machines/computers talking to one another. Understanding all the stuff that goes into making that communication happen, and how it happens, will be helpful when creating and consuming APIs.

Application Development

Resource: The Twelve-Factor App

We are making apps that run as- or provide a "service". This is Software-as-a-Service (SaaS). But how should you architect your app and codebase to make it easy to work in and provide consistency across environments (local, staging, testing, production, etc.)?

The Twelve-Factor App is the holy grail for modern application development, regardless of programming language. It explains an approach that can use any combination of backing services (database, queue, memory cache, etc). Any developer building applications which run as a service should read this.

Application Architecture

Resource: Microsoft Azure Application Architecture Guide

Amazon Web Services, Google Cloud Platform, Azure, etc... Cloud platforms allow you to build applications in a modern, highly resilient, and scalable fashion. They're also complex and can be hard to digest for the aspiring or early-career developer. I think the Azure Application Architecture Guide does an excellent job of "guiding" people through this wilderness.

I know what you might be thinking: Microsoft? The Windows company? Am I going to have to know Azure and ASP.NET to understand this? I had these same fears, but the answer is no, you don't.

This is a great, abstract resource because you get everything from a high-level overview of cloud architecture styles to API best practices. There's also an awesome explanation of antipatterns, which provide really nice problem contexts that are solvable through application code refactors or popular cloud architectures.

There is so much good knowledge here to confirm you're doing things the "right way". Definitely bookmark this page.