Software Development as simultaneous Prediction and Explanation

There is often the talk that prediction and explanation can be opposed to each other. Simple models aid explanability but may hinder prediction. Complex models aid prediction but may hinder explanability. Or so the story goes in my understanding.

However, consider software development. Particularly of large softwares. Take this for example.

  • Google has 2 billion
  • Mac OS has 80 million
  • Microsoft Office has 40 million

Perhaps, no Googler understands all of Google’s codebase, no Mac OS core-developer understands all of Mac OS, no developer of Microsoft Office understands all of Microsoft Office. Yet it is true that these are more-or-less reliable products produced by humans. It is true that individual humans fix bugs or add features to these behemoths.

It is true that individual humans do not understand these softwares in their entirety. However, an individual human can understand different aspects of the software once they put their mind to it. The task of combining the different aspects into an interactable whole is left to the computer. Most well-maintained softwares have potential understandability even if they are not understandable.

In a similar manner, scientific explanations too can use the computer to construct potentially understandable models without giving up on complexity. Taking inspiration from software development, one can build complex scientific models that may be non-understandable but be potentially understanable.

Of course, the task of coming up with a language to program scientific explanation might be a lifetime of work in itself. Though, see Structure and Interpretation of Classical Mechanics. (Might be unrelated – I haven’t read it!)

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy