Gone are the days when teams could work on a project for months (or even years) before releasing it to production. Now even two-week cycles are too long due to ever more demanding customer expectations and an always-growing field of competitors. Organisations today expect to deliver new features to production on a weekly, daily or even hourly basis. This accelerated timeline lets organisations adapt to market shifts and technological changes. It keeps companies on the same pace as their competitors. Most importantly, it enables businesses to continuously deliver value to customers. There is no question that being better, faster and more reliable is beneficial. But how can businesses achieve that? The short answer is through DevOps.
DevOps is a practice that enables organisations to develop and deploy software faster and more efficiently, using automated processes like continuous delivery. With DevOps, developers, operations personnel and other stakeholders in the software delivery value chain work together.
DevOps saves time by speeding delivery and eliminating lean time
Which phases of the software development life cycle take the most time? The answer, perhaps surprising, is none of them. The most time is wasted not in any one phase, but in between phases. Developers wait for business analysts to give them requirements. Testers wait for developers to finish their code, and developers wait for testers to tell them whether the code works. Both developers and testers wait for system administrators to deploy new releases to different environments. And sysadmins wait for everyone else to tell them why deployments failed.
The sad truth is that in many companies a significant effort is spent on tasks that do not bring value to the company. Waiting does not bring value, yet many organisations have processes in place with time built in for waiting for another team or colleague to do something. Repeating the same set of manual tests over and over again does not bring value, yet this is a normal practice for many businesses. Handing over deployments to a different department when the team in charge of an application could do it themselves by executing a single command does not bring value, yet there are often separate departments for deployment.
DevOps enables seamless collaboration between teams
Who is in charge of a product? The answer is usually "no one in particular". Everyone is in charge of a particular aspect or phase of the development life cycle, but no one is in charge of a product from beginning to end. And to make things even more complicated, employees often focus solely on their assigned roles. Developers don’t always consider how their work affects testing and deployment, since it’s not their responsibility. They may not even know how their applications are tested or deployed. The same can be said for all other departments. Sysadmins likely do not consider how much time others spend opening Jira tickets in order to deploy something. No one team considers the complete life cycle of an application, because responsibility is split among too many silos. There is a lack of empathy. Communication between teams is limited and one team does not understand how their actions affect another.
DevOps addresses the disconnect between teams by building empathy between all those involved in an application’s life cycle. The practice unites distinct teams into a single team that responds to a single product owner. It dismantles silos by creating self-sufficient teams fully in charge of everything related to their application from start to finish. Such teams are in charge of requirements, development, testing, deployment to production, and even monitoring and pager duty. They are in full control of what's happening with their application. As a result, there is nothing to be handed over to other teams or silos. There is no need for inefficient handovers in the form of Jira tickets, emails or other administrative hurdles. DevOps is all about cultural changes aimed at creating autonomous and self-sufficient teams in charge of the entire life cycle of one or more applications. Therefore, creation of “DevOps departments” and employment of “DevOps engineers” completely misunderstands what DevOps tries to accomplish. DevOps is not about creating more silos, nor it is about renaming existing departments as “DevOps departments”. Instead, it's about people working together to accomplish a common goal: successful release of new features to production.
When everyone works as a single team focused on a single product, communication improves, the need for administrative overhead decreases and ownership is established. Working together and understanding how one department’s actions affect others create empathy. As a result, productivity and quality increase, and costs and time to market decrease.
Eliminating lean time and automating repetitive processes inevitably increases the time teams have at their disposal. Saved time combined with better cooperation between those involved in application life cycles allows teams to focus entirely on actions that bring value by dedicating precious time and effort to solving problems and innovating. For real innovation to happen, everyone in the company needs to be involved. Elimination of wasted time and resources, improved collaboration and decentralised innovation are the three key ingredients that allow organisations to focus on what really matters. They allow businesses to move from trying to catch up with competitors to being able to innovatively tackle today and tomorrow’s challenges.
Viktor Farcic, developer advocate, CloudBees
Image Credit: Profit_Image / Shutterstock