Eschatology of software

Eschatology:

  1. System of doctrines concerning final matters, such as death.
  2. The study of the end times — the end of the world, notably in Christian and Islamic theology, the second coming of Christ, the Apocalypse or the Last Judgment.

Wiktionary

I have worked with people who said "this code is bad. I know that perfect software is possible. But the employer will not authorize the months it would take to turn this particular code into perfect software, and so it can not be good. To ask me to iteratively improve upon this code in my pull request is to ask for something unreasonable."

I have also worked with people who came from a place of authority – they had worked on what they knew to be Good Software. They said "this model for writing code is correct. It will produce good software." In a discussion about how the software could be vastly better in the future if the code was written differently, they said "that is not the method that is known to produce Good Software. We should continue using this method."

The former could talk about better code, but could not write it. The latter could write decent code, but couldn't write better code.

Why Not Both.gif

The biblical eschatology of humans says that we are fallen, sinful, shitty humans. Yet the Bible expects us to obsess about God's perfect law[1], and the perfection of Jesus, our human model. We are not expected to achieve that perfection in our lifetimes, but we are expected to iterate on the fallen state we find ourselves in.

My eschatology of software is that I have been given a fallen, sinful, shitty codebase. I should obsess over the ideal perfect software that I could theoretically ship. And I should be constantly iterating the codebase towards that perfection, while understanding that it will never achieve perfection in its lifetime or mine.


  1. Psalm 119:97