The challenges and predictions that preoccupied our industry during the run-up to the millennium, especially the Y2K problem, the dot-com bubble and the events that followed the downturn, had significant impact on the Software Product Engineering (SPE) community. Many startups vanished because of a lack of additional funding. While the confidence and hope of independent software developers and outsourced product development organizations thrived after the telecom bust, several other noteworthy socioeconomic and political factors challenged the industry. In spite of all these challenges, in my opinion, here are the 10 best influences that transformed SPE during the last decade.
Growth of e-commerce and online applications. Within a few years after 2001, technology became a core corporate strategy for businesses to remain competitive in the Internet economy. Investments happened in two key areas: renewal or upgrade of IT infrastructure, and incubation of startups that pioneered in Web 2.0.
Meanwhile, e-commerce and Web technologies witnessed consolidations and mergers of key players. Security standards such as the PCI DSS (Payment Card Industry Data Security Standard) emerged, and conformance to such standards was valued by CEOs to ensure regulatory compliance and customer satisfaction and retention. Indeed, the global Web-related buzz, aspirations and predictions that engulfed the industry during mid-1990s turned into viable business opportunities during the past decade and greatly influenced SPE.
Service orientation and new business models. Paradigms such as 3-tier architecture culminated in n-tier, component-based, service-oriented architectures. By 2005, a wide variety of software hosted by application service providers became popular for simultaneous use by many corporations. This multi-tenant paradigm enabled a virtual marketplace, creating B2B opportunities for vendors, suppliers, organizers and end users. This led to new business models in industries such as hospitality, travel and transportation, real estate, and finance.
Collaboration tools. While e-mail continued to be the main tool for communication on the Internet, collaboration tools that enabled user forums, online surveys and social networking came into play. With the dawn of Web 2.0, collaboration on the Internet took several new forms, such as video-sharing and business networking. Silicon Valley, the hotbed of technology that went through the pains of the dot-com bust, flourished with companies that invented products for sharing of multimedia content and collaboration.
Agile software development. By 2000, the success of agile methodologies such as XP and Scrum influenced the industry. During February 2001, 17 methodology experts convened at “The Lodge” at Snowbird Ski Resort in the Wasatch mountains of Utah and wrote “The Agile Manifesto.” Gradually, the popularity of agile grew across the globe. Agile gurus and practitioners organized conferences, workshops and events to evangelize and propagate agile methodologies. Lean software development and Kanban spiced up this evolution and got adopted as best practices in agile methodologies.
Modern software engineering. Software engineering best practices and tool chains, configuration management, automated build, continuous integration, and application of IDEs and tools (such as static analyzers) came into play and spruced up traditional software engineering. Iterative and incremental development transformed the definition of analysis, design, coding and testing. All of these became iteration activities rather than project phases.
This trend continued and an impact on Web development as well as other forms of engineering activities. Unified processes, object orientation, model-driven development, aspect-oriented programming and several other software development paradigms became popular. All these put together gave birth to modern software engineering that transformed the mindset that treated software development simply as a coding venture. Software development became an iterative or incremental process made up of several stages with methodologies, tools, modeling languages and techniques.