Co-authored by: Roland Benedetti

At eZ we see great value in applying a proper software development processes—both on a team and on an organization level. We also believe it is vital to educate our teams, and our customers and partners on a continuous software development process and its benefits. In this blog series we will define the different components of a continuous development process, the benefits it provides, the challenges in implementing such process, and we will provide tools and guidance on how to implement it in your business.

Let's begin by defining the different disciplines/approaches that play a role in a Continuous Development Process.

A Continuous Development Process involves many parts, some can be confusing—Continuous Integration (CI), Continuous Deployment (CD), Continuous Delivery (CD). Although these terms are sometimes used interchangeably, they each have a distinct meaning and purpose in the development process.

Continuous Integration (CI)

A fun piece of historical trivia on Continuous Integration is that it was a technique first introduced in 1991 by renowned software engineer Grady Booch in his book "The Booch Method." Today, CI is considered a cornerstone for Dev and DevOps teams.

Continuous Integration (CI) is best defined as a software development practice that dictates that all members of the development team must integrate their source code to a shared repository on a frequent basis. This leads to multiple integrations of code changes to the repository throughout the day; hence the name Continuous Integration. Depending on your technology stack, the build process involves tasks such as compiling the source code (if you use a compiled programming language), assembling the application—basically bringing the application to a state where it is ready to be installed and used. Each integration is then verified by an automated build which aims to detect any errors that may exist in the code such as missing components or wrong dependencies between components. The build process can also include automated testing of different kinds—from unit testing of the source code to performance testing and acceptance testing which improve quality even further. As a result, the development team knows if a build has been successful or not and developers receive feedback on their work, which allows them to detect bugs and issues quickly and early on.

Continuous Deployment (CD)

Continuous Deployment (CD) is a sub process in which anytime changes are made to the code, validated and ready, they are automatically deployed to the relevant environment—testing environment, production environment, and other environments. This process is automated and does not require the DevOps team code to go through building and managing adhoc the deployment operations and tools.

Continuous Delivery (CD)

Continuous Delivery (CD) is a broader engineering approach whose final goal—the delivery of the software—comes after the Continuous Integration process in the engineering cycle. Overall, Continuous Delivery is a software engineering process that insures the capability to release and deliver a new software or feature to any given environment at any given time. This means you have not only automated your building and testing process but also your release process. This automation allows you to deploy your application at a time that meets your business requirements while still leaving you with the ability to deploy your application at the push of a button or even automatically when a change in the code repository is indicated as validated. The process also maintains that you are continuously deploying small batches of code to your users at the staging, Quality Assurance (QA), User Acceptance Testing (UAT) and production environments for testing and review.

We can say that Continuous Delivery implies that the organization has already set up both a Continuous Integration and Continuous Deployment processes.

Benefits of a Continuous Development Process

The practices mentioned above allow the development team to focus more on planning and developing the applications they work on rather than on working on the underlying tools and processes or losing time on manual release processes or deployments. It ensures end users can quickly benefit from higher quality new features.

Improve Developer Productivity

Developers can focus on coding as they are provided a full development workflow. Developers can continuously receive feedback for their work from various stakeholders: customers, QA, product managers, and others.

Automate the Software Release Process

Developers can automate the building, testing and release process, making you dev team more efficient and cohesive.

Identify Bugs

Developers can quickly identify bugs in the code and address them early on through various tests that have been put in place prior to deployment.

Deliver Updates Faster

Continuous Delivery and Continuous Deployment provides the dev team with the capability to deliver applications and updates frequently and easily with a click of a button.

Summary and What to Expect Next

Continuous Development Process is a very broad practice and its implementation will vary according to an organization’s needs, culture and technology stack and framework. In this blog post we have defined the different disciplines that compose a development process and highlighted their differences. If you are interested in learning more about this topic, I encourage you to check out the following resources:

In the next blog post of this series, we will address the challenges in trying to implement one of these practices. We will also discuss how these challenges can be overcome in order to implement a Continuous Development Process in your organization’s workflow. Watch out for our next blog post next week!

Load Comments