How Software Complication Threatens Civilization and What Programmers Can Do to Simplify and Improve It

DevGAMM

Summary:
  • Jonathan Blow argues that technology, particularly software, is in decline due to increasing complexity and a loss of fundamental knowledge, drawing parallels to past civilizational collapses.
  • He illustrates this degradation with historical examples like the Roman Lycurgus Cup, Byzantine flamethrowers, and the Antikythera Mechanism, where advanced knowledge was lost over time, and modern examples of declining space program capabilities.
    The immense scale of the Apollo 11 mission, showing the Saturn V rocket on its crawler transporter
    The immense scale of the Apollo 11 mission, showing the Saturn V rocket on its crawler transporter [ 00:03:10 ]
    The Lycurgus Cup, an ancient Roman nanometerial, displaying different colors depending on the light source
    The Lycurgus Cup, an ancient Roman nanometerial, displaying different colors depending on the light source [ 00:07:29 ]
    A diagram illustrating the complex gear system of the Antikythera Mechanism
    A diagram illustrating the complex gear system of the Antikythera Mechanism [ 00:11:09 ]
  • The core thesis is that current software development, despite appearing advanced, is largely riding on immense hardware improvements, while actual software robustness and programmer productivity are declining.
    The central thesis: Software is in decline despite ubiquitous dependency, exemplified by an airplane
    The central thesis: Software is in decline despite ubiquitous dependency, exemplified by an airplane [ 00:18:08 ]
    Graphs showing the rapid increase in employee numbers at Twitter and Facebook, juxtaposed with the argument that software productivity is not similarly growing
    Graphs showing the rapid increase in employee numbers at Twitter and Facebook, juxtaposed with the argument that software productivity is not similarly growing [ 00:33:56 ]
  • He presents numerous everyday software bugs and system failures to demonstrate a widespread lowering of quality expectations and a trend towards over-complication rather than true innovation.
    A Gmail compose window demonstrating a formatting bug, forcing text into a narrow column
    A Gmail compose window demonstrating a formatting bug, forcing text into a narrow column [ 00:24:07 ]
    A Visual Studio error message preventing the saving of simple command-line arguments
    A Visual Studio error message preventing the saving of simple command-line arguments [ 00:24:29 ]
    A Russian visa application form showing a persistent 'Phone number is invalid' error
    A Russian visa application form showing a persistent 'Phone number is invalid' error [ 00:26:17 ]
  • This excessive complexity accelerates knowledge loss, replaces deep understanding with superficial trivia, and drowns good information in noise, making systems fragile and less resilient to stressors.
    An illustration of how LSP creates a complex, distributed network of interconnected 'other libraries' and servers, leading to system fragility
    An illustration of how LSP creates a complex, distributed network of interconnected 'other libraries' and servers, leading to system fragility [ 00:44:24 ]
  • Blow urges programmers to actively resist this trend by prioritizing simplification at every level – from hardware and operating systems to application code and user interfaces – to prevent a "deeply mediocre" future or even a societal collapse.
    A call to action for simplification at every level of technology, from hardware to user interfaces, to combat degradation
    A call to action for simplification at every level of technology, from hardware to user interfaces, to combat degradation [ 00:52:53 ]

The Cyclical Nature of Technological Progress and Decline [00:00:00]

The Decline of Modern Software [00:18:12]

The Root Cause: Excessive Complication [00:37:18]

The Path Forward: Simplification at Every Level [00:52:58]