There are many tried and tested implementation methodologies and countless variations on a theme. Common practice is picking and choosing the bits that work best for a given target environment. Hybrid, agile, waterfall, call it what you will. The bottom line is we learn from every implementation and hopefully adapt. Or do we?