Agile and ALM are two terms that you don’t often see side by side. To most developers, agile means team interaction, customer collaboration, dynamism, and responsiveness to change. In contrast, ALM seems to imply the opposite of agile, with echoes of rigid procedures, inflexibility, and top-down process control. But are the agile and ALM approaches as contradictory as they first appear to be?
Refactoring is one of the cornerstones of the technical agile development practices. It is the mechanism that allows the design and architecture of a system to evolve over time. It is one third of the red-green-refactor loop and the core of test-driven development (TDD). But does it really deliver on its promises?