I’ve been re-reading DHH’s old posts about Rails and “convention over configuration.” It hits differently now that I’ve spent years stitching together JS-ecosystem tooling.
His thesis, distilled: when there’s a sensible default for something, shipping it as the obvious path gives the developer time back. You don’t think about which test runner. You don’t think about which file layout. You don’t think about how state should flow. You think about the problem.
Every “you can configure it!” sounds like flexibility on first read. Five years later it reads like “every team will re-litigate this decision quarterly.” Convention is a present from past-you to future-you and your collaborators.
What I’m taking from this: in my own projects, the answer to “what should the default be?” is almost always more useful than the answer to “what should be configurable?”
Anything in the empire that has three ways to do the same thing is debt. I’m going to pick one and delete the other two.