To understand agile, you must understand what it replaces. Software development used to rely on lumbering, complicated project plans that would quixotically attempt to figure out in advance all the work required to produce a major piece of software. The idea was that, given one of these plans, often lovingly rendered in striated, multicolored Gantt charts, you could know exactly how many programmers to assign at each stage and provide your customers with accurate release schedules.

