Build to Understand

Explorations, principles, and systems about engineering freedom.

This website exists to help me think. If others find value in it, that’s a wonderful consequence.

Every system I build changes how I think about a problem. That’s something reading documentation has never done for me. It’s why I’m often more interested in building an opinionated version of a system than becoming an expert in an existing one.

Once I understand a concept well enough, I often start wondering how I could shape it differently. I don’t build because I think I have better answers. I build because building sets me free.

Only much later did I realize what that freedom actually meant. It wasn’t the freedom to build my own software. It was the freedom to shape the systems I depend on instead of being limited by them. I now call that engineering freedom.

An open-source maintainer may decline my PR because it doesn’t fit the project’s roadmap. That is fair. I can still fork the project and make the change myself. A SaaS vendor can raise its price without making the product more useful, and my only choices may be to accept it or leave.

The difference is not whether someone tells me no. It is whether I still have a way forward.

The principles below describe how I choose, build, and evolve systems that preserve engineering freedom.

Principles

1. Build to Understand

Documentation explains how a system works. It shows how others understood and solved the problem. Building is different. It transforms that knowledge into your own understanding and reveals how you really think about the problem.

2. Preserve Engineering Freedom

The question is not whether you depend on others, but whether you retain the freedom to shape and evolve the systems you want to use.

3. Prefer Open Over Closed

Open systems preserve optionality. Prefer open protocols, standards, and formats whenever they leave you with more freedom tomorrow than you have today. Openness is not the goal, engineering freedom is.

4. Design for Agency

Software should expand human agency, not reduce it. Every design decision should leave people with more freedom to shape their own solutions, not less.

5. Keep Only What Matters

Complexity should be intentional. Every additional layer makes a system harder to understand, evolve, and maintain. Complexity must earn its place.