The Crawford Principles

As written (and titled) by J. B. Crawford here.


Everyone hopes to have something named after them. I'm accelerating the process by just naming things after myself.

The First Crawford Principle

If your config file syntax becomes Turing complete, stop now and cancel the project.

The Second Crawford Principle

Computing professionals will make their computing environment more and more complicated until they can no longer use it competently. Computer novices struggle to get their WiFi working because they aren't sure what a shared key is. Computer experts struggle to get their WiFi working because they are running an unstable release of BSD.

The Third Crawford Principle

Conway's Law says that the architecture of a software project will ultimately match the org chart of the people creating it. Crawford Principle III is a corollary: Given a large enough legacy code base, the maintainers will eventually reorg to match the architecture of the software. This structure did not work well for the software; it will not work well for the organization.