In an ideal Agile world, you quickly build a small, but useful subset of the desired end system, and give it to users. They're excited, because it's useful, they start using it and give feedback. You then work out what to add on to it, build that, and repeat until you run out of time.I've had a couple of projects recently that involved replacing some kind of working system. The above model just didn't work at all: until you'd built a system that included virtually all the functionality of the existing system, users had no interest at all. They wouldn't use it.How do you apply Agile when the smallest useful subset is all of it?
How does agile work when replacing a working system?
agile;scrum;users;iterative development
The agile solution might be not to replace all in one go, but to phase the replacement in gradually. Introduce the new system gradually, bit by bit, keeping parts of the old system running. The old system isn't switched off all in one go, it just fades away. The new parts provide new functionality or other benefits, so the users are delighted to use them. This is also less risky, as you have a 100% working system at all times.Read more from Martin Fowler. The strategies in Michael Feather's Working effectively with legacy code can be useful