Skip to main content

Theresa O’Connor / Treasa Ní Chonchúir

the orders of

Complexity of websites

and what they imply for the design of web platform features

I don’t remember who first described it this way1, but I like to think about the complexity of websites as roughly fitting a logistic ("S"-shaped) curve2:

The inflection points between these orders are where developers need to pick up whole new sets of skills in order to proceed:

Sure, fine, whatever, but what does any of this have to do with

Designing web platform features

Browser engineers usually work for big technology companies. Big technology companies disproportionally operate complex web applications of the third order, and/or have important business partners that do. Managers and the other folk who call the shots in terms of what features to implement or prioritize (understandably) tend to prioritize things their VIPs are vocal about.

If most of the feedback or feature requests you prioritize come from the developers of extremely complex web applications, it’s really easy to fall into the trap of designing web platform features so complex and over-engineered that they can only realistically be adopted by the developers of extremely complex web applications. The Rule of Least Power goes right out the window.

This is especially bad because

The Web is generative

How to people learn to make websites? Generally like so:

  1. See a neat thing on a website,
  2. view source,
  3. copy and paste onto your own site,
  4. type-y type-y hacky hacky,
  5. ⌘R or F5 (reload)

That is, when you see a neat thing on a website, you can use your browser’s developer tools to figure out how that site does it, and then try to replicate it yourself. This is what makes the web generative. [Generativity is] the ability of a technology platform or technology ecosystem to create, generate or produce new output, structure or behavior without input from the originator of the system.4 (Wikipedia)

When we hold fast to the Rule of Least Power, when we strive to come up with the simplest thing that could possibly work, we tend to come up with features that can be readily adopted by the people who make websites of the first and second orders of complexity—that is, the developers of the vast majority of the sites out there. It’s usually a mistake to design features with only the GMails and Google Docs of the world in mind. Design for Bob.

See also

Notes

  1. It was probably Tantek. It usually is.
  2. This is what a logistic curve looks like. Note the characteristic "S" shape, where the y value rises slowly at first, then quickly, then slowly again. (SVG sourced from the Wikipedia article.)
    A graph of a logistic curve.
The Y axis runs from 0 to 1, and the X axis from -6 to 6.
The curve begins at (-6, 0), and at first y rises slowly.
In the middle of the graph (roughly x between -2 and 2) the curve
rises quickly. It crosses the origin at y=0.5.
After x=2 its rise slows, eventually reaching y=1 at x=6.
  3. Yes, I know referring to the LAMP stack makes me sound like an old fuddy-duddy. First off, yes, I am an old fuddy-duddy, but secondly, all of the advances in backend and frontend architecture and tooling that have happened in the last couple of decade don’t fundamentally alter this analysis.
  4. Look, I hate to be the person to break it to you if you didn’t already know, but Tim doesn’t personally make every website.