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

  1. 1968

    The NATO software engineering conference

    The moment the discipline is named.

  2. 1968

    Dijkstra on goto

    A manifesto for structured programming.

  3. 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

F

Fred Brooks

1931 – 2022

Author of The Mythical Man-Month; managed IBM OS/360.

E

Edsger Dijkstra

1930 – 2002

A pioneer of structured programming and algorithm design.

07Further reading

  • The Mythical Man-MonthFred Brooks · 1975
  • Notes on Structured ProgrammingEdsger Dijkstra · 1968