If you're developing a software in a particular domain, it's inevitable that you'll over time become an expert in that domain. It's just not possible, for example, to write a complex accounting software without hearing about accounts receivable, balance sheet, or amortisation. But while programmers learn about particular aspects of the business they encounter while programming, they miss many key concepts which are essential for understanding the bigger picture. This lack of holistic view of the domain at hand is not only slowing programmers down, but it's also a frequent source of discord with end users who take understanding of basic concepts of the domain for granted. Therefore one very efficient way for accelerating agile is to seed the developer team with domain knowledge. So instead of starting the project with requirement's analysis, organize a tutorial where experts teach programmers about key concepts of the domain. While this will incur significant expenses that are not not easy to justify, you will reap benefits from more knowleadgable programmers thruoughout the project. Additionally, you can embed programmers with end users as their apprentices for a few days. Doing so not only gives to programmers first hand experience about the challenges and frustrations of an end user, but also enable them to start building personal relationship which is essential for efficient communication.