From the .PDF: Agile concepts, techniques and technologies are much in demand today. Many organization have astounding success with agile, while others experience failure, sometimes horrifically. Usually agile fails in these cases from improper application of the concepts or lack of supporting environments. While agile necessarily implies “rapid”, at least as far as iterations are concerned; it doesn’t mean poor quality. However, constant code changes to improve quality can bring a development effort to its knees; particularly when you are dealing with large scale efforts involving multiple teams. Refactoring, a concept that is embraced in agile, can include very negative maintenance aspects. After all you want spend your resources developing vital new business functions not maintaining existing code without changing function. How can you build longevity and scalability into your agile efforts while minimizing refactoring and insulating them from technology changes? The answer is you need to adopt agile architectures!