Prior to the advent of agile methods, planned methods had characterized software development. An important focus of these planned methods was to get all of the requirements up front. Furthermore, there was a fervid attempt to get the requirements correct and complete before proceeding to the next stage of development. The unreal assumption that correct and complete requirements would remain so while the solution was developed turned out to be the bane of planned software development methods. It was impossible to get the requirements completed up front, as the business reality kept changing and users could not have known them earlier in the lifecycle. As it turns out, it was not even necessary to capture all requirements up front because some features were seldom used. The business environment continued to be increasingly dynamic, and requirements aged quickly and became redundant. The lack of engagement between business and ICT escalated, and “excessive documentation” took the blame for each other’s nonperformance.
The dynamic needs of the business and the dissatisfaction resulting from software projects led to the recognition that software development has a different paradigm to, say, construction or manufacturing. The new paradigm of software, as Cutter Senior Consultant Kent Beck correctly described in a 2000 conference keynote, is conversation. While the formal, planned approaches to software development had their justifications, the rapidity of changes engulfing businesses demanded equally rapid changes in software development practices. “Conversations” between business stakeholders and software development teams became the cornerstone of quality and efficiency in developing software applications and products (i.e., the agile method).
This new conversational paradigm, forming the basis of agility, assumes significance for both software and business due to the inseparable mesh of business and its processes with software systems, related applications, software packages, and underlying architecture. A bank, an insurance company, an airline, or a hospital simply cannot function without integral support from ICT systems and processes. Agile methods promise to provide that crucial ability for businesses to change, as these methods also provide the basis for rapid changes to corresponding software systems. This integral nature of software systems with business also nudges the business into many forays that had not been envisaged a decade ago.
For example, the phenomenal impact of mobile technologies on banking or the influence of social media on air travel has led to many different products and processes that these businesses had not anticipated a decade ago. Therefore, it is only prudent to explore agility in the context of business. The reach of agility, when considered at an organizational level, is breathtaking. Today, we appear to stand at the crossroads of a business paradigm way beyond what was once considered only a software development paradigm.
Despite the aforementioned virtues of agility in business, whenever a discussion on agile methods is broached, the attention usually goes to agile software development methods such as Scrum, XP, test-driven development (TDD), and Crystal, to name a few. The popularity of agile methods in software development can be attributed to their promise to accommodate change and deliver rapidly to the expectations of business. Thus, these agile methods can be considered “adaptive,” as they adapt to changing user input; “iterative,” for their frequent iterations and continual testing; and “lightweight,” as they are based on small teams with bare minimum documentation. Such characteristics of a software development team and, in fact, any team, are viewed as beneficial because of the promise of adding immediate value to business by enabling and accommodating change.
An agile approach brings the key activities and deliverables of a project out into the open (and on the wall, literally) on Day 1. Furthermore, an agile approach encourages and supports the team in a way that enables collaboration and flexibility. By its very nature, agility delves into the realms of psychology, sociology, and culture — requiring proper understanding and applicability of these erstwhile “soft” domains to ICT, projects, and business. Thus, agile brings together the strategic, operational, and project aspects of a business.