Programming and software engineering
7 open questions
Start here
Programmers argue in public about types, tests, abstractions and where code runs; learn where they part.
Ours, not the speakers'.
7 open questions
Start here
Programmers argue in public about types, tests, abstractions and where code runs; learn where they part.
Ours, not the speakers'.
Each question below is one the field is arguing about now. Under it are the views, one sentence each, in our words, and the people whose dated claims sit under each one, in theirs. Learn the arguments before the answers: being able to say why two serious people disagree is most of understanding a field. Nobody is filed under a view; their claims are, so somebody can appear under two. Tap a view to check it against the exact words.
All agree the tools got good; they split on what that changes and what a person is still for.
David Heinemeier HanssonTobias LütkeSimon WillisonPeter Steinberger
They split on whether types prevent bugs, or mostly buy better tools, and on how strict they should be.
Guillermo RauchKelsey HightowerAlice RyhlAnders HejlsbergDillon Mulroy
They agree tests buy confidence and split on which tests, how many, and whether agents change the answer.
Salvatore SanfilippoMarc LittlemoreThorsten BallMartin Fowler
They argue over when to share code, whether the classic clean-code rules help, and what hiding the details costs.
Most say start with one program; they differ on when to split it, and why.
They argue over what the cloud really saves, and where the next wave of software will run.
Most here say simplicity is subtraction; they part over why it is hard, and when less becomes too little.
Evil RabbitSusan KareCharlie DeetsJosh PuckettSebastiaan de WithGreg McKeown
Jason YuanLoredana CrisanDavid Heinemeier HanssonFrank ChimeroRich HickeyPaul Graham
Peter SellisMike KriegerEvil RabbitGuillermo RauchJohn BaiJason Yuan
Nev FlynnCharlie DeetsDavid Heinemeier HanssonJason YuanLoredana CrisanKatarina Batina
Charlie DeetsJason YuanJosh PuckettDylan FieldJulie ZhuoRaph Koster
The voices we picked out on these 7 questions, then anyone else on record about several of them. The number is how many of the questions they are on, not a ranking of who is right.
What moved somebody is usually what the argument turns on. Newest first.
No longer holdsThe ideas in software originate with humans; agents build what people tell them to build.
I thought all the ideas would originate with the humans. They would tell their agents what to build, and off they went.
No longer holdsClaude Code is the coding agent to build with.
I won't use SnekAI but I'll probably switch to @xAI soon
Mental models that keep turning up in these arguments. Our pick; each page holds the claims behind it, in the words of whoever said them.
The shape of the field
Go To Statement Considered Harmful
Edsger W. Dijkstra
A one-page letter arguing that jumping anywhere in a program makes it impossible to reason about. The start of structured programming.
How Do Committees Invent?
Melvin E. Conway
Systems end up shaped like the organisations that build them: the observation now called Conway's law.
Managing the Development of Large Software Systems
Winston W. Royce
The paper the step-by-step "waterfall" process is named after, though it warns against doing it in one pass.
On the Criteria To Be Used in Decomposing Systems into Modules
David L. Parnas
Split a program by the decisions likely to change, and hide each behind an interface. Where information hiding comes from.
Structured Programming with go to Statements
Donald E. Knuth
A careful reply to the go-to debate, and the source of the line about premature optimisation.
Time, Clocks, and the Ordering of Events in a Distributed System
Leslie Lamport
Machines on a network cannot agree on what happened first without care; this is how to order events anyway.
Reflections on Trusting Trust
Ken Thompson
A compiler can hide a back door that appears in no source code, so you can only trust code you built from the ground up.
No Silver Bullet: Essence and Accident in Software Engineering
Frederick P. Brooks Jr.
Most of the difficulty of software is in the problem itself, so no single tool will make building it ten times easier.
Lisp: Good News, Bad News, How to Win Big
Richard P. Gabriel
The "worse is better" essay: simple, slightly wrong software spreads faster than complete, correct software.
Out of the Tar Pit
Ben Moseley & Peter Marks
Most complexity in software comes from state, and most of it is accidental rather than required by the problem.
None of these 10 papers is in this archive yet. They are here so the page has the field's shape, not just its arguments: each carries no quote, no link and no claim beyond its title, authors and year, and the one-line notes are ours, about what the paper did rather than what anyone believes.
Where to go next