What techniques can you use to get agile practices into a waterfall project/legacy code base?
Approaches
Small greenfield project
Larger legacy system
Breaking sproc dependencies
A different approach is to decompose large specs into smaller features so that developers can work in smaller iteration.
At least three vectors for change: developers, business people, technical. There are different techniques with these. It's important to prove the value of the techniques. The names we use aren't really important.
Keys to success
Using the term "lean" development is more politically acceptable than "agile." Manufacturing is moving to lean processes, and it appears to have some government buy-in. This leads to easier PM buy-in.
We need to focus on the fact that "agile" is really about minimizing risk, and increasing productivity.
The definition of "done" is key -- including communicating that definition to management.
Success really depends on having the right people in the driver seat; it's hard to convince decision makers to take a risk on large, flagship products.
Customers must be the ones dictating priorities. However, as developers, we need to be setting realistic goals and expectations. This may require going back to the business people to negotiate.
Communication is key. The solution is not to block discussions, but instead to increase the level of education and communication.
Establish your technical credibility. Once you do this, you'll have support. Sometimes, you'll need to sell management on the benefits. Couch this discussion as a value proposition for the manager to make them look good.
Patience, young grasshopper.
Resources