1. Royce on the lifecycle
August 1970SoftwareParadigm shiftEvent page
Large software projects frequently failed or exceeded budgets. There was no widely accepted methodology for managing software development. Ad hoc approaches could not scale to complex systems.
Winston Royce's paper described and critiqued the sequential 'waterfall' approach. Ironically, while arguing against a pure waterfall, his diagram became the model for decades of software development. The paper actually advocated for iteration and prototyping.
Royce presented 'Managing the Development of Large Software Systems' at IEEE WESCON in August 1970. The paper included a diagram showing sequential phases (requirements, design, implementation, verification, maintenance). This diagram was widely adopted as the 'waterfall model', despite Royce's warnings about its risks.1, 2
2. Design Patterns
October 1994SoftwareStandard publishedEvent page
Object-oriented programming was growing but design expertise was hard to transfer. Developers repeatedly solved similar problems without shared vocabulary. Best practices were scattered across individual experience.
The 'Gang of Four' (GoF) book catalogued 23 design patterns for object-oriented software. It established patterns as a way to communicate design expertise. The vocabulary (Factory, Singleton, Observer, Strategy, etc.) became universal among developers.
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides published 'Design Patterns: Elements of Reusable Object-Oriented Software' in October 1994. Drawing on Christopher Alexander's architectural patterns, they codified common OO design solutions. The book sold over 500,000 copies.3
3. The Agile Manifesto
11 February 2001 to 13 February 2001SoftwareParadigm shiftEvent page
Heavyweight methodologies (waterfall, RUP) dominated enterprise software. Documentation often valued over working software. Customer feedback came too late. Developers felt constrained by rigid processes.
Seventeen software developers met in Snowbird, Utah and published the Manifesto for Agile Software Development. It prioritised individuals, working software, customer collaboration, and responding to change. Agile became the dominant software development philosophy.
Representatives of XP, Scrum, DSDM, Crystal, and other lightweight methodologies gathered to find common ground. They agreed on four values and twelve principles. The manifesto deliberately avoided prescribing specific practices, instead articulating shared values.4
4. DevOpsDays Ghent
2008 to 2009SoftwareParadigm shiftEvent page
Development and operations teams worked in silos. 'Throwing code over the wall' led to deployment failures. Manual deployments were error-prone and slow. Agile improved development but not deployment.
DevOps emerged as a movement to integrate development and operations. It emphasised automation, continuous integration/deployment (CI/CD), infrastructure as code, and shared responsibility. DevOps dramatically reduced deployment times and improved reliability.
The term 'DevOps' emerged from discussions at the 2008 Agile Conference and the first DevOpsDays in Ghent (2009). Patrick Debois organised DevOpsDays after discussions with Andrew Shafer. The movement drew on lean manufacturing, agile, and the CALMS framework (Culture, Automation, Lean, Measurement, Sharing).5, 6, 7
5. Microservices articulated
25 March 2014SoftwareParadigm shiftEvent page
Monolithic applications became difficult to scale and maintain. Large codebases slowed development. Deployment required releasing the entire application. Teams could not work independently.
Microservices architecture decomposes applications into small, independently deployable services. Each service owns its data and communicates via APIs. This enables teams to develop, deploy, and scale services independently.
James Lewis and Martin Fowler published a defining article in March 2014, crystallising practices used at Netflix, Amazon, and others. The term gained rapid adoption as cloud-native development matured. Containerisation (Docker) and orchestration (Kubernetes) provided implementation infrastructure.8
6. Kubernetes 1.0
6 June 2014SoftwareProtocol deployedEvent page
Containers (Docker) enabled consistent deployment but managing many containers was manual. Scheduling, scaling, networking, and failure recovery required custom solutions. Each organisation built different orchestration systems.
Google open-sourced Kubernetes, based on their internal Borg system. Kubernetes provided declarative container orchestration: automated deployment, scaling, and management. It became the de facto standard for cloud-native infrastructure, supported by all major cloud providers.
Google engineers (including Joe Beda, Brendan Burns, Craig McLuckie) developed Kubernetes based on lessons from Borg and Omega. It was announced at DockerCon 2014 and donated to the Cloud Native Computing Foundation (CNCF) in 2015. Rapid adoption followed as cloud providers integrated it.9