Some critics equate agile methods with "hacking". They allege that employing agile methods is really about writing code without requirements, without planning, and without design. Contrary to what these critics allege, true agile methods involve planning, requirements, and design. What differs from waterfall methods is that agile organizations practice these activities just-in-time . I.e., they plan, but they try not to invest a great deal of time on details that are likely to change. Same with requirements and design. Consequently, they have to constantly revisit and flesh out the details as development progresses. With waterfall methods, you try to complete detailed planning, requirements, and design as if there is little or no risk of them changing. When you employ agile methods, there are constant temptations to lengthen iterations, put off getting feedback from users, put off revisiting requirements, and blow off writing tests first. Agile is not about hacking; in ...