Explorations, principles, and systems about engineering freedom.
Every system I build changes how I think about a problem. Once I understand something well enough, I start wondering how I would shape it differently. I don’t build because I believe I have better answers. I build because building gives me a better understanding, and that understanding gives me the freedom to shape a system in my own way. The systems may be temporary. What I learn from them, and the value that learning creates, should last however.
Guiding principle
Only much later did I realize what that freedom actually meant. It wasn’t the freedom to write 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 and the freedom to choose a different shape of a system.
The following practices help me retain that freedom and use it to create lasting value.
Documentation explains how a system works. It shows how others understood and solved the problem. Building is different. It transforms that knowledge into my own understanding and reveals how I really think about the problem.
Closed systems limit me to the choices their owners provide. Open systems let me inspect, change, replace, or leave. I choose openness when it keeps those options available.
Good software helps people make their own decisions. It provides useful defaults without taking away the ability to change direction.
Some work solves today’s problem. Other work continues creating value long after it’s finished. I prefer systems, tools, and ideas that compound because others can use, extend, and build upon them.