In most organizations there is a clear distinction of roles in the IT function.
Developers write the code, QA teams test codebase and system administrators configures, deploys and maintains the application.
On paper this division of labor between Development and Operations makes sense.
But in real life it is cause for massive chaos that many IT teams face, resulting in bugs that remain unfixed long after they have been discovered and features that take too much time to be rolled out.
All of this makes for a poor customer experience and hurts the brand and the bottom line.
How Dev and Ops are at cross purposes
The basic job of a developer is to make changes, while an operations team is tasked with uptime and reliability, of making sure that the application is stable and everything is predictable.
Boiled down to the basics, the two roles are at cross purposes to one another and this misalignment plays out in a number of ways.
The developers might suddenly dump a ton of code on operations, forcing them to forego a weekend as they work to ensure that tasks like integration testing, builds, and building virtual machines are completed on time.
In response to urgent business requirements developers might push code which would not be deployed because the operations team would take some time to certify the code as production ready, and by the time the rollout happened it would be too late.
This siloed approach is a relic of the times when software development cycles stretched for months, even years. It’s out of place in an Agile environment.
This approach is not only responsible for code deployments getting delayed but is also the reason why time to live (TTL) for defects is so long. When multiple teams are responsible for testing, building and deploying code it takes a while, especially in complex enterprise environments to isolate and troubleshoot the fault.
Using DevOps to make software development efficient
DevOps essentially brings the functions of software engineering, quality assurance, and technical operations under one team. It breaks down silos and creates synergies so that the strengths of the various teams are combined and the opportunity cost of wasted IT is drastically reduced.
Here are some of the things that happen when you implement DevOps:
- Continuous integration and deployment: Instead of the code being integrated and deployed at the end of the release cycle, DevOps ensures that changes are incorporated into the trunk so that new features can be rolled out more quickly.
- Automated acceptance testing: Acceptance testing is automated so that every time a change happens in code base the time to deploy can be slashed.
- A culture of trust: Because everyone associated with the code delivery chain is on the same team there are no unpleasant surprises and the entire team can work as one well oiled unit.
- Peer review of changes: Instead of a change being externally reviewed as before DevOps helps institute a system of peer review. Because of internal familiarity with the code the process yields higher quality results more quickly.
DevOps like practices, for example has resulted in Amazon Web Services deploying once every 11.6 seconds as opposed to once in 5-6 months with Waterfall models. This speed of development ultimately results in massive wins.
There is data to support the benefits of DevOps as opposed to traditional software development processes. A survey by Puppet Labs, a DevOps tool shows that:
- Traditional processes are 41% more time consuming.
- In traditional processes 21% more time is spent dealing with emergencies.
- Adopting DevOps mean that time invested in infrastructure improvement increases by 33%.
- IT departments that adopt DevOps see 50% lower change fail rates than companies who have not implemented DevOps.
- Companies that have adopted DevOps are twice as likely to exceed profitability and market share goals and experience 50% higher market capitalization growth in 3
Perhaps the last statistic is what businesses should be paying into- properly implemented DevOps can make IT departments lean and mean and actually make the entire organization more reliable and agile, and actually end up affecting the stock price!
Because DevOps demands new skillsets an organization might struggle to find people who are comfortable in this role. Most companies get around this problem by either making developers work in operations roles, making them automate scripts and create reusable code libraries etc., or by increasing the support role of the development team and making them responsible for tasks like build and deploy.
DevOps is not a silver bullet for IT efficiency and effectiveness but implemented properly it can be a game changer.