01Overview
Through the 1960s large software projects ran over budget, slipped or failed outright. In 1968 NATO held a conference in Garmisch, Germany, that put the term “software engineering” on the table, hoping to bring engineering discipline to software. That same year Dijkstra published his short note “Go To Statement Considered Harmful”, arguing for structured control flow over arbitrary jumps.
The crisis was not a one-off but the normal condition of scale: requirements change, people leave, systems age. It produced lifecycle models, structured methods, modularity and eventually the agile movement. Every change of methodology is really an answer to the same question: how do you keep software written by many hands understandable over time?
02History
- 1968
The NATO software engineering conference
The moment the discipline is named.
- 1968
Dijkstra on goto
A manifesto for structured programming.
- 1975
The Mythical Man-Month
Brooks's law: adding people does not speed things up.
03Core concepts
The software crisis
Cost, schedule and quality that consistently miss what was promised.
Structured programming
Organising control flow with sequence, selection and iteration only.
Brooks’s law
Adding people to a late project makes it later.
04Hands-on
Do it once — it beats reading it ten times
Take a real project’s bug list and classify each bug by which phase should have caught it — then say what you would change
05Self-check
Say it in your own words first, then open the answer. Whatever you cannot explain is what to review next.
Can you explain "The software crisis"?
Cost, schedule and quality that consistently miss what was promised.
Can you explain "Structured programming"?
Organising control flow with sequence, selection and iteration only.
Can you explain "Brooks’s law"?
Adding people to a late project makes it later.
What problem did it solve, and why was there nothing better at the time?
Go back to the history section: how was this done before, and what did it cost?
If you had to build it today, how would you break it down?
Use the hands-on task above: write a plan of at most three steps before you start.
06Key people
Fred Brooks
1931 – 2022
Author of The Mythical Man-Month; managed IBM OS/360.
Edsger Dijkstra
1930 – 2002
A pioneer of structured programming and algorithm design.
07Further reading
- The Mythical Man-Month
- Notes on Structured Programming