A development team is a group of people that work together to create software. This is complex, creative work that requires adaptability as technical challenges arise and business requirements evolve. An agile development team will seek to meet these challenges by applying the principles of cross-functionality and self-organisation.
Rather than organising people into specialist teams such as analysts, coders, and testers; agile development teams have all of the skills to turn requirements into production-ready product. This does reduce pure efficiency and utilisation – there may be times that there is nothing to do but test, so coders and analysts will have to help out. The pay-offs for this compromise include:
- Reduced dependancies and co-ordination required to get a feature into production, increasing predictability.
- Faster feedback cycles: mature teams are able to get from idea to deployed feature in a matter of weeks.
- Increased control and visibility.
- Enhanced risk management for decisions made on requirements and technology.
There is no project manager assigning tasks to an agile development team, nor a defacto “team lead” amongst the developers who keeps everyone busy. Self-organisation is built on the premise that if no single person is in charge, then the whole team needs to stay vigilant and engaged in their shared goals. This is a radical departure from traditional development, where your responsibility as an individual technologist ends at delivering your work package and reporting issues. Now, individuals share whole-team accountability for their actions and decisions. If implemented well, this is likely to mean:
- Higher motivation arising from greater autonomy and trust.
- Increased innovation, resulting in new feature ideas and technical solutions.
- Reduced defects as the whole team takes shared accountability for overall outcomes.
- Efficient problem resolution: teams are able to act without escalating up the chain of command and waiting to be told what to do.
Development team factsheet