What is convention over configuration?
Convention over configuration is a software design principle where sensible defaults are built in, so you only have to specify things when you want something different.
The term was popularized by Rails, which is the most famous example of this principle in practice. When you create a model called User in a Rails app, Rails assumes the database table is called users. You don’t configure that connection anywhere. It just works because Rails follows a naming convention. If you want a different table name, you can configure it explicitly. But if you follow the conventions, there’s nothing to set up.
The alternative is sometimes called explicit configuration, where you have to specify everything yourself. Older Java frameworks required you to write XML config files to wire everything together. You had total control, but you spent a lot of time on setup before you could write any real code. Rails came along and showed that a framework could make those decisions for you, and suddenly developers could build apps much faster.
The trade-off is that convention over configuration is faster to get started, but it requires you to learn the conventions. Once you know them, development feels like magic. But when you’re new, it can feel confusing — things work, but you’re not sure why.
My background is in Applied Mathematics, and convention is everywhere in math. Notation, symbols, and naming patterns are agreed upon so that everyone can work from the same foundation without re-explaining everything from scratch. Convention over configuration feels natural to me for the same reason. When everyone follows the same conventions, you spend less time on setup and more time on the actual problem. It’s one of the reasons I love building with Rails.