Contrasting the Waterfall Model, Agile, Lean and DevOps

Continuous Delivery, Continuous Integration and Culture

Image for post
Image for post
Josef Langerman

Introduction

A lot of discussions in the software development and IT project management communities are often around software development methodologies. The waterfall model, a traditional plan-driven approach to software development has been around for decades. Critics argue that the waterfall model lacks flexibility to accommodate customer changes and that its linear stages to software development are not people-centered, do not encourage customer collaboration and leave no room for creativity nor innovation. To improve software development, individuals have adopted methodologies that focus on customer collaboration, continuous delivery, constant feedback and communication between developers, customers and users while delivering software incrementally in small releases. This has led many individuals to becoming advocates of agile way of thinking.

The waterfall model vs the agile way of thinking

Image for post
Image for post
Figure 1. The waterfall model (Sommerville, 2011).

So why is agile a philosophy and not a methodology?

Image for post
Image for post
image by David Bain

Agile manifesto and principles vs the waterfall process model

Image for post
Image for post
Image by brane

When can I choose the waterfall process model over agile methods?

It is proven that in principle, one should choose to use the waterfall model only when the requirements are well understood and unlikely to change radically during system development (Sommerville, 2011).

Why choose agile way of working over the waterfall model?

Image for post
Image for post
Courtesy of MedDigital
  1. While later changes to the system specifications in the waterfall model is difficult to integrate as this may involve redesigning the all system, agile methods welcome changing requirements even late in the development of the product.
  2. While the waterfall model places emphasis on documentation, agile methods focus on frequently delivering working software to customers.
  3. While development teams work in isolation away from business people, agile methods encourage collaboration between development teams, business people and customers.
  4. While the waterfall model places importance on processes and tools, agile methods focus on motivating individuals by building a culture of trust to get the work done and providing all the supports needed by the team.
  5. While the waterfall model uses documentation to communicate the plan of what has to be done in a software project, the advocates of agile methods believe that face-to-face conversation is the most efficient way of conveying information.
  6. While documentation is used as a metric to assess the progress of the project, agile advocates believe that working software is the primary measure of progress.
  7. While processes of the waterfall model lead to ineffective communication between development teams and customers, which is considered as one of the main problems that lead customers to being dissatisfied, agile processes create a culture that promote sustainable development by encouraging collaboration between sponsors, developers and users throughout the development life cycle.
  8. While the waterfall model emphasizes on following a well-established plan which does not keep in mind potential later changes to the system requirements, agile methods advocates believe that best designs emerge from self-organizing teams.
  9. Finally, while the waterfall model put emphasize on improving development processes and tools, agile advocates believe that success is achieved when individuals assess their performance regularly and adjust their behavior accordingly.

Agile or lean for improvement? Maybe both for success and innovation?

Phil Abernathy states in a video that the four most common workplace challenges are:

  • Low morale and employee engagement
  • Unsuccessful projects
  • and high cost of operations

Application of lean and agile

Rod Bray explains in a video that agile practices can be used to solve problems that fall in the quadrant of complex and that lean principles can be applied to solve complicated problems where expertise is required by pulling the waste out (Bray, 2013). The term agile and lean are often used interchangeably by some IT professionals. However they are different in their application. Agile was born of the need to improve software development process models which means agile is applied on projects. In contrast, lean was born of the need to improve production system operations and this means that lean practices are not directly applied to projects but to operations and processes involved in managing projects and delivering products and services.

From agile methods to lean principles and practices

Agile methods have been used for years. Scrum approach to project management and extreme programming technique in software engineering have been used a lot. However, many individuals who have lot of years of experience in agile way of working are now seeing that agile methods have to be improved. Others argue that “lean is a necessary progression for organizations planning to scale up agility from the project or team level to the organizational level, which agile methods fail to address satisfyingly” (Smits, 2007). For this reason, the agile community is moving toward using lean software development.

  1. Build Quality In
  2. Create Knowledge
  3. Defer Commitment
  4. Deliver Fast
  5. Respect People
  6. Optimize the Whole

Lean within agile

As declared by Chris Sims in an article entitled “Fowler: Agile Vs Lean Misses the Point”, “many of the people who developed the current crop of agile methodologies were strongly influenced by lean manufacturing and the ideas behind it. This can be seen in the many commonalities between lean and agile, including (Sims, 2008):”

  • Empowered teams
  • Adaptive planning
  • Continuous improvement

Difference between lean and agile

Régis Medina in a video from the “Lean IT Summit 2013” contrasts these two methodologies by defining agile as a “process for building the right products with the minimum overhead in an unclear environment and lean being a set of practices for developing the right skills to deliver more value with the less waste.”(Medina, 2013). Thus, while lean and agile practices are based on some common principles, they are different approaches. Agile methods are practiced to improve software development processes whereas lean way of working is used to improve production system operations which lead us to concluding that lean principles are not only used in project management processes but in the entire organization from project or team level to the organizational level.

Transforming IT service delivery with DevOps by using agile and lean practices

Agile way of working such as scrum and extreme programming have improved software development. Lean software development principles are not only improving agile methods but also the entire production system operations. However, when it comes to improving IT performance in order to give organizations competitive advantages, we need a new way of thinking, a new way of working that improve all the production and management processes and operations from the team or project level to the organizational level while encouraging collaboration between all the individuals involved for fast delivery of valuable products and services.

What is DevOps?

There are several definitions given by different individuals practicing the DevOps culture. To quote a few of them we give the following definitions for DevOps:

  1. Gartner analysts declare that DevOps “… is a culture shift designed to improve quality of solutions that are business-oriented and rapidly evolving and can be easily molded to today’s needs” (Wurster, et al., 2013).

How to successfully integrate DevOps culture in an organization?

We cannot talk about DevOps in a corporate environment without integrating a set of principles and practices that make development and operations teams work together. For this reason, Garter analysts support that DevOps takes into account several commonly agreed practices which form the fundamentals of DevOps practices. These practices are (Wurster, et al., 2013):

  1. Continuous delivery
  2. Continuous assessment
  3. Optimum utilization of toolsets
  4. Automated deployment pipeline

We are DevOps when we are:

  • Agile (continuous integration and continuous delivery)
  • Lean (waste elimination and value stream mapping)
  • Making use of the best social psychological believes to motivate people and manage our organizations.
  • Making continuous improvement of products, services and processes
  • Creating a culture that invites and encourages development and operations teams to work together.
  • You can add on this list based on your own professional experience.

Continuous integration

Martin Fowler defines continuous integration as “a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early” (Fowler, 2006). Continuous integration is one the drivers of agile practices. In fact, we can just say that DevOps makes use of agile best practices to encourage continuous integration through iterative development. As stated in one of the principles of agile way of working, “software is delivered frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale” (Beck, et al., 2001). The main advantage of continuous integration is that it makes it easier to detect bugs earlier during development instead of waiting to integrate everything in the end which makes it expensive to fix if there are any bugs.

DevOps and continuous delivery

As stated in the fundamental principles of agile practices, “the highest priority is given to satisfy customers through early and continuous delivery of valuable software” (Beck, et al., 2001) . However, DevOps is all about continuous delivery as this way of working aims to transform IT products and services delivery within organizations. Jez Humble argue that “implementing continuous delivery means making sure your software is always production ready throughout its entire lifecycle — that any build could potentially be released to users at the touch of a button using a fully automated process in a matter of seconds or minutes” (Humble, 2010).

Difference between DevOps and Agile

Agile methodologies and the waterfall model are approaches to software development. In contrast, DevOps is a corporate way of working that strive to promote collaboration between development and production teams by making use of different methodologies. This means that DevOps is not just about being agile or lean. It is more than that. DevOps includes agile and lean principles, systems thinking, the ITIL framework, social psychological beliefs that help organizations to motivate people and many more things.

Relationship between DevOps, agile and lean

Professor Josef Langerman in a video states that “there are three ways of working which are: DevOps, lean and automation. DevOps for us is agile, what I mean by agile is continuous delivery, continuous integration. It is all of these modern engineering practices” (Langerman, 2015). Thus, DevOps as a spirit, way of thinking and way of working would not be possible without agile and lean principles. Another thing to mention is automation. As supported by Gartner analysts, automated deployment pipeline is one of the fundamentals of DevOps (Wurster, et al., 2013). These analysts also support that automating deployment pipeline enables a frictionless deployment. Thus, you are DevOps when you are agile and lean.

Conclusion

A new way of working that encourages collaboration between development and operations teams to work together is emerging. This is DevOps. It is the next big thing in software development and IT products and services delivery. Through the use of lean and agile principles, systems thinking, ITIL and social psychological beliefs for motivating people, the spirit of DevOps is transforming the way IT products and services are delivered. DevOps is all about people and automation. It integrates the best parts of different software development methodologies and best practices in combination with some of the best social psychological beliefs for motivating people and encouraging the entire organization to work together in order to deliver valuable products and services that satisfy not only the customer but also the people involved in the development and delivery of these IT products and services.

If you enjoyed reading this article, please click the ‘like’ button, leave some comment, share and recommend it to others.

Written by

A type of software developer that connect business ideas and technology to bring innovation.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store