------------

Agile software methodologies are a set of practices for software developers that promise rapid and quality software development over traditional waterfall methodologies through collaboration amongst team and customers, coding only what it needed, “spiking” software to prove concepts, “pairing” to put multiple eyes on implementations, and by building the systems utilizing test driven development and continuous integration.   

There has been much debate recently about whether or not agile methodologies produce these stated results.  Many will say that agile methodologies are successful due to the high-collaboration amongst team and customer combined with up-front versus back-end testing leads to systems that are built faster, more correctly, and with higher quality.   Others argue that these practices sacrifice long-term software maintainability by avoiding proper architecture, and although it makes systems that appear “correct” up front, but in the long run leads to systems that are not maintainable and reusable and therefore incurring a larger cost over time.

It is my opinion developed through many years of building systems utilizing agile methodologies that current agile software methodologies only represent a few of the implementation details of product development process, and because of this low-level approach they may build software that may meet short-term, individual project needs, but that do not lead to software systems suitable for long-term “enterprise” software.    The current practices of collaboration, pairing, unit testing and continuous integration work at the implementation detail of “product platforms”, and do not address overall needs of enabling enterprise agility through suites of products that enable an enterprise to be agile in their market space.

The evolution of agile practices need to take into account these needs, addressing more enterprise level issues such as multiple project planning, overall software architecture and evolution, systems integration, business process modeling, product planning and product platform in order to enable true enterprise agility, and must also address combining them all together to form integrated processes that giving well defined tasks all the way down through technical implementation where current agile practices are primarily focused.