name a few. The web and cloud pro- viders have already demonstrated how this approach can help to achieve hyper-scale. While today's telecom network is "software-heavy," it is not "software-centric." Problems that often surface in the "hardware-centric, software-heavy" environment are listed here: Premature optimization Change is costly-hardware changes are difficult Software development regularly fails to deliver, especially when using waterfall develop- ment methods Development done in silos leads to redundant development-limited horizontal platform and modular thinking Unwillingness to take risk and assign accountability Lack of modularity and commitment to composable solutions Financial models are inadequate and inconsistent Thinking which gravitates toward "more is less" not recognizing that simplicity scales [2] 17.2 THE "SHIFT TO SOFTWARE" The "shift to software" story builds on the notion that one can create something that is perfect from elements that are imperfect. If the software is modular and open (accessible to all), imperfect elements can be independently and iteratively perfected over time, often by the crowd. Software development itself has evolved considerably over the last 60 years. Fundamental to this evolution is the availability of technologies and building blocks, depicted in Figure 17.1. Viral Nature of UNIX and C Programming Language Evolution Distributed Data ASP, XaaS, Cloud Open Source Licenses & Foundations The Shift to Software Agile Methods Virtualization/Containers Automation and Policy Composibility/Mashups FIGURE 17.1 Shift to software-building blocks. The Shift to Software The technologies that have facilitated (and underlie) the dramatic shift to "modern" software: The Viral Nature of UNIX and C Open Source Software Linux and Apache Foundations, OpenStack, OpenDaylight (ODL), and the Open Platform for NFV (OPNFV) Scripting and Concurrent Languages The agile method and DevOps The "Cloud" Web 2.0, API Exposure and Interoperability Cloud-Native Workloads: Containers, Microservices