Architecture should still be at the center of Agile: beware the technical debt
The very purpose of Agile is to be able to adapt software to changing environment (that environment includes business stakeholders fuzzy requirements). This should not be just for short term during the life of the project. It should above all be for the after-life of the project when the application will undergo future project life-cycles. Since programming languages and platforms haven’t made any fundamental progress these last 20 years it’s still a major technical challenge in software engineering. Thinking that by just changing the way to manage a project would automatically allow to adapt to any change would be a wishful thinking.
Most Agile gurus – many of whom seem to be pure methodology consultants and not real practioners of software project management – talk as if each project was a new application whereas most of the time – at least in corporate companies – the project will be the evolution of an existing application maybe crafted the rad way but without any evolutive architecture in mind and any documentation. So if it is the case, the first thing to do is to ask management to either do a major refactoring of the application or integrate these refactoring with the current project. Otherwise the project will suffer more and more difficulties in making it evolve and Agile would appear as a failure.
As a conclusion if Agile is to be introduced for the first time as an experiment in a company, it’s better to get started with a new project not too critical so as not to put useless pressure and rather target the objective of learning. If not possible a good candidate is also an existing application which would need to be ported to a new platform – good opportunity should be widespread nowadays with the advent of transitioning from desktop to the web. Because in both cases it’s rather easy to build a good architecture since there would be no constraint of keeping compatibility with existing artefacts. But in the case of last resort wheras an existing application has to undergo an evolutive maintenance, first refactor the whole architecture (I have MVC in mind) and only afterwards, start a new project lifecycle for this application with the participation of business users using an Agile method.