Adoption Challenges
Adopting new practices can be challenging, and although you now know that NetDevOps is a mix of already well-known and battle-tested practices, it is still likely that you will face challenges in your journey.
This section describes common challenges and recommended mitigations associated with the adoption of NetDevOps in organizations of all sizes.
Do not get discouraged if you face one of the following challenges. Adoption of new technologies often comes with initial challenges, but the benefits far outweigh the initial burden.
Remember the RIP routing protocol? Frame relay? Half-duplex Ethernet? When introduced, they were different, disruptive, and folks had to learn them. This initial hardship was, however, worth it. A lot of current networking technologies have evolved from these.
Traditional Mindset
The networking field is commonly associated with traditional or old technologies. Although this is not necessarily a true assumption, some networking practices are indeed rudimentary and old, such as physically connecting to devices via a cable and typing commands one by one on a command line. This is not to say this practice is wrong or that there was a better way of performing these tasks before—if a device was isolated on a network, there were not many options other than physically plugging in a laptop to it. Nowadays, there are more options, such as zero-touch provisioning (ZTP) for Day 0 configuration and the use of automation tools for Day 1 and Day 2.
One challenge you will encounter is dealing with organizations and folks who are attached to the old ways of performing tasks. Before, their way may have been the best way, as just described; however, now, there are likely better ways. Some folks will resist change and refuse to adopt new practices.
A common complaint is, “We’ve been doing it this way for X years.” It is not easy to convince these folks of a better way of doing things; however, here’s one way that typically works: instead of leading with the possible benefits of the solutions you are trying to adopt, perform a proof of concept (PoC) with other collaborating individuals and return to the skeptics with factual results, such as improved time to execute change requests or less downtime. It is harder to ignore results than a business pitch. Likewise, the competition factor of seeing others succeed with different techniques will often increase the likelihood of folks wanting to join in. In other words, they do not want to be left out.
Another important aspect, as mentioned previously, is senior stakeholder support. A clear request coming from senior leadership is harder to ignore than a colleague’s request. For any organizational transformation, leadership support is vital, and NetDevOps is no different. Try to find this support early in your adoption journey, preferably right from the start.
Testing or Lack Thereof
Network testing has always been associated with acquiring additional expensive hardware and putting in extra work. Because of these reasons, and others, testing network changes is often kept to a minimum by most organizations, and many times happens in a production environment. When was the last time you copy/pasted commands into a production network device within a maintenance window without previous testing? What about the last time you tested a network configuration change in a test environment that mirrors your production environment? If you only remember the first scenario, you are not alone.
In the software development world, testing is part of the culture. Writing tests for your code and executing them is a standard practice across the industry. There are even software development processes such as test-driven development (TDD) where tests are written before the actual software implementation of a feature. DevOps embraces testing as a way that enables safe, continuous integration and aims to make sure nothing preexisting is broken with new modifications. Likewise, as you have learned in this book, NetDevOps also makes extensive use of testing for networking. Networks are critical, and network changes should be executed with confidence.
You will encounter two common arguments against the adoption of network testing. The first one is, “This was working fine until now without a test environment.” The second common argument is, “A test environment is too expensive for the benefits it provides.”
To answer to the first argument, you must show how new practices such as automated changes increase the number of changes and features that can be implemented in a shorter span of time, and you must show that testing greatly increases the chances of success without rollbacks. A single maintenance window per year, where all the change requests are executed, is no longer enough to support modern applications’ changing requirements. With multiple changes being executed per month, or even per week in some cases, your organization can benefit from a test environment, which increases confidence in the success of these network changes.
For the second argument, yes, historically test environments were very expensive and required physical hardware. However, this is no longer the case. Although you still can acquire physical hardware and build a test environment, you are not required to because there are plenty of virtualized options.
In Chapter 5, you will learn how to install and configure EVE-NG to virtualize network topologies that can be used as a testbed. Although this is a commonly used tool for network testing, you will also learn about different options you can choose from.
Physical testbeds are still irreplaceable for some products and specific features (for example, when you are trying to load-test a specific hardware model). Nonetheless, network testing now has a lower barrier of entry, and many if not most types of functionality can be tested on virtualized network devices. If you manage a critical network, where you need the maximum amount of confidence in your changes, a physical setup that mirrors your production environment is likely still the preferred choice.
Success Criteria or Lack Thereof
In the “Decisions and Investments” section of this chapter, you learned the importance of having clearly defined success criteria. This is the biggest adoption challenge because it directly influences your ability to show successes. This challenge can manifest itself in one of two ways: lack of defined success criteria or unrealistic success criteria.
The first way is the most common. Folks embark on a NetDevOps journey without a measurable destination. They want to reap the benefits of automation and orchestration, so they set out on their way and make some initial investments; however, they end up quitting before they reach the point of seeing positive returns. Figure 2-13, earlier in this chapter, plots the relationship between investment and benefits. Other folks actually achieve successes, but without a goal or criteria to measure them against, so they end up being shut down by management, who do not understand what was actually achieved.
The second way this challenge manifests is when folks define success criteria that either are too ambitious or are cheatable. If you set success criteria that people can obtain by cheating, you may perceive you are getting benefits when in reality you are not. This contributes to resource waste and bad decisions.
An example of a cheatable criterion is one that measures success by achieving ten network changes a month. However, folks can break a single change into smaller changes, meaning one traditional network change can transform into the needed ten. Therefore, consider how “cheatable” your defined criteria are.
When you set success criteria too high, you might never achieve them. This is acceptable if you understand the context of these criteria or the way the criteria were set up. However, oftentimes senior stakeholders are not aware of either, and they simply look at these criteria as yes/no boxes. If you fail to meet the success criteria, your NetDevOps initiative might be shut down.
Defining success criteria might seem like wasted effort at first, and you might face resistance when you propose defining them. Therefore, explain the “why” behind this choice and how it will contribute later in the adoption journey when everyone understands the progress made.
New Skillset
You learned how NetDevOps requires not only networking skills but also automation and orchestration skills, which are not a natural evolution of networking. Although most folks who embark on the NetDevOps journey are completely aware of this fact, skills are usually still a big challenge in adoption.
You can face two types of challenges: folks not wanting to be upskilled and the organization not wanting to invest in the adoption of this new skillset, either through upskilling or hiring.
For the first challenge, there is not much you can do other than to adopt a hiring tactic instead of upskilling. You might find individuals who simply do not want to learn these new verticals and stick to traditional networking, and that is completely fine. You should not force them; instead, apply a different tactic.
For the second challenge, you can invest in explaining to the organization how these skills are different from the former networking landscape and what benefits they will bring. Many times, this challenge comes from the wrong understanding that NetDevOps is an evolution of networking and therefore the same skillsets apply.
Adding to this challenge is the lack of the needed skillsets in the market. NetDevOps is a mix of different domains and is still a relatively new trend. This, combined with a very competitive labor market, makes finding the right skillset typically very challenging. This also applies to the retention of talent when an upskilling tactic is adopted. Consider this when you find the right candidate or when you are trying to retain that special NetDevOps engineer.