How to scale DevOps: Tackle 7 common time-wasters
Limited Time Offer!
For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!
Source:-enterprisersproject.com
From bad handoffs to over-production of functionality, these issues will slow down your DevOps work. Here’s how to identify and minimize them
DevOps requires structure, visibility, and orchestration to make everything flow smoothly and continuously. The challenge: Throughout the different stages of DevOps work, the way that software development processes and cultures operate can lead to mistakes. In turn, these result in wasted time and slowed down software releases, thus negating the value of DevOps.An answer to scaling DevOps without incurring unnecessary waste comes from lean manufacturing principles.
Given the almost “factory-level” volume and scale of software development projects today, it seems appropriate that an answer to scaling DevOps without incurring unnecessary waste comes from lean manufacturing principles. Commonly referred to as TIMWOOD, the lean methodology identifies seven varieties of waste, each associated with a team or an individual activity.
Some of these waste types are strategic, while others are more tactical. Beyond these, there can be other subsets, or types that are specific to an organization.
However, if teams can visualize the main seven waste varieties through Kanban boards or value stream maps, they will be in a strong starting place. The seven types of waste are:
- Transfer or handoff between teams. (strategic)
- Inventory — backlog of any partially done work. (strategic)
- Motion — task switching, interruptions, and distractions within a process. (tactical)
- Waiting — mostly for approval or decision making. (strategic)
- Over-Processing — re-learning forgotten knowledge. (tactical)
- Over-Production — creation of more features than needed. (strategic)
- Defects/Rework — quality issues during the process. (tactical)
DevOps time-wasters and how to address them
In most cases, tactical wastes can — and should be — solved within the feature teams. Strategic inefficiencies are more complex and require cross-team collaboration to be resolved. Here is a closer look at each of the seven waste areas and how to tackle them in practice.
1. Transfer
With transfer waste, there are too many dependencies between individuals — for instance, to either sign off a task or accept changes. To address this, DevOps teams need to break down silos as much as possible.
Teams can use cross-functional team pairing to solve this. For example, developers can pair up with testers to sign off items in runtime rather than as a step along the way. Continuous integration (CI) is another way to resolve transfer waste: building a single CI process to cover the various gating aspects should serve as a vehicle to deliver software between the various team members.
[ Are you fighting skeptics? Read also: DevOps for doubters: How to deal with 9 kinds of people who push back. ]
2. Inventory
Examples of inventory waste inlcude items that were added and never touched (code documentation being a typical one), and features that were either started on, left behind, or shelved because of higher priorities.
A good way to overcome this waste is for team leaders to agree on a clear set of highest priority features to work on, visualize them in a Kanban board, and only once those have been delivered, add new ones. This simple solution will clear the unnecessary noise from team’s brains and allow them to focus only on the critical features to develop.
3. Motion
This refers to the context switching of tasks that slow down the entire process of software development and delivery. This includes the switching of tasks or responsibilities or dealing with remote or inaccessible resources. The answer to better processes lies within the management of transfer and inventory waste, as well as the allocation of an efficient environment and tools, which will help teams collaborate and communicate better.
4. Waiting
A lot of people will recognize this area of waste: Waiting for an answer to a product-specific question from counterparts, or for environments to be ready and up to date. To avoid this, inject some slack into the schedule so that those delays are already accommodated for even before they happen.
Another good technique is to start complex tasks that are known to cause waiting waste earlier in the process. Some examples of such tasks include environment updates or implementing infrastructure as code (IaC) to support the creation of DevOps environments. Unlike traditional environment setups that includes network configuration, virtual machines setup, and more, IaC automatically generates the same required environment on-demand.
5. Over-Processing
Are you asking newcomers of the team to relearn legacy and undocumented code?
This is probably the easiest of all the waste types to solve. It refers to putting too much effort into things that are not really required. Examples include investing time and resources in things that are not essential to the feature or the system, or asking newcomers of the team to relearn legacy and undocumented code.
To avoid this, help individuals focus on the key feature functionalities that deliver the proper value through clear user stories. Additionally, slotting enough (but not too much) time to implement features can help individuals stay focused and avoid redundant code. Lastly, developing with the mindset of future re-use can help overcome complex functions in the product that can be handled by new employees once the original developers shift away from the team.
6. Over-Production
Over-production waste results from developing features and products that no one will ever use. Many readers will have experienced such waste. To resolve it, focus software development only on the right stories to develop that are clearly attached to epics, initiatives, themes, etc. Proper and frequent reviews within the feature team can identify deviation from the agreed-upon scope and help team members stay in the right delivery lanes.
7. Defects/Rework
Also, painfully familiar to many people is the waste caused by the amount of quality issues that lead to defects and code re-work. Implementation of fast and timely feedback through proper CI with build-acceptance automated testing — mixing various types of tests from unit through functional, integration, and end-to-end — will reduce the number of escaped defects.
Identifying your own DevOps slowdowns
As is the case in so many aspects of software development, there is no “one size fits all,” and some teams will identify with only some of the types of waste described or will identify subsets of waste specific to their own organizations.
MORE ON DEVOPS
- DevOps quiz: 5 questions to ask about your culture
- DevOps terms: 10 advanced concepts to know
- DevOps vs. middle managers: 5 tips to knock out resistance
One thing is universal, however: To scale and mature DevOps, it is vital to understand the types of waste that DevOps teams carry and what implications those have on operational costs, business efficiency, and the customer experience. With that knowledge, teams are then in good shape to start tackling waste. After all, knowing the nature of the problem is always half the battle.