[https://antithesis.com/](https://antithesis.com/?utm_source=ghuntley).
If I [wind back time to November 2024](https://ghuntley.com/oh-fuck), it was apparent to me back then that our profession would change. To be frank, in the last six months our profession has changed more than it has in the last 30 years. Software authoring has been commoditised. Everyone is now a software developer, but being a software developer does not mean that they're an engineer.
The word engineer is used trivially in our profession, but in other industries the word engineer means failures are unacceptable.
Now I'm a little bit old and crusty these days; I turn 44 next week, and I've seen some absolutely horrible codebases, but if I'm to be honest, I can remember some of the first code that I wrote, and I have regrets. If you caught my talk at the AI Engineer World Fair, one of the things I shared was some deep concerns that we are entering into another Eternal September. You see, we didn't create enough software engineers after the 2000s dot-com implosion to properly support an apprenticeship model of learning in our industry.
It's now twenty-six years since that event, and now that everyone can create software, we've got some hard questions to solve. But whilst many things have changed, the job of software engineers is to produce experiences without defects.
So I've been pondering how we are going to fix this predicament.
Here's my hypothesis:
- The discipline/techniques of formal verification and deterministic system testing are about to cross the chasm. There's a whole lot of brownfield software out there that's been written over the last 30 years that is being affected by the infinite software crisis(“how do we do code review now?” / “the volume of code/change is too high”) all at once. - Not enough skilled practitioners in the discipline/techniques of formal verification and deterministic system testing exist.
- Whilst the costs of building a simulator for a project (new or retrofitting an existing project) are significantly cheaper now, there are entire categories and classes of problems that will not surface unless you emulate a deterministic computer (which provides a forceful way to make anythingdeterministic). - Antithesis, when used in conjunction with adversarial code reviews by an LLM and with language analyzers driven by pre-commit hooks, will be a key component in software factories that enables people/agents deliver reliable software without the burden of having to learn this specialized knowledge.
Creation is now near-free. Verification/understanding is not, yet. It's time to engineer away the slop.