Web Development

What it is

Web development is the process of creating software that is distributed over the internet as webpages.

There are many ways to get software as a consumer, from buying it on a CD in a Best Buy to downloading a video game on Steam. It almost feels strange to compare a web app like Facebook to a heavy desktop app like Photoshop, even though both are software.

Getting a web app is as simple as typing in “Facebook.com” in the browser, and doesn’t require any lengthy install process, making it feel like a totally different category. This seamless experience is precisely why the internet is so popular and why the majority of software that people use in their day to day is through web apps.

The delivery mechanism your software uses will fundamentally influence the process of creating it. Even though Facebook and Photoshop have the same fundamental components, such as a GUI, writing them requires learning a totally different set of tools, languages and technologies.

There’s a bevy of options for creating GUIs for desktop apps, but if you want to write an iPhone app, you are basically locked into building your UI in Apple’s proprietary XCode editor. Since web apps run in the browser, you have to write your app in the languages that browsers know how to run, namely HTML, CSS and Javascript.

Learning web development from scratch is 50% learning how to program in general and 50% learning the ins and outs of its delivery mechanism, the internet. You’ll spend just as much time in a job fighting against random internet stuff like setting up authentication or caching as you will writing code.

These tidbits are what make learning web development hard. Even if each individual thing isn’t too difficult to wrap your head around, the sheer number of buzzwords and pace of change can make your head spin.

The client-server model

Loading a webpage is really just downloading a program and running it in the browser. The code that is sent over the internet to be run in the browser is known as the client. The client, in turn, sends data back to the central server. Facebook has a fleet of computers running in datacenters that collect and organize all of your data in databases.

Writing code for the client is called frontend development, while writing code for the server is called backend development. Most web developers specialize in one or the other. If you do both, you are a “full stack” developer.

Frontend development entails writing HTML, CSS and Javascript to build UIs in the browser, as well as all the configuration and optimization to make it load quickly and run smoothly, such as using a build tool to minify your code. Backend development is broader, but typically entails writing the code that will run your web server and hook your APIs up to your database.

One thing that can be a bit confusing is that the line between the two can become blurry. Some apps push more of their business logic into the frontend, such as with a heavy single page application (SPA), while others even push UI code into the backend, with things like server-side rendering (SSR).

Why it matters

There are many types of software and many types of developers to write it, and you don’t have to become a web developer to write code for a living. However, the web is the biggest platform for delivering software, and correspondingly, the majority of developers are doing some form of web development. Take a look at the Stack Overflow developer survey from last year.

The web is so overwhelmingly popular that one could argue that other types of software development are niches and web development in its various flavors (frontend, backend, full stack, dev ops, etc) is the mainstream.

Frontend Web Development

Backend Web Development

How to learn it

Web Development is a huge field of diverse skills, so it is hard to pin down a single approach or set of resources for learning it.

It makes sense to learn the ropes of frontend development, like basic HTML, CSS and Javascript, before touching backend development, because a backend is useless without a frontend. If you choose to become a web developer, you’ll need to know the ins and outs of both to some degree, so read those guides and start learning vocabulary.

To start from zero, take a look at the Developer Atlas Making Websites curriculum.

I give a high-level breakdown of how to start learning web development in my post What I Wish I Was Told as a Beginner Learning to Code, such as types of schools, courses and websites available for self-teaching.