Agile vs DevOps - How have these two terms shaped the way how modern software is developed today? Both have become extremely widely adapted in many different sorts of ways. I have seen them helping shape software, project management, and structure organizations to mention a few.
Agile and DevOps is a tricky thing to define (in my own experience) and the lines between the two of them very often get blurred and confusing for a lot of people. To shorten it I have put both of them in an unordered list below with a short description.
- Agile is a series of methodologies around what we know as iterative development. It has been designed to make tasks smaller and more manageable and allows for an increase in collaboration.
- DevOps is a combination of two teams in an organization. Very often these teams consist of Operations (IT) and a Software Development Team. Together they can create an efficient and more powerful development process.
So now I know the difference Christian, or what? Nah - In this article, I will be digging deeper into the differences between Agile and DevOps. I will also cover the topics: Can DevOps and Agile be implemented together? Is one of them better than the other? You can see it as a FAQ.
I have recently been following some courses about Cloud Architecture, DevOps, and Software Development to extend my skills in these areas. This has resulted in the knowledge written in this article. For a long time, I have also wanted to get back into the writing of technical stuff, but haven't found the right topic (might have now). This will be my first article and more will follow as I gather new knowledge that I find useful to share with others.
What is the difference between Agile vs DevOps?
Agile and DevOps are both methods and technology used within software development. Both of them are designed to improve the process of software development and they accomplish that by using different approaches.
Software developers use Agile as a way to share guiding principles and be more responsive to changes.
In terms of its culture change, DevOps aims to boost collaboration between software developers and IT operations. Agile is often said to be applied outside of software development teams by DevOps.
What exactly is Agile?
Agile software development is a collaborative process focused on rapid delivery and collaborative teams. It's a set of values and principles that guide software development decisions.
It's hard to define agile more briefly than the original manifesto written back in 2001. It's only 68 words (read it here: Manifesto for Agile):
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
That is, while there is value in the items on the right, we value the items on the left more.
So what can we learn from that?
- Agile is not a methodology. You can use it to enhance methodologies.
- Planning is good, but be aware that plans don't always work out in a changing environment.
- Documentation is great but not hundreds of pages that will never be used.
A mistake I see quite often is that teams think they are agile just because they copy the agile approach and invest in agile tools. It doesn't make the team agile. Agile is not only about making small teams do different stuff and working with backlog items in two-week iterations. It's all about flexibility and adaptability. The team needs to be ready for changing needs and throw ready-made plans out of the windows from one day to another.
7 Benefits of being Agile
- Increased Productivity - Kanban and Scrum are tools for planning and can help a team keep track of work and progress towards their goals for a project.
- Ownership - The Development teams can get a feeling of more ownership due to the required trust from the leadership.
- Predictability - By moving away from plans that can't be changed the organization can be set in a position where they can get a better picture of what is working and was is not.
- Satisfaction - Customers are more likely to be satisfied due to the focus on finding and solving issues that may arise during development. In other words, Agile allows for a direct line between the customer and developers giving a short time of response and problems solved faster.
- Quality - The chances of overall higher quality of a product are higher as there is a focus on testing and sustained customer involvement.
- Collaboration - I know I wrote that Agile is all about flexibility and adaptability, but I have to add that it's also about people. Organizations can let their employees act guided by their previous experience and some shared values because of the value of human interaction over the old-fashioned "We have always done it that way, and we are not going to change it" that are bigger.
- Agility - Last but not least! Agility allows the team to quickly respond to changing customer demands or a changing market. The project is never locked to some predefined set of descriptions.
How to be agile as a company?
In most companies, employees are used to be working in the gold old-fashioned waterfall model. The waterfall is the plain vanilla of the predictive model world. It assumes you finish each step completely and thoroughly before you move on to the next step. The waterfall model can work reasonably well if all the following assumptions are satisfied:
- The requirements are precisely known in advance.
- The requirements include no unresolved high-risk items.
- The requirements won't change much during development.
- The team has previous experience with a similar project.
- There is enough time for the project to do everything sequentially.
Please do tell me how many times before a project kickoff, you have been able to put a checkmark in front of each of the five above points? I can count it to 0 for myself…
What has the waterfall model to do with anything? I included it as most companies rely on this model and moving this paradigm to agile can be a very difficult and complex task. This can especially be a difficult task for businesses that are strictly guided by processes. It may require a major shift and needs some backing from the management team. But a few actionable steps to make your business more agile could be:
- Encourage entrepreneurial thinking and autonomy in the organization. Encourage people to solve their own problems and make decisions. This makes the employees more autonomy = a more agile business.
- Don’t get too attached to anything in your business. You need to remain flexible and willing to incorporate new ideas.
- Cut whatever is not working. If it doesn’t provide an objective benefit to your organization, get rid of it immediately.
- Focus on sprints instead of marathons. Stop planning out projects too far in advance as this makes it difficult to respond to rapid changes.
DevOps – What’s that?
DevOps unifies people, processes, and technology to bring better products to customers faster. It’s a compound of development (Dev) and operations (Ops). DevOps is a short word for the above-mentioned to continually provide value to customers.
DevOps enables “old” roles in an organization (development, IT Operations, quality engineering, and security) to coordinate and collaborate to produce better and more reliable products.
The first time you hear the name DevOps, it might sound a little like some dark military team you for sure don’t want to meet. In the beginning, I thought of DevOps as a process, but it’s more of a kind of shift in the culture in the organization. It’s a central unit that makes the teams collaborate. Again the employees are the key to accomplishing this.
I have found this great definition of the DevOps model on AWS. What is DevOps? – (AWS)
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.Amazon Web Services (AWS)
Why should we combine our developers with the operations department?
The IT operations team(s) used to be separate from the development team in the past. People in communities of software developers and operations then realized there were issues with the way these teams were structured and how they interacted (or didn’t) with one another.
For example, Development and the IT department had different objectives and performance indicators. Also, they were (and still are) located in different rooms, locations, etc. When they started “working together” – this resulted in DevOps.
The Concept of DevOps
DevOps got some key terms that define a lot of ways they handle things. Below is a list of some of these key terms that define the core concept of DevOps.
- CD (Continues Delivery) – A DevOp is thriving to achieve the best ongoing and manual or in most cases automatic release of software to production environments. It’s primarily aimed at new cycles of software. In some organizations, new releases are deployed without any changes.
- CI (Continues Integration) – Ongoing programming, building, and testing of new code. These steps are carried out before the new code is turned over to the continuous delivery platform for deployment to production, beta, etc… Combining it you get CI/CD (the most used term).
- IaC (Infrastructure as Code) – The core concept of the cloud is that you can pick the infrastructure you need or use with code that can be understood by these cloud services – how awesome is that?! The cloud services then create the infrastructure you define in the code, without you having to make the configuration each time. This allows you to make environments where you can spin up a whole production environment as a test and check if it would go well with the currently deployed production environment.
- Containers – A container is a lightweight, standalone and executable piece of software. A container includes everything you need in order to run the software you pack inside the container.
- Serverless – A term is this often used and what it means is that you can run a service or microservice on cloud infrastructure without having to worry about the servers that actually run your code. You only have to provide the code and then the cloud provider is running the code and returns the results to you. This is often referred to as FaaS (Function as a Service).
- Microservices – A microservice is a standalone application with a specific responsibility. This could be a service responsible for all card transactions, another one responsible for authentication, and so on. Often you will see containers being used to deploy a microservice.
- Pipeline – A pipeline is a set of connected processes where you use the output from one process as the input for the next process. These are used with CI/CD.
- Unit Testing – Unit testing is all about breaking an application into smaller pieces so you are able to test that each feature within the solution works.
Benefits of using DevOps in your Organisation
Being a DevOp is all about producing high-quality software faster than ever while you also save time and money. That sounds like a big responsibility – it is and that’s why they often are highly paid and some very strict developers inside the organization. Below is a more brief breakdown of that:
- Security – DevOps is creating infrastructure by code, just like software. Instead of handling this process manually, you can define policies to stay compliant no matter how many servers will be deployed to run the solution. At the same time, you are sure that the servers deployed got the exact same specifications each time.
- Collaboration – Workflows will be combined, inefficiency is being reduced and time is being saved by allowing teams that normally were separated to work together.
- Speed – Your development department will be able to respond to the ever-changing market rapidly due to the new way of releasing new features – it all ends up being more efficient.
- Rapid Delivery – The above point leads me to this. The DevOps employee makes it possible to increase deployment frequency = a higher pace of releases. This allows you as a company to respond faster to customers’ needs and build a competitive advantage.
- Reliability – Automatic testing of new code is baked into the core. This ensures that rollouts are of the highest possible quality and gives you a low downtime. Every deployment is build for stability and is thoroughly tested before shipment.
- Scalability – Imagine being able to scale up and down and also save money while you do so. DevOps implements automation and is capable to achieve this with cloud and container technology.
FAQ about DevOps and Agile
What is Agile?
Agile is a term for an iterative software development approach. It has a focus on collaboration and quick releases of software. Agile provides a set of predefined principles that are used to help the team drive decisions in software development.
What is DevOps?
DevOps is short for “Development” and “Operations” – referring to tech departments in an organization. A DevOps is an employee that gives an organization the ability to deliver new software and services at high velocity. They are often evolving and improving software products at a faster pace than an organization using a traditional software development process – makes out for the same when talking infrastructure.
What is CI/CD?
CI/CD is short for Continuous Integrations and Continuous Development. It’s actually a tactic for DevOps – it’s their way of delivering new software releases to customers using automation in the agile development process.
What is the difference between DevOps and Agile?
Both techniques are used in the development of new software. Both are designed to improve the software development process and they seek to do so by taking a different approach.
I hope this “wall of text” has given you a better idea of what the difference is between DevOps and Agile. Both are big concepts and I haven’t gone into depth with any of them in this article, only given you a brief explanation of them for understanding them.
If you got any suggestions or questions, please feel free to leave them in the comments below. I will answer as fast as possible – have an awesome day!