With a history going back well over sixty years at this point, the field of software development has understandably acquired a number of principles and techniques that guide those who practice in it. Early on and for several decades thereafter, virtually all software creation occurred in environments that emphasized rigidity and repeatability of process, the idea being that these factors would result in the best possible software in the end.
At the turn of the millennium, though, a band of software development leaders came together in a way that sought to overturn that consensus. They pronounced the onset of a new era of more agile software development processes, and the question as to what is agile has been a frequently repeated one since.
In the end, though, that question is not very difficult to answer, as the progenitors of the movement themselves laid out the answer in some straightforward ways. Their clearcut “Manifesto for Agile Software Development” expresses a number of simple principles that, taken together, give the movement its substance.
First, they prized interactions between individual developers over clear-cut, established processes and the tools that support them. Second, they encouraged developers to aim at working software long before they began to focus on creating documentation to explain it, feeling that the former would lead to the creation of higher quality kinds of the latter.
Third, they declared that teams of developers should strive to collaborate productively throughout the process with customers, the actual consumers and users of software, rather than simply laying down targets in contracts at the beginning. Finally, they felt that the best software developers would always seek to respond flexibly and effectively to change of every sort, instead of sticking blindly to plans that had been laid down beforehand.
Each of these value judgments, to an extent, amounted to an overturning of the then-conventional ones. True to its own nature, the field of agile software development has itself evolved over time, taking into account lessons learned by its practitioners. Today, while the word “agile” alone may seem to some to have been diluted to the point of meaninglessness, there is no doubt that the movement has had deep effects on software development as it is actually practiced.