An interesting question was asked on Quora. “Is Alan Kay correct that building software is still like the design and construction of ancient structures like the Pyramids, in the era before architecture?“. Alan Kay himself wrote an answer, as did I. I wanted to repeat my answer here in my own blog for posterity.
I think he is correct, in that the optimist in me hopes that some better way to build or think about software will be discovered. Alan Kay always jolts me from my complacency that the way things are now, or in the past, should be the future.
But what is “building software”? That’s where it all goes to pot, because people hearing that will think different things. It’s a blind men and an elephant problem.
Can we agree that it is “using computing to solve or represent a problem, process, model or simulation, of something real or abstract“?
But therein lies the problem. We have extended our subject to be essentially anything that can be described. So “building software” becomes “using computing to solve or represent anything that can be described“. How can one possibly expect a predicable way to do such a broad general thing? Especially one with a science or mathematical basis.
In many cases the subject cannot even be reliably or accurately described. Functional requirements in different real-world domains are notorious for this.
My thinking is that if there is “another way”, Alan Kay’s original insight “that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block …”, is key. But then again maybe I can only see the world as flat.
Perhaps the real problem is not how to “build software”, but how to reliably or accurately represent anything that can be described?