Everything is possible in software, but!

I had a boss once (hi JP!), who, whenever his product counterpart asked him if some particular feature or task was doable, used to reply with the same phrase — “Everything is possible in software”.

Initially, I thought it was just a pet phrase of his. It took me a lot of distance in time and space to see the full extent of the truth that the statement implies. Everything really is possible in software, literally.

We have been exploring words for millenia and yet haven’t exhausted either our penchant for trying to express the inexpressible (hi me!) or love for reading such attempts (hi you!).

We have been exploring symbolic manipulation for centuries and it feels we’re barely getting started.

We’ve been programming for less than a century. Forget barely, we haven’t even gotten started. The limits of software will be further than both the written word and the mathematician’s symbol, or at least a curious amalgamation of both, and will lead us God knows where. Everything is literally possible, in software.


Curiously, everything is also hard. As someone who works open source, what surprises me is not when users expect a thing (they do, but that’s to be expected), but when every once in a while, a fellow programmer pops in as a user and uses the phrase "that should be easy, eh?".

Nothing in software is easy. That’s a blanket statement, but on nuance it is not quite true - some things are easy. But the thing is, you cannot tell, not easily, and definitely not from the outside.

Someone who is not familiar with the codebase, the organization that pecks on it, dancing together under Conway’s law, the money trail that feeds their dance, the use cases, and a myriad of other things that make software more than just programs, cannot tell from the outside what is easy.

Yet curiously, it is only fellow programmers, who should be aware of this, who make this mistake of estimating what they already know cannot be estimated.


I now know that JP’s refrain was both a childish call of possibility, and a cynical take on the difficulty, of software.