me as code is written, a concept referred to as test-driven development. This ensures that the software is stable for release if all the tests pass. This allows a developer to add more functionality along with new tests. The combination of small iterations and testing led to the concept of continuous integration/ continuous development (CI/CD). These are powerful concepts that have allowed many e-commerce sites and software as a service (SaaS) entities to evolve quickly in response to market and customer needs. There is no reason why the same methodology will not work for telecom infrastructure. A final characteristic of the agile method is the recognition that after many iteration cycles there needs to be scheduled time to "refactor" or clean up and resolve any built up "technical debt"- short cuts that were used to make releases or to solve problems quickly but that are not consistent with the conceptual integrity of the system on hand (Figure 17.4). The agile methodology enables constant change. Applying methods such as full test automation, CI, continuous deployment, and peer review to infrastructure automation and orchestration is revo- lutionizing how typical network services are designed, implemented, and operated. Agile methods The Shift to Software Diversity Iterative Innovation Consolidation Refactored Core FIGURE 17.4 The yin and yang of agile development. enable smaller teams to do more, create faster, and to do SO much more efficiently. Even the role played by the traditional system administrator or network administrator, is rapidly changing. When you apply the agile methods to the traditional operations role dubbed X administrator [11], where X could be system, network, database, etc., and mix it with the requisite automation needed to scale to support very large-scale deployments, then you get what is referred to as DevOps. The DevOps role can be distilled into three meta-disciplines-policy, predictability, and scalability. Thus, the need to have a policy engine, a consistency checker of some kind,