What’s the best way to build a website? Now there’s a question bound to start a thousand flamewars and tweetstorms. To be clear, though, I’m not asking about the best software to use, the best CMS, the best libraries, etc. No, my question speaks to something far more basic and fundamental.
As part of CSS Tricks’ ongoing series about building better websites, Bramus Van Damme highlights a foundational principle espoused by Tim Berners-Lee (creator of the World Wide Web) called the “Rule of Least Power.” The rule states (emphasis mine):
When designing computer systems, one is often faced with a choice between using a more or less powerful language for publishing information, for expressing constraints, or for solving some problem. This finding explores tradeoffs relating the choice of language to reusability of information. The “Rule of Least Power” suggests choosing the least powerful language suitable for a given purpose.
In other words, keep things as simple as possible and don’t overpower or overcomplicate.
This might seem counterintuitive, especially if you’re fortunate enough to live in a place with easy access to powerful computing devices and high speed internet. After all, why wouldn’t we choose to use the most powerful tools at our disposal?
There are three languages to consider in front-end web development. They are, in order of most fundamental to least fundamental:
- HTML, which uses tags like
<p>to create structure and impart semantic meaning to a webpage’s content.
- CSS, which handles the presentation and layout of the webpage’s content by assigning styles (e.g., typography, colors, positioning) to HTML elements.
Or, as the W3C puts it:
If, for example, some weather data is published as a Web resource using RDF, a user can retrieve it as a table, perhaps average it, plot it, or deduce things from it in combination with other information. At the other end of the scale is the weather information conveyed by an ingeniously written Java applet. While the applet might provide a very cool user interface or other sophisticated features, the results of the program will not usually be predictable in advance. A search engine finding the resource will have no idea of what the weather data is or even, in the absence of other information, that it is a weather-related resource. The only way to find out what a Java applet means is generally to set it running, and see what it does. Thus, HTML, CSS and the Semantic Web are examples of Web technologies designed with “least power” in mind. Web resources that use these technologies are more likely to be reused in flexible ways than those expressed in more powerful languages.
Years ago, I read an article by a well-known designer — I think it was Dan Cederholm, though I can’t find the original article any more — about his favorite website. It wasn’t some flashy or glamorous portfolio site. Rather, it was a simple, no frills site for his favorite restaurant that served a single purpose: listing their daily specials. Because it was so simple, it loaded quickly every single time, giving him exactly what he needed when he needed it (e.g., when he was trying to decide what to eat for lunch). And I suspect that site, if it still exists, would load just as quickly and reliably now as it did way back then.
Now obviously, most sites don’t have such a simple, singular purpose. Most sites do require more advanced functionality, design, etc. But that story’s stuck with me over the years, lodged in the back of my mind as a sort of Platonic ideal. And perhaps because of it, I continually ask myself, “What’s the simplest, least powerful, and most unobtrusive way to develop a website that still meets its purpose, satisfies its stakeholders, and serves its users well?”