I am used to put limits on myself. Finding reasons, some in authority, most in circumstance; to not solve the problems I've judged solvable.
People putting limits on themselves is not something new or unique to building software. It is a recurring pattern in human behavior. Well meaning reasons are often rationalizations for fear of unknown, or that of actually putting in the work. Just as often, there are actual limits universe has put on us, crossing which come at great cost.
But software is our domain. Things writ in stone in "real" world are not necessarily so in the wonderful world of software development. What is subjected to physical laws in real world is a matter of choice of constraints. Often we get to pick and choose, trade the expensive ones for those inconvenient, but still make the impossible probable.
When the imaginary constraints are dropped, what is left behind is curiosity and wonder. It is in essence, a source of joy. It is similar to re-discovering joy in tending to fruitless flowers after a lifetime of growing crops for commerce.
When I say imaginary constraints, I am speaking in the sense of Max Stirner's spooks. Imaginary constraints, for example those of
- authority: am I allowed to do this?
- tribalism: will my team adopt it?
- economy: can I monetize it?
- romance: will it scale?
- vanity: is it elegant?
I wanted a term to express this kind of software. Anarchism comes close to the meaning I want to convey, but it is too nuanced. What I mean is simpler. An unapologetic form of "works on my machine". Software which is deliberately insolent toward the processes which the creator believes get in their way.
It is a deceptively simple thing. It is not easy reaching a solution so free. This line of thinking is very much going against the grain of human civilization. Unlearning the lessons society has taught us before we knew learning, does not come easy.
What is even harder is identifying problems which can be solved with insolence. These problems are often invisible. Problems we accept and get used to, and don't see as problems at all. Until someone solves them and obviousness of it hit us like a brick. Perhaps recognizing and solving such problems is what separates inventors from the rest of us.
As a kid, reading of inventors of the golden age of science would fill me up with fantasies of becoming one myself someday. It saddens me to think that I have not yet become one.
Not all software can be written this way. Line between imaginary and real becomes blurry as more people believe in something. Very often we need to maintain the charades of make-believe, simply because we can not be alone in the solution.
There is one form of software, which almost always can be insolent. Software built for yourself. Not apps to sell or startups to change the world. Simple scripts, big and small, to solve your personal problems. Over last few months, I have come to associate personal computing with same feelings I have when playing something like Factorio or Cities Skylines. It is a joyous endeavor, we shall talk of on another day.