In the last decade / agile software development has moved / from being a cult technique / to an increasing part of the mainstream. I was lucky enough / to be / at the beginning of this story, with early experiences / on the 'birth project' of Extreme Programming / and a co-author of the Manifesto for Agile Software Development. ThoughtWorks started / using agile techniques / in 2000 / and we've since successfully used them / on our projects world-wide. We've learned / a huge amount / about using agile methods / in enterprise settings / and are committed / to sharing this learning / to help foster their intelligent adoption.
It's been over a decade / since / the developers of agile methods / first started to talk / about their approaches. In this time / agile thinking has changed / from a niche activity / to an approach / that is widely used. However, like any popular technique, agile software development has suffered / from semantic diffusion, so much of / what we see / under the name of agile / doesn't bear much resemblance to / what the early pioneers were doing. So I think / it's important / to revisit the essential elements of agile thinking.
* semantic connected with the meanings of words * diffusion the spreading of something more widely
I've always seen / the essence of agile thinking / resting on two contrasts / with traditional plan-driven software engineering:
Plan-driven engineering expects us / to come up with a predictive plan / that precedes development. The plan lays out / the people, resources and timelines / for the overall project. Software design is also done up-front, with implementation expected / to conform with this design. Success is measured / according to how well development follows this plan.
Agile plans are a baseline / that we use / to help us control changes. Agile teams plan / just as carefully / as traditional teams, but the plans are constantly revising / to reflect the things we learn / during a project. Success is based / on value delivered by the software.
Plan-driven engineering seeks a process / which provides enough structure / to reduce individual variations to insignificance. Such an industrial process / is more predictable, copes better / when people transfer, / and is easier / to define skills and career paths.
Agile engineering sees / software development as a primarily human activity, / where the people involved / and how they bond as a team / are the primary driver / behind success. Processes (and tools) can enhance / a team's effectiveness, but are always second-order influences.
* primarily for the most part; mainly.