I start with two statements that I think are true. I think most people in the industry would agree.
- Mainstream/orthodox ways of building software are quite complex. You can generally reduce complexity by carefully picking an unorthodox approach.
- To build software in unorthodox ways requires you to have a high ownership (both in terms of decision making power, and a willingness to bear a strong responsibility towards the end product).
This corollary, however, eluded me until yesterday:
- To minimize complexity requires you to have a high ownership of your project. Simplicity requires ownership.
I didn’t even come to this conclusion logically. I only came to it feeling an unexpected weight of responsibility at work for what we’re building lately. I am convinced, after extensive testing and validation, that we are on the right path; yet I feel much more responsible for this solution than for previous things I built at previous jobs. The reason is simply that we’re building it on a somewhat unorthodox way. And that simply requires way more ownership and responsibility.
This mostly clarifies the enigma than my younger self experienced: why are we all building things in complex ways if 1) we do not want them to be complex; and 2) we agree that they are too complex? And the answer is that nobody got fired by buying IBM. That force is to software development as gravity is to dynamics.