Originally delivered at Agile Manchester 2017 (http://agilemanchester.net/2017/sessions/index.php?session=39).
As part of my job as an agile consultant, I spend a lot of time introducing and reinforcing software development techniques to experienced developers from a wide variety of backgrounds. This means extolling the virtues of TDD and pair programming to people who have never even heard of it, as well as contractors who have worked on several projects that flew the 'agile' banner but left them with the impression that techniques such as TDD are cumbersome and pointless - and people with many levels of experience between the two.
The techniques being introduced or reinforced are many and varied: kanban boards, daily stand-ups, retrospectives, kick-offs, desk checks, continuous integration and deployment, TDD, pairing, and so on.
Many of us have learnt these techniques gradually, both on the job and off. As with any skill, it's easy to forget what it felt like when you were a beginner. It's also easy to get stuck in routines and forget why you decided to use a method in the first place. It's just as easy to find yourself applying something simply because that's what you've been told to do, with no clear evidence that it works.
This session is a description of the challenges involved in helping a team of experienced devs to become a self-organising agile team, with a bunch of new skills and the will to keep things going on their own. It will include several practical suggestions of how to help and convince less agile-experienced colleagues, as well as a discussion of limitations and how to avoid and mitigate the pitfall of exaggerated expectation.