My company is going full steam with the agile process, with multiple agile projects in work. The first agile team, the proof of concept, carried the product through release and the first post production release.
After this successful effort, the team was quickly disbanded, sent off to help other projects on their agile way. My disillusionment with agile comes from third and later release stage of the software life cycle.
Agile is good at pulling expert and building moment, getting all excited for a project, but how do you wind down a project and move it stage where existing customers must be kept happy, to keep paying for all that early agile fun? If you will, the party is over, and this light on documentation, don’t design it till you need it, and keep racing to the next sprint leaves little documentation, little vision, and poor records of why design decisions were made. This stage of life also has little interest in the initial agile developers, as they are done with that project and are off looking for new exciting teams to start.
I understand, and have lived through waterfall of the problems with long term planning, schedules being missed, and requirements being out of date, but for part that was usable and accepted by the customer, there is information and distributed knowledge of why decisions were made, what steps were taken, and something more supportable in the end.
Basically, what does an agile team need to be doing, what must it do, what must be deliverable, for an agile project to be successful, with success being defined as a sustainable, maintainable, and hopefully revenue generating product?
If the agile software we build cannot be maintained, in a couple years agile will just be another broken promise, which business managers will not pay for, allowing them to go back to the old, micro-manageable waterfall process.