Principles

Code is for people.

Sure, computers run our code, but if they were its primary audience we’d just write everything in binary. Code is fundamentally exposition: descriptions of systems, their domains, and behavior. As we come to rely ever more on these systems and they grow increasingly complex, the need for human-intelligible code has never been greater.

Websites are for people.

Never forget that the people visiting our websites are not captive audiences. They have goals to accomplish, and in nearly all cases, better things to do. We must learn (and continue learning) who they are and what they need, and get them to it as quickly and easily as possible, wherever and however they may be.

Write less code.

Writing code is easy. One of the most valuable lessons of experience is knowing the code you don’t have to write. Don’t repeat yourself. Do more with less. This applies just as well to others’ code we use in our projects as it does to our own.

Small is beautiful.

But even more importantly, it’s understandable. Break big things up into smaller parts: ideally each part should do exactly one thing. Our job is to manage complexity, not add to it.

Tests Are More Important than Code

On any long-lived project, your code will change constantly. Tests are proof that your system does what it needs to, and are far more valuable over time than the particular way in which it performs a given task, which will change.