The lack of skilled IT workers is hurting the deployment of emerging technology, according to a new survey from Gartner. In areas from cloud to cybersecurity, this crisis is expected to last for years to come.
DevOps and Agile are broad terms and some executives consider them interchangeable, but they aren't synonyms. Here are the ways in which they're different and why those differences matter to your team.
Agile discipline is in the process of taking over much of the enterprise world. It's not only because executives like saying their organization is agile. It's because agile discipline in its various incarnations can work very well for companies looking to be responsive to customers and nimble in the face of changing business conditions.
Agile methods can be used as part of DevOps -- a combination of "development" and "operations"; which is also becoming more and more popular in the enterprise world. The two words, agile and DevOps, are so popular, and used in so many different ways, some executives and pundits seem to consider them interchangeable. While convenient, such use can lead to real problems.
Why? Because agile and DevOps are not the same thing. Treating them as the same thing can cause departments to abandon good and safe practices in the pursuit of something undesirable. Here’s a look at what these two trendy disciplines are, how they work together, and why they're not the same thing at all.
What Is Agile?
At its most basic, agile development is development that adheres to the principles stated in The Agile Manifesto. It is an environment in which the priorities, according the manifesto, are:
Agile destroys the idea of a “finished product”, which was the goal of the Waterfall approach. Instead, Agile believes that software development is iterative and incremental. With each new release of software, the customer can perform new functions or improve upon existing functions.
Agile software development can be implemented in a number of ways, including scrum, kanban, scrumban, extreme programming, and many more.
What Is DevOps?
As with agile development, there are many different ways to implement DevOps, though all methods have two significant factors in common:
The point of DevOps is to deliver technology to business units in a timely fashion and ensure the technology runs without interruption or disruption. There's nothing about rapid deployment or frequent deployment in the definition. DevOps can be used to make sure that annual updates go smoothly.
So how do they relate to one another?
In the last decade, companies have begun spinning off a specific DevOps team from their original IT team, or adding Agile approaches within their software development teams. Through these organization changes, several similarities between the two theories emerged.
Methodology Vs. Deployment
Agile methodologies encourage developers to break down software development into small pieces known as “user stories”. This highlights the value Agile places on the customer, which helps the developers by providing faster feedback loops and ensuring product alignment with market need. Agile further advocates for adaptive planning, evolving development, early and continuous delivery, and continuous improvement so that developers can rapidly and flexibly respond to change in client needs, software, or other external factors.
While Agile was a response to waterfall methodologies, DevOps was not a response to Agile. It is all about taking software which is ready for release and deploying it in the safest, most reliable manner possible. DevOps walks a line between flexibility and the rigorous testing and communication that comes with deploying new software. DevOps doesn't depend on the software being developed by the agile discipline. It's entirely possible to have waterfall development feeding DevOps.
Cross-Functional Vs. Siloed
Agile relies on cross-functional teams that typically include a designer, a tester, and a developer. One of the key factors in many agile processes is the idea that scrum members can each do every job on the team. When each team member is capable of doing every job, it increases understanding and makes close communication much easier.
DevOps, on the other hand, assumes there will be development teams and operational teams, and the two will be separate. Because of DevOps’ inherent communication with other teams, DevOps can help automate processes and improve transparency for all teams.
Scrum is one of the most common methods of implementing agile software development. Often a standup meeting, the daily scrum is a short meeting in which team members update one another on their progress, tell of their plan for the day, and let the scrum leader know where help is needed. What scrum meetings are not are formal encounters during which thick specification documents are reviewed with an eye on milestones and metrics.
DevOps is a theory rooted in communication – both within itself and across other departments. DevOps communications often involve specs and design documents that are critical for the operational team to fully understand the software release and its implications. The operational team will often involve user representatives, so that users can be ready for the update, and understand the impact a deployment will have on business operations.
Staying small is at the core of Agile – the smaller the team, the fewer people on it, the faster they can move, even if they are contributing to a larger effort.
DevOps, by its nature, will have multiple teams working together. Some teams can be practicing agile scrum; some can be practicing agile kanban; some can be practicing waterfall. All can come together at the point of software release to communicate with the operational team for deployment.
Agile teams work in short, predetermined amounts of time, known as sprints (generally one month or less) and set a number of features to be created within the sprint. Teams know there will be another sprint coming up, and more features can be covered then. They expect to listen to users and to end up revising current features in an upcoming sprint.
DevOps, on the other hand, values maximum reliability, so they focus on a long-term schedule that minimizes business disruptions. DevOps doesn't prioritize speed and rapid development. Rather, it prioritizes minimal disruption and maximum reliability.
One of the principles of agile development is to prioritize working software over complete documentation. This is fine when you're being flexible and responsive, but it can turn around to bite you when you're trying to turn things over to another team for deployment.
DevOps, on the other hand, requires design documents and specs in order to fully understand a software release and also because it will turn the software over to a separate operational team for deployment. DevOps tends to consider good documentation as part of its definition of working software.
Agile is all about rapid and frequent deployment, but this is rarely the goal, or even part of it, for DevOps.
DevOps absolutely depends on automated deployment to make everything happen smoothly and reliably. Certain tools are an integral part of DevOps.
Agile development teams, on the other hand, may choose to use certain tools. But there are no specific tools required for an agile team. It's entirely possible for an agile team to communicate via email and sticky notes placed around a conference room.
Culture of Agile and DevOps
While Agile does not necessarily lead to DevOps, both can have profound culture shifts within an organization.
An Agile approach encourages a change in how we think about development. Instead of thinking of development as a large, difficult thing, Agile thinking promotes small, manageable changes quickly that over time lead to larger changes.
DevOps can also bring its own cultural shifts within an organization, including enhanced communication, and balancing stability with change and flexibility.
Choosing to use both theories is an active decision that many industry experts believe can lead to more rational decision making, thus improving the company culture.