What are your web development first principles?

What is the unshakeable foundation on which you build software for the world (wide web)?


We should use a very loose definition of first principle, because in theory a first principle cannot be deduced from any other assumption in a given system. As I mentioned in ... There Are Fundamentals of Web Development, you could - in theory - look all the way back to physics (electrons) as your first principles. Sure, electrons exist. Let's move up our stack a bit.

These Truths Are Self-Evident

Here are some unshakeable, foundational, first principles of Web Development:

  • Modern web browsers are some of the most complicated, robust pieces of software on the planet.
  • The vast, vast majority of users are using slower, older devices on unreliable - and often very slow - networks. See The Performance Inequality Gap, 2023
  • Professionalism is a combination of competence, respect, and ethics.

Web Development as a Career

If software engineering for the internet is a career, then we must assume you can be a professional in it. As noted, there's a basis of professionalism, so it behooves us to define professional web development:

  • Understand the inescapable tools of our trade (web browsers, the languages that run therein, security, how the internet works, etc.).
  • Work as agents on behalf of users who do not understand our field or the complexities of it.
  • Practice ethics and respect toward our product and the users who use it, and demonstrate competency in the platform we depend on.

The modern web is a scathing indictment

The utter disaster that is modern web development is an embarrassment of historical proportions. Lest you think I believe this is exclusively that one framework's fault, allow me to be clear: Web Developers are obsessed with their own experience at the expense of everyone else. This is true regardless of the framework they use. It's true that React is by far the worst and the most popular, but that does not excuse the rest of the bunch.

Professional software engineers should be able to discuss the features of their platform without having to explain first principles ("Yes: the web browser does that by default."). They should be able to assume a baseline for users ("No: most people are not using an iPhone 15 Pro Max, most users are on an old Android phone in South Asia."). They should understand the societal and political implications of the results of both their conscious actions and their many other decisions, whether by inaction or by implicitly choosing the default ("Yes: those people do matter, and shipping software that can't be used by them for any reason under your influence is an outcome caused by racism - or ableism, or ageism.).

Professional web developers shouldn't have to - but often must - push back on vanity metrics masquerading as equitable access. A fast application up front that continues to load 100% - 200% - more later is not a fast, equitable, accessible application. It is built for the top earners in primarily Euro-centric countries. This is what subtle racism looks like in the real world. It can't just work for you and people like you.

The P75 latency for interaction (in an evenly distributed population) isn't the continuous experience of a single user; it's every fourth tap!
small, individually innocuous changes add up to a slow bleed that can degrade the experience over time
A Management Maturity Model for Performance - Alex Russell


I'm hardly the first - or the most eloquent - person to write on the topic of "This all sucks." I also don't have a magic solution to it all. Of course I'd say be relentless in adhering to the foundations of web application architecture.

Maybe I'd also say: Really, really pay attention to who benefits from decisions, in-decisions, and defaults. Are you willing to sacrifice - in your professional capacity - your own comfort to better serve the human beings you are acting as an agent for? To be clear, you are not an agent for shareholders. Ethics, responsibility, and competence demand we work on behalf of the underserved.

Are you making the difficult decisions every day to show that you're a professional web developer?