The best work is not what is most difficult for you; it is what you do best.
Software is one of the most interesting and exciting industries of our era. Starting from scratch with the first commercially available computer, the UNIVAC in 1951, it has grown to a major global industry in just five decades. The unparalleled flexibility, variety, and richness of software are countered by equally unparalleled societal, organizational, technical, financial, and economic challenges. Because of these factors—continually rocked by unremitting technological change—today's software industry and marketplace can surely be considered immature.
The software industry of the future will be much different than what we have seen. What is less clear is whether the changes can be accommodated by incremental new strategies and business models for existing players, or whether more fundamental restructuring of the software industry and its supporting industries (computing and telecommunications) will be the outcome.
A number of factors described in this book are driving industry change. The increasing ubiquity of high-performance networks opens up new possibilities. For example, they are the key enabler of new distribution and pricing models for software, for adopting a service provider model in software provisioning and operation, and for moving software into the multimedia and entertainment markets. The Internet also enables entirely new applications, including e-commerce and community collaboration, which raise many social and distributed management challenges. The infrastructure, including the network cloud, will add many capabilities transcending connectivity that were formerly in the domain of applications, and it is undergoing a major shift from a vertical to a layered architecture as driven by distributed and multimedia application needs. Mobility creates an endless variety of possible scenarios for the partitioned ownership and operation of the supporting infrastructure.
As the assembly of finer-grained software components replaces monolithic applications, and new value is created by the composition of applications or network services, even a single application may be composed from products of multiple suppliers. Application service providers, Web services, pervasive computing, and information appliances all push this trend to the extreme, as the goal is to allow composition of higher-level capabilities from different computing devices, often from different suppliers. This trend will be buttressed by new software development tools that automate much of drudgery, and together with component assembly and a richer value-added infrastructure, the skill required to prototype and develop new applications will be reduced, perhaps even enabling users to take a stronger role in developing or customizing their own applications.
Applications are becoming much more diverse and specialized in the enterprise (especially sociotechnical applications), in information appliances, and through pervasive computing. This drives application suppliers to find better ways to capture specialized needs and domain knowledge, and encourages a cadre of professionals and firms concerned with organizational needs and enhancing the user experience. These factors plus the increased need for an infrastructure with expanding capabilities is causing the industry to experiment with new development methodologies, such as agile and community-based development. The challenges of provisioning and operating applications become greater in a world with much more application diversity, with applications composed from multiple components and services, and with nomadic and mobile uses.
The special characteristics of software coupled with its rising importance have raised the awareness of many challenges for government policies and laws as well, including ensuring an adequately large and trained workforce, a competitive and vibrant industry, adequate long-term innovation, conquering the digital divide, and struggling with some special issues in intellectual property.
There are substantial opportunities to understand better the challenges and opportunities of investing in, developing, marketing, selling, provisioning, operating, and using software, and to use this understanding to conceptualize better strategies for the evolution of software technology as well as business models that better serve suppliers, operators, and users. We hope that this book makes a contribution toward realizing this vision by summarizing the current (unfortunately limited) state of understanding.
Software is subject to a foundation of laws similar to (and sometimes governed by) the laws of physics, including fundamental theories of information, computability, and communication. In practical terms these laws are hardly limiting at all, especially in light of remarkable advances in electronics and photonics that will continue for some time. Like information—that other immaterial good that requires a technological support infrastructure—software has unprecedented versatility. The only really important limit is our collective imaginations. That, plus the immaturity of the technology and its markets, virtually guarantees that this book has not captured the possibilities beyond a limited vision based on what is obvious or predictable today. The possibilities are vast and largely unknowable.
While the wealth of understanding developed for other goods and services certainly offers many useful insights, the fundamentals of software economics in particular are yet to be fully conceptualized. Competitive market mechanisms, valuation and pricing models, investment recovery, risk management, insurance models, value chains, and many other issues should be reconsidered from first principles to do full justice to this unique economic good. Similarly, many of the legal and policy issues associated with software are in a state of flux and even outright confusion, often associated with incomplete understanding and yet-to-be-formulated theories.
Much remains to be done. Without fanfare, let's move expeditiously forward to expand our understanding of software. Together, let's make the technology and industry the best it can be.