(Interestingly, I find myself writing more about agile and team stuff now that I’m not on a development team….)
This is in response to a question about how you balance individual empowerment with the collaborative approach on a agile tem…
Agile is all about the team, and being on an agile team requires participants to give up some autonomy towards the team. The team is empowered to do what they need to do to reach their goal. If there are issues around how things should be done or what decision is right, the team needs to come to a decision, and I would encourage management to let the team try to do it. Further, the team needs to “meta rules” around how to make decisions, and they also need to develop those.
This is very different than the “alpha geek” culture that exists in some groups, where a small number of developers are interested in wielding power. There are some individuals who just aren’t willing/able to work collaboratively – I’ve worked with a few, and if you are trying to run an agile team, they are likely better in a different position.
One of the teams I was on basically came to this agreement:
Developers are expected to use their best judgement when deciding what advice to seek when they are doing development. There are no rules around when you should seek advice, but as a rough guideline, extending functionality under existing patterns is something you can safely do on your own, and big refactorings or new components are areas when you should definitely seek advice. In between, think about the implications of any design choices you might make, and act accordingly.
The other approach is to adopt pair programming, which is a bigger cultural change, but generally if you get two people thinking about decisions they usually make the right decision about involving others.