proomt

Search

Search posts, papers, and topics

Hall of Fame

Hall of FameEdsger W. Dijkstra197230 min readintermediate

The Humble Programmer

Summary

Dijkstra recounts the early struggle for programming to be recognized as a profession, noting how increased hardware power paradoxically led to a "software crisis" by enabling more complex ambitions. He argues that machine designs often exacerbate this, emphasizing that the core challenge is managing complexity, not just hardware optimization.

  • Programming struggled for professional recognition in its early days, lacking a defined body of knowledge and seen as less respectable than hardware engineering.
  • The "software crisis" arose because increased hardware power enabled disproportionately complex software ambitions, making programming harder, not easier.
  • Early programming focused on "clever tricks" and optimization for limited hardware, fostering a narrow view of the discipline's true nature.
  • Dijkstra criticized "third generation" computer designs for prioritizing hardware metrics over programmability, setting back computing science by years.

Engineers interested in the historical roots of software complexity and the philosophical foundations of computer science should read this seminal essay.

9/10

Related reading

  1. The Night Watch

    This satirical essay argues that systems programmers are the most crucial engineers, especially for post-apocalyptic survival, due to their experience debugging low-level hardware and distributed systems. It humorously contrasts the brutal realities of systems debugging with the perceived softer challenges of fields like HCI and machine learning.

    Hall of Fameusenix.org12 minHN20533
  2. No Silver Bullet: Essence and Accidents of Software Engineering

    Brooks argues that software development’s fundamental difficulty lies in essential complexity—conceptual design, conformity, changeability, and invisibility—rather than accidental implementation issues. Consequently, no single technology or management trick will yield an order‑of‑magnitude productivity boost; progress must come from disciplined, incremental improvements.

    Hall of Fameunc.edu34 minpaperHN11731
  3. Choose Boring Technology

    The essay argues that engineering teams should spend their limited “innovation tokens” on business problems, not on novel infrastructure, by choosing mature, well‑understood technologies. Boring tools like MySQL, Postgres, Python, or Cron reduce unknown unknowns and keep system complexity low.

    Hall of Famemcfunley.com8 minHN459282
  4. Presentation: Complexity and Creativity in Software Engineering

    Phillip Mortimer argues that AI‑generated code makes all software effectively "write‑only" due to volume, and proposes managing this by treating tests as the sole specification, automating code reviews with LLMs, and decoupling intent from implementation.

    InfoQinfoq.com28 mintalk