One of my claims to fame is to have been the main architect and implementor of the first UML virtual machine. The idea was that developers should express their programs using UML (the Unified Modeling Language) rather than Java at the time, and that work would be faster, better, cheaper than if they hand-coded everything. After all, things got better once we moved from Assembly language to higher-level languages like C, Java, or Typescript.
The UML VM idea never caught on, nor did its sibling, Executable UML. But the idea of giving developers higher levels of abstraction than before to make them more effective has remained a mainstay of computer science and programming language design.
Today, code AIs are providing a new level of expressing what a program or component should do. Developers describe what they want using natural language and review merge requests generated by the AI.
(Updated on 2026-01-01.)
Did we finally raise the abstraction level in programming software systems once more?
Code AIs raise two questions in my mind:
- Natural language has no precise semantics, at least not like programming languages. So there is vagueness in what developers are describing, opening the doors to a new category of bugs based on misunderstanding intentions.
- Reviewing code more than writing it will ultimately deskill developers, making me wonder about the implications. How well can you think through a program, including the edge cases, if you are reviewing code that you didn’t write yourself?
Taken together these observations imply a new category of bugs in software systems that programming with code AIs will introduce.
The lack of precision will add all the inconsistencies of the world to a programmer’s code, first by the lack of precision in what the programmer is telling the code AI, and second by the code AI’s incomplete and inconsistent understanding of the world. The deskilling of developers then will make them miss these inconsistencies, turning potential bugs into real ones.
Code AIs are beneficial in that they increase speed of developers who were brought up without code AIs and they also reduce traditional bugs that junior or distracted developers might introduce. At the same time they introduce a new type of bug that I don’t know yet how to counter.









Leave a Reply