Chapter 2. Understanding Agile

"Agility is the ability to both create and respond to change in order to profit in a turbulent business environment."

Jim Highsmith (2002)

The first programmable computers appeared during the first half of the twentieth century. Programming them was a challenge, because nobody had ever done it before. As the capabilities of the machines expanded, more and more complex tasks were asked of them. By the late 1960s it was already apparent that large-scale programming wasn't easy. The challenge now lay in the complexity of the thing being built.

A NATO conference in 1968 coined the term software crisis to describe the problems that companies, governments and the military faced. The new industry responded by inventing software engineering and attempting to make programming into an engineering discipline. Since nobody really knew the right way to programme or manage a development effort, multiple methodologies and notations were proposed in an attempt to bring discipline and engineering rigour to the problem.

The crisis was never really resolved and after 20-30 years the term fell into disuse – after all, most crises last for hours, days or maybe months, not decades. But software engineering and methodologies stuck. The problem was that software projects were still unpredictable, still delivered late – if at all – and regularly over budget. If anything, the problem had got worse because computers, and thus software, were far more widespread than in 1968. ...

Get Changing Software Development: Learning to Become Agile now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.