The History of Agile and DevOps
The History of Agile and DevOps
The evolution of software engineering from the 1960s to the 2020s represents a transition from rigid, manufacturing-inspired processes to continuous, feedback-driven methodologies. In the early decades of commercial computing, software development was constrained by the high cost of hardware, limited processing power, and batch-processing architectures. These physical limitations forced organizations to adopt highly sequential planning models, where requirements, design, coding, and testing were isolated into distinct phases. This approach aimed to minimize expensive errors during execution but created long lead times and a high risk of project failure when business requirements changed before the software was delivered.
During the 1990s, the proliferation of personal computers, client-server architectures, and object-oriented programming languages lowered the cost of compiling and testing code. This technological shift enabled developers to experiment with iterative methods, building software in small increments rather than massive batches. In 2001, these lightweight frameworks were formalized under the Agile methodology[1]. Agile prioritized human communication, working software, and adaptability over comprehensive documentation and rigid contracts. It successfully accelerated the software development lifecycle, allowing teams to respond to user feedback and market changes rapidly.[39]
However, Agile primarily optimized the development phase, leaving IT operations teams struggling to deploy the resulting influx of code. Operations departments were measured on system stability and uptime, creating a structural conflict with development teams incentivized to release frequent changes. This bottleneck led to the emergence of DevOps[2] between 2007 and 2009.[40] By combining development and operations into a single continuous pipeline, DevOps introduced automation, infrastructure as code, and containerization. Together, Agile and DevOps transformed software from a static product delivered on physical media into a continuously updated service, fundamentally altering how modern digital infrastructure is built and maintained.
The Software Crisis and Heavyweight Methodologies (1968 to 1990)
In the 1950s and 1960s, software was often an afterthought, bundled freely with expensive mainframe hardware like the IBM System/360. As computers became more powerful, the software required to run them grew exponentially in complexity. By the late 1960s, the industry faced what was termed the software crisis. Projects consistently ran over budget, missed deadlines, and failed to meet user requirements. To address this, the NATO Science Committee convened the 1968 Software Engineering Conference[3] in Garmisch, Germany. The attendees, including computer scientists Brian Randell and Peter Naur, sought to establish a formal discipline of software engineering that would apply the rigorous standards of civil and mechanical engineering to code production.
The dominant model that emerged from this era was the sequential lifecycle, later dubbed the Waterfall model[4]. The concept is widely attributed to Winston W. Royce, who published the paper "Managing the Development of Large Software Systems"[5] in 1970. Royce described a multi-step process flowing downwards through requirements, analysis, design, coding, testing, and operations. Ironically, Royce explicitly warned that a strictly single-pass sequential approach was risky and advocated for iterative feedback loops. However, government agencies and large corporations adopted the simplified, strictly sequential version. The United States Department of Defense codified this approach in 1985 with the MIL-STD-2167 standard, and later the MIL-STD-2167A[6] standard in 1988, which mandated heavy documentation and strict phase gates for all military software contractors. The standard required distinct phases: System Requirements Analysis, System Design, Software Requirements Analysis, Preliminary Design, Detailed Design, Coding and Testing, and System Integration. Similarly, the United Kingdom government developed the Structured Systems Analysis and Design Method in 1980 to standardize government IT projects.
These heavyweight methodologies were rational responses to the technical constraints of the mainframe era. Computing time was a scarce resource. Programmers wrote code on punch cards, submitted them to a batch processing queue, and waited hours or days for the results. A syntax error or logical flaw was costly in terms of wasted compute time. Therefore, organizations invested heavily in upfront planning and mathematical proofs of correctness before a single line of code was executed. The IEEE Standard Glossary of Software Engineering Terminology (610.12-1990)[7] defined software engineering terminology around these strict phases, reinforcing a culture of comprehensive specification.
While effective for well-defined problems like aerospace trajectories, heavyweight methods struggled with business applications where user needs were ambiguous and subject to change. By the time a multi-year Waterfall project reached the testing phase, the original business requirements had often evolved, rendering the delivered software obsolete. The rigid separation of duties also created silos. Business analysts wrote requirements, architects designed systems, programmers wrote code, and quality assurance testers searched for bugs. Handoffs between these silos resulted in lost information and delayed feedback, setting the stage for alternative approaches.
Early Iterative Frameworks and Lightweight Methods (1990 to 2000)
As the computing industry transitioned from mainframes to desktop computers and local area networks in the 1980s and 1990s, the economic constraints of software development shifted. Compilers became faster, and interactive development environments allowed programmers to test code instantly. This reduction in the cost of change encouraged experimentation with iterative models. In 1986, Barry Boehm published "A Spiral Model of Software Development and Enhancement,"[8] which introduced risk-driven iteration. Instead of defining all requirements upfront, the Spiral Model guided teams to build prototypes, evaluate risks, and refine the system through successive loops consisting of four phases: determine objectives, identify and resolve risks, development and test, and plan the next iteration.
The 1990s saw a proliferation of lightweight methods designed to reduce the bureaucratic overhead of Waterfall. In 1991, James Martin formalized Rapid Application Development[9], emphasizing prototyping, timeboxing, and user feedback over strict planning. In the United Kingdom, the Dynamic Systems Development Method consortium formed in 1994 to provide a standardized framework for Rapid Application Development. Other methodologies, such as Feature-Driven Development[10], focused on building software in short, feature-centric cycles.
The open-source software movement also demonstrated that highly distributed, decentralized teams could build complex systems without traditional management structures. Eric S. Raymond documented this phenomenon in his 1997 essay "The Cathedral and the Bazaar."[11] Raymond contrasted the cathedral model of commercial software, characterized by restricted access and central planning, with the bazaar model of the Linux kernel, where code was developed in public view with rapid, frequent releases. The success of Linux and the Apache HTTP Server proved that continuous peer review and frequent integration could yield highly stable software.
Scrum and Extreme Programming
Among the lightweight methods, Scrum and Extreme Programming gained the most traction. Ken Schwaber and Jeff Sutherland formalized Scrum[12], presenting it jointly at the Object-Oriented Programming, Systems, Languages, and Applications conference in 1995. Scrum introduced a framework based on empirical process control. It organized work into fixed-length iterations called Sprints, typically lasting two to four weeks. A Product Owner prioritized a backlog of work, while a Scrum Master facilitated the process and removed impediments for a self-organizing development team.[41] Scrum provided a management wrapper for iterative development but did not prescribe specific engineering practices.
Extreme Programming[13], created by Kent Beck in 1996 during his work on the Chrysler Comprehensive Compensation System, filled the engineering void. Extreme Programming pushed traditional software engineering practices to their logical extremes. If testing was good, the methodology mandated Test-Driven Development, where tests were written before the code. If code review was good, it required pair programming, where two developers worked simultaneously at one keyboard. If integration was good, it demanded continuous integration, merging code changes multiple times a day. Extreme Programming defined twelve core practices, including the planning game, small releases, simple design, refactoring, and collective code ownership. Together, Scrum and Extreme Programming provided the organizational and technical foundations for the Agile movement.
The Agile Manifesto (2001)
By the turn of the millennium, the creators of various lightweight methods recognized their shared philosophies. From February 11 to 13, 2001, seventeen software developers met at The Lodge at Snowbird ski resort in Utah. The attendees included Kent Beck, Ward Cunningham, Martin Fowler, Jim Highsmith, Alistair Cockburn, Bob Martin, Jeff Sutherland, Ken Schwaber, Jon Kern, Brian Marick, Arie van Bennekum, Mike Beedle, Dave Thomas, Andy Hunt, Ron Jeffries, Steve Mellor, and James Grenning. Their goal was to find common ground among Scrum, Extreme Programming, Dynamic Systems Development Method, and other iterative frameworks. The attendees debated the naming of their movement, eventually choosing "Agile" over "Lightweight," which some felt implied a lack of seriousness. The result was the "Manifesto for Agile Software Development,"[1] a concise document that defined the core values of the new movement.
The Agile Manifesto established four foundational values: individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan. The authors clarified that while the items on the right had value, they valued the items on the left more. The manifesto was supported by twelve principles[14], which emphasized continuous delivery, welcoming changing requirements, daily collaboration between business and technical staff, and regular reflection on team effectiveness.
The publication of the Agile Manifesto catalyzed a massive shift in the software industry. Throughout the 2000s, organizations adopted Agile practices to accelerate their development cycles. This adoption was supported by a new generation of software tools designed for iterative work. In 2002, Atlassian released Jira[15] to track bugs and manage Agile backlogs. Version control systems like Apache Subversion[16] (which began development in 2000, but version 1.0 was not released until 2004) and later Git[17] (created by Linus Torvalds in 2005) allowed developers to branch and merge code efficiently. Continuous Integration servers, such as CruiseControl[18] (2001) and Hudson (later forked into Jenkins[19]), automated the process of compiling code and running test suites every time a developer committed a change.
The shift from desktop applications to web applications further accelerated Agile adoption. In the 1990s, software was distributed on physical media, meaning a bug required a costly recall or the mailing of a patch disk. The rise of the World Wide Web, standardized by the W3C HTML[20] specifications and IETF RFC 2616[21] for HTTP/1.1, meant that software ran on servers controlled by the vendor. Developers could deploy updates to a web application instantly, and users would see the changes upon their next page load. This structural change in distribution made the Agile principle of early and continuous delivery technically feasible.
The Operations Bottleneck and the Genesis of DevOps (2004 to 2009)
While Agile methodologies successfully optimized the software development process, they created a severe bottleneck downstream in IT operations. Development teams, incentivized to deliver new features rapidly, produced a continuous stream of code changes. However, operations teams (system administrators, network engineers, and database administrators) were evaluated on system stability, uptime, and security. Every deployment represented a risk to production stability. To mitigate this risk, operations departments relied on frameworks like the Information Technology Infrastructure Library[22], which mandated strict change management processes, manual runbooks, and Change Advisory Boards.
This misalignment of incentives created what the industry called the Wall of Confusion. Developers would write code on their local machines, declare it finished, and hand it over to operations. When the code failed in production due to differences between the development and production environments, developers blamed operations for faulty servers, while operations blamed developers for faulty code. Deployments became high-stress events, often scheduled for weekends and requiring overnight maintenance windows.
The genesis of DevOps occurred as a grassroots movement to bridge this divide. In 2007, Patrick Debois, an independent IT consultant, was working on a data center migration for the Belgian government. He experienced the frustration of constantly switching between the Agile world of the developers and the rigid, process-driven world of the system administrators. In 2008, at the Agile 2008[23] conference in Toronto, Andrew Clay Shafer proposed a session titled "Agile Infrastructure." Only Debois attended. The two men discussed how Agile principles could be applied to infrastructure and operations, forming an online group to continue the conversation.
The defining moment for the movement arrived in June 2009 at the O'Reilly Velocity Conference in San Jose, California. John Allspaw, Senior Vice President of Technical Operations at Flickr, and Paul Hammond, Director of Engineering, delivered a presentation titled "10+ Deploys Per Day: Dev and Ops Cooperation at Flickr." At a time when most enterprises deployed software once a quarter, deploying ten times a day was unheard of. Allspaw and Hammond argued that development and operations must be transparent, integrated, and share a common goal of enabling business flow.[42] They demonstrated how automated infrastructure, shared version control, and mutual respect could eliminate the Wall of Confusion.
Debois watched the presentation via a video stream from Belgium and lamented on Twitter that he could not attend in person. Paul Nasrat tweeted back, suggesting Debois organize his own event. In October 2009, Debois hosted the first DevOpsDays[24] conference in Ghent, Belgium. To keep the Twitter hashtag short, he used "#DevOps," inadvertently coining the term that would define the next decade of software engineering. The movement quickly coalesced around the acronym CAMS (Culture, Automation, Measurement, Sharing), coined by John Willis and Damon Edwards, to describe the core tenets of DevOps.
Infrastructure as Code and Continuous Delivery (2010 to 2014)
The DevOps movement gained momentum precisely as cloud computing began to reshape IT infrastructure. In 2006, Amazon Web Services launched the Elastic Compute Cloud[25]. Prior to cloud computing, scaling a data center required a capital expenditure approval process, purchasing physical servers, racking them, and manually configuring operating systems. This procurement cycle took months. The Elastic Compute Cloud allowed engineers to provision virtual servers in minutes using Application Programming Interfaces. Hardware had become software.
This virtualization of hardware enabled the practice of Infrastructure as Code. Instead of system administrators manually configuring servers via command-line interfaces, infrastructure could be defined in text files, stored in version control, and applied automatically. Tools like Puppet[26], created by Luke Kanies in 2005, and Chef[27], created by Adam Jacob in 2009, allowed operations teams to write declarative code specifying the desired state of a server. If a server deviated from this state, the configuration management tool would automatically correct it. This ensured consistency across development, testing, and production environments, eliminating the discrepancy between local development machines and production servers.
Simultaneously, the concept of Continuous Integration expanded into Continuous Delivery. In 2010, Jez Humble and David Farley published the book Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Building on earlier concepts articulated by Martin Fowler[28], they defined the deployment pipeline, an automated manifestation of the process for getting software from version control into the hands of users. In a Continuous Delivery pipeline, every commit triggers an automated sequence of unit tests, integration tests, security scans, and infrastructure provisioning.[43] If the code passes all checks, it is packaged and ready to be deployed to production at the push of a button.
The Containerization Movement
While configuration management tools improved server consistency, they still struggled with the complex dependencies of modern applications. A server running multiple applications often faced conflicts between different versions of libraries. The solution emerged from the Linux kernel, which had introduced control groups[29] and namespaces to isolate processes. Earlier technologies like FreeBSD Jails (2000) and Solaris Zones (2004) had explored similar concepts, but they were difficult to use.
In 2013, Solomon Hykes introduced Docker[30] at the PyCon conference. Docker provided a user-friendly interface for Linux containers, allowing developers to package an application and all its dependencies into a single, standardized unit. Unlike virtual machines, which required a full guest operating system and consumed significant memory, containers shared the host operating system's kernel and started in milliseconds. Docker allowed developers to build a container image on their laptop and guarantee it would run identically on a testing server or a production cloud instance.
As microservice architectures gained popularity, organizations began deploying hundreds or thousands of containers. Managing these containers manually became impossible. In 2014, Google open-sourced Kubernetes[31], a container orchestration system based on its internal Borg cluster manager. The 2015 academic paper "Large-scale cluster management at Google with Borg"[32] detailed how Google managed thousands of jobs across heterogeneous clusters. Kubernetes adopted these principles, providing a declarative Application Programming Interface to automate the deployment, scaling, and operation of application containers. Kubernetes quickly became the industry standard for cloud-native infrastructure, abstracting away the underlying hardware and allowing DevOps teams to manage massive distributed systems efficiently.
Site Reliability Engineering and Platform Engineering (2015 to Present)
As DevOps matured from a grassroots cultural movement into mainstream enterprise practice, organizations sought formal frameworks to implement its principles. In 2016, Google published the book Site Reliability Engineering: How Google Runs Production Systems[33]. Site Reliability Engineering, a term coined by Google executive Ben Treynor Sloss in 2003, applies a software engineering mindset to system administration topics. Site Reliability Engineering provided concrete practices for DevOps, most notably the concept of the error budget. Instead of aiming for 100 percent uptime, which is technically impossible and halts all innovation, teams define a Service Level Objective, such as 99.9 percent availability. The remaining 0.1 percent is the error budget, which developers can spend on deploying new features. If the error budget is exhausted, deployments are halted until stability is restored. This mathematical approach aligned the incentives of development and operations.
The empirical validation of DevOps practices was solidified by the DevOps Research and Assessment organization, founded by Nicole Forsgren, Jez Humble, and Gene Kim. Through years of statistical analysis, the organization identified four key metrics that indicate software delivery performance: deployment frequency, lead time for changes, mean time to restore, and change failure rate. In their 2018 book Accelerate: The Science of Lean Software and DevOps[34], the authors proved that high-performing organizations do not trade speed for stability; rather, practices like continuous delivery and automation improve both speed and stability simultaneously. The annual State of DevOps[35] reports continued to validate these findings across thousands of organizations. Gene Kim further popularized these concepts through The Phoenix Project[36] (2013) and The DevOps Handbook[37] (2016), which translated Lean manufacturing principles into the Three Ways of DevOps: flow, feedback, and continuous learning.
By the 2020s, the cognitive load on individual developers had increased dramatically. A developer was no longer just writing code; they were expected to write automated tests, configure deployment pipelines, manage Kubernetes manifests, and monitor production telemetry. To address this, the industry shifted toward Platform Engineering. Platform engineering involves building an internal developer platform that provides golden paths and self-service capabilities for developers, abstracting away the complexity of the underlying infrastructure. Tools like Backstage[38], an open-source internal developer portal created by Spotify in 2020, became central to this effort, allowing developers to instantiate new services with built-in compliance and monitoring without needing to understand the underlying infrastructure code.
The history of Agile and DevOps reflects a continuous effort to reduce batch sizes, tighten feedback loops, and break down organizational silos. What began as a rebellion against the heavyweight documentation of the 1980s evolved into a comprehensive socio-technical system that powers the modern digital economy. Today, the principles of Agile and DevOps are not limited to software startups; they are the standard operating model for banks, governments, and manufacturing firms worldwide. The transition from the Waterfall model to continuous delivery represents a fundamental recognition that software is never truly finished, but rather continuously adapted to meet the demands of its users.
Sources (43)
- Agile methodology
- Wikipedia: DevOps
- homepages.cs.ncl.ac.uk: 1968 Software Engineering Conference
- Wikipedia: Waterfall model
- IEEE
- Wikipedia: MIL-STD-2167A
- IEEE
- IEEE
- Wikipedia: Rapid Application Development
- Wikipedia: Feature-Driven Development
- Wikipedia: "The Cathedral and the Bazaar."
- Wikipedia: Scrum
- Wikipedia: Extreme Programming
- twelve principles
- Jira
- Apache Subversion
- git-scm.com
- CruiseControl
- Jenkins
- W3C
- IETF
- Information Technology Infrastructure Library
- Wikipedia: Agile 2008
- DevOpsDays
- Elastic Compute Cloud
- Puppet
- Chef
- Martin Fowler
- The Linux Kernel Archives
- Docker
- Kubernetes
- Google Research
- *Site Reliability Engineering: How Google Runs Production Systems*
- *Accelerate: The Science of Lean Software and DevOps*
- State of DevOps
- *The Phoenix Project*
- *The DevOps Handbook*
- Backstage
- Bob Aiello, Leslie Sachs, Agile Application Lifecycle Management (Addison-Wesley Professional, 2016)
- Sean D. Mack, The DevSecOps Playbook (John Wiley & Sons, 2023)
- Hamid R. Arabnia, Leonidas Deligiannidis, Farzan Shenavarmasouleh, Computational Science and Computational Intelligence (Springer Nature, 2025)
- Nick Durkin, Eric Minick, Chinmay Gaikwad, AI-Native Software Delivery ("O'Reilly Media, Inc.", 2025)
- Laura Bell, Michael Brunton-Spall, Rich Smith, Agile Application Security ("O'Reilly Media, Inc.", 2017)