Agility Requires Safety
Google is failing me right now, but I remember Kent Beck explaining why he used the term &quot;extreme&quot; in XP.  It refers to things like extreme skiing.  You can helicopter to the top of a mountain and do crazy things, but you will get killed.  Extreme skiers avoid getting killed by reducing risk.  You break down all of your movements to their absolute basics and you perfect them.  Then when you are skiing, you stick to those basics, performing them almost perfectly time after time.  You never do anything extraordinary.  By doing this you de-risk each movement to the point that you can chain them together and do something astonishing.  In reality, though, extreme skiing (and extreme programming) is simply monotonous repetition of basic skills executed to near perfection.<p>To me, this is what &quot;agile&quot; means.  It means boiling it all down to a small set of skills that you can perfect and repeating them over and over again without exception.  Because you are never taking any risks, the overall project can appear to be insane, but still be accomplished.<p>If you are negotiating what you are doing by saying, &quot;maybe we can get away with X&quot;, or &quot;maybe this will be good enough&quot;, then you will not be able to achieve this kind of agility.<p>And before someone asks: yes, the code will still not be perfect in the end.  You goal is the perfection and de-risking of your <i>actions</i> not your artifacts.  It is a subtle but important point.