This is the lighting talk I gave at Agile Mumbai 2010 inspired by my earlier thoughts on individual practices in team setting:
Over the years, as programmers we pick up many programming habits: stuff we're comfortable applying at an individual level because it works for us. But put in an Agile setting with pair rotation, collective ownership, etc, some of these habits break down or need more careful application.
Habit 1: "Create domain classes or value objects. Prefer small classes with single responsibilities." So, when working on a feature we are likely to come up with many classes.
In Agile: Problem is every pair might end up doing that. In one project, we had "Anchor", "Link", "URL" and "ServiceLink": all doing the same thing.
Habit 2: "Use inner classes or anonymous classes until you see reuse"
In Agile: Problem is you may not be the one who encounters the reuse, and other pairs won't know about the inner class you created. They'll likely create another class for the same thing.
Habit 3: "Make a task list of things to do to implement a feature"
In Agile: Problem is you may rotate out of the story midway and another pair comes in your place but your task list remains on your Notepad file.
There are more such habits, sometimes useful ones... and there are ways to deal with them while retaining their benefits. Things like
If you've faced similar challenges and want to talk to me, please catch me!