Over the past twenty years, web application development has evolved, hand-in-hand with the role of IT in business. Development methodologies have sprung up in response to this evolution. Each new development methodology has tended to build on its predecessors and also reflected the growing importance of IT and move IT and business decision-making closer and closer together. Now, they are partners in digital transformation, DevOps, and value creation for the business.
The history of IT in this timeframe has gone from “work authoring” machines & software (think a PC + an office suite), to software and tools that play a supporting role in getting jobs done (like task management, chat apps, websites, and browsers, etc.), to being one of the most powerful resources a company can wield to connect with customers, efficiently run operations and gather intelligence across the business (IT (“digital”) infrastructure that itself generates business value, applications that help you understand your customers and their needs, and so on). This evolution has earned IT a trusted position next to business leaders within many organizations … and frankly, this evolution is also part of what we mean when we say “digital transformation.”
Having a digital strategy that defines how to build, maintain, and improve these quickly and reliably is an integral part of any business strategy worth its salt today.
There are some common threads among the software development manifestos and methodologies. They represent essential principles that help businesses meet digital transformation goals:
- No silos, one process. Development and operations functions need to communicate and work together. The entire dev-to-deploy workflow must be considered as a whole.
- Small changes, delivered often. Changes should be frequently pushed to production in small chunks.
- Seamless deployment. Deploying software should be straightforward, highly automated (and therefore repeatable without error), and include integrated testing steps.
- Short feedback loops. Continuous learning and improvement are best supported by giving developers feedback as soon as possible after they complete any given work.
The 2017 Puppet State of DevOps Report is based on a survey of organizations at different stages of DevOps adoption. It shows the sort of improvements the application of these principles can create. In it, the highest-performing DevOps adopters have deployment lead times of less than an hour, instead of more than a week at companies not applying these concepts. This, in turn, means 46x more frequent code deployments, 96x faster recovery times (less than an hour, instead of days). Looking at these numbers, it’s no wonder they can innovate faster, respond more quickly to feedback, and outmaneuver their competition.
Overview of development methodologies
DevOps is only one of these overlapping and intersecting movements and manifestos. There are others which overlap and intersect. Let’s take a look at some development methodologies that support modern web application development:
- The Lean Movement
- The Agile Movement
- Continuous Integration and Continuous Delivery (CI/CD)
- 12-Factor App
- Site Reliability Engineering (SRE)
The Lean Movement
According to the DevOps Handbook, “the Lean Movement started in the 1980’s as an attempt to codify the Toyota Production System,” an example of Lean Manufacturing. And that lead time, “was the best predictor of quality, customer satisfaction, and employee happiness; and that one of the best predictors of short lead times was small batch sizes.” … “Lean principles focus on creating value for the customer— thinking systematically, creating constancy of purpose, embracing scientific thinking, creating flow and pull (versus push), assuring quality at the source, leading with humility, and respecting every individual.”
Lean in IT and in startup culture was adapted to the entrepreneurial world by Eric Ries in his book The Lean Startup, and called a “new strategy for the 21st-century corporation” by Lean Movement proponent, Steve Blank. In the end, Lean can be applied to all businesses and many activities.
Improve quality, eliminate waste, reduce time, reduce total costs with:
- Build-Measure-Learn – a scientific approach to creating and improving software, startups, and products through testing and iteration.
- MVP – Build the Minimum Viable Product to deliver and test a new feature or product.
- Shorter technology development cycles.
- Just-in-time process to produce only what is needed for the next stage when it is needed. This helps create a continuous flow, with less waste, waiting, and rework.
The Agile Movement
Agile is a methodology—first codified in the initial Agile Manifesto in 2001—under which requirements and solutions evolve in response to changing requirements throughout a project, and work is done and delivered iteratively according to the current requirements. Planning (and re-planning), early delivery, constant improvement in Agile encourage flexibility and quick response to change. In fact, Agile methodologies accept the fact that the only constant is change. Market conditions can change from day to day and therefore so can the requirements when building software or providing a service to the customer. Agile allows you to continue to deliver business value despite the changing conditions and also enables you to outmaneuver your competition. It also provides a stream of continuous feedback from the customer to keep you on track in delivering what the customer actually wants.
Agile remains popular among developers and teams. In GitLab’s 2018 Global Developer Report, 68% of developers indicated their team’s development workflow was Agile, and 23% DevOps.
In a nutshell, the Agile Alliance explains that through sprint planning, scrum, and sprint review, teams “establish a hypothesis of how they think something works, try it out, reflect on the experience, and make the appropriate adjustments.”
Among the 12 Principles of Agile, there are a few that have evolved and been adopted by later methodologies:
- The value of frequent, small changes
- Customer satisfaction through early and continuous delivery of valuable software (1)
- Working software is delivered frequently (3)
- Working software is the primary measure of progress (7)
- Business and IT as partners
- Close, daily cooperation between business people and developers (4)
- Communication and cooperation
- Projects are built around motivated individuals, who should be trusted (5)
- Face-to-face conversation is the best form of communication (co-location) (6)
- Regularly, the team reflects on how to become more effective and adjusts accordingly (12)
DevOps is a cross-functional discipline, encompassing all of the aspects of software ownership: development, testing, releasing, operating, securing, and monitoring/emergency response. It uses empathy as a core value to improve the customer experience and the quality of life of the teams involved.
From the in-depth post, What is DevOps?: The DevOps movement extends the principles of lean and agile methodologies beyond application code to the entire value stream, from business requirements—driven by the ongoing digital transformation that marks today’s successful organizations—to development, deployment, measurement, and analysis, and back to the next set of business requirements.
Many of DevOps’ technical practices are the child of Agile and Lean methodologies like continuous build, integration, test, and deployment processes (aka CI/CD), on-demand disposable environments, constant feedback flow, rapid prototyping, and delivery, limiting work-in-progress, and building systems and organizations that are safe to change. DevOps incorporates these and adds the secret sauce of a culture of collaboration between business, dev, and ops teams in a blameless, learning- and improvement-focused environment.
The “Three Ways” of DevOps
- The First Way enables the fast flow of high-quality, stable work from development to the customer with frequent delivery of small batches and reduced lead time.
- The Second Way enables the fast flow of feedback within and across all stages of the value stream to catch and correct errors to increase the quality of work.
- The Third Way enables the creation of a culture that encourages learning and experimentation within the safety of short feedback loops and stable systems.
Continuous Integration and Continuous Delivery (CI/CD)
The term Continuous Integration was first used in the 90s. Continuous Delivery was popularized by Jez Humble and David Farley in their book Continuous Delivery.
Continuous integration (CI) is a development practice that focuses on build and testing steps, integrating new work into projects as frequently as practicable; daily if not multiple times a day. CI requires automation around build and testing tooling to reduce effort and detect errors quickly.
Continuous delivery (CD) centers on packaging and deployment, also with high automation to enable low-cost, low-effort, software-defined deployment whenever needed. This enables more frequent feature releases to production and therefore more opportunities for customer and other feedback about changes.
CI/CD principles are applied in DevOps, Site Reliability Engineering (see below), and Agile, enabling teams to deliver changes frequently and reliably.
The Twelve-Factor App
Web apps need to be designed to meet the challenges and needs of today’s web and infrastructure, including scalability, cloud compatibility, and portability. While not in the “family tree” of Lean and its descendants Agile, DevOps, and the rest, the Twelve-Factor App, originally created by contributors at Heroku, is important for the cloud-based, app-centric web we are used to in 2018. It describes a language- and services-agnostic methodology for building software-as-a-service (aka “SaaS”) web apps that:
- “Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;
- Have a clean contract with the underlying operating system, offering maximum portability between execution environments;
- Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
- Minimize divergence between development and production, enabling continuous deployment for maximum agility;
- And can scale up without significant changes to tooling, architecture, or development practices.”
We will go into more depth about the twelve-factor app in a later post in this series.
Site Reliability Engineering (SRE)
The term Site Reliability Engineering predates DevOps and was devised at Google to manage applications like Gmail and Google Docs, etc. SRE has been described by Ben Treynor, founder of Google‘s Site Reliability Team and the person who devised it as “what happens when a software engineer is tasked with what used to be called operations.” If this sounds like DevOps, that’s because there are similarities. Comparing DevOps with SRE, they share common goals of eliminating silos, fostering cultures of trust, making incremental changes, automation, and monitoring. A good explanation of the difference between them is: DevOps describes what needs to be done, SRE describes how it can be done.
How DDEV supports a modern dev-to-deploy workflow
Organizations will choose the methodology that best fits their own goals and team. They may even cherry pick and create the next big idea, building on previous work in the spirit of open source. The motivation common among these modern methodologies is to improve the flow of work, information, and value. This close collaboration and integration between teams, and between IT and business, is squarely aimed at delivering value to customers by supporting effective and empathetic team culture.
The tools we create at DRUD Tech—the DDEV-Local development environment and DDEV-Live, our container-based hosting platform—support DevOps and other modern workflows. They reduce time-to-deployment, increase deployment frequency, thereby providing fast feedback loops; make dev-to-deploy a single unified process; make developer onboarding easier; increase opportunities for problem-solving and knowledge sharing; they can be integrated into automated testing and other systems; our users even tell us our tools reduce stress.
DDEV-Live for an end-to-end solution
When you want to implement a modern web development workflow, you need an end-to-end solution. We’re building that first with DDEV-Local and our newly launched DDEV-Live hosting solution. Sign up to our newsletter and we’ll email you tips and news about DDEV products and services.