Programmers love to write code

James Somers, a writer and programmer, wrote a fantastic essay on the state of software engineering called The Coming Software Apocalypse. This is a TL;DR version of his essay.

The essay argues that the way most computer programs are made is unable to cope with the scale and importance software has in modern societies. The author interviews notable figures in computer science and programming, and outlines some of their ideas to improve software design.

I learned many things thanks to this essay. Below are the key pointers I took from the article.

1. Manually writing code is doomed. Focusing on typing code distracts software designers from thinking about higher level requirements. Software designers should be able to think and reason about what the software does, instead of fighting with implementation details.

2. Model-based design is a method for creating software through simulation and automatic code generation. A simulation environment which includes relevant components (for example electric motors, sensors, integrators, logic gates, etc.) is developed. System designers use that environment to specify, design and iterate on the system. The tool automatically generates machine code. This method was developed for critical missions in aeronautics and the military. It is largely ignored by the broad software community.

3. TLA+ is a formal language that describes what a computer program does in terms of a state machine. TLA+ claims to be:

4. Cultural challenges. The adoption of such methods is culturally challenging among software developers. Possible explanations: