There are a few questions I get asked in convoluted form. This is one of them. In this safe haven I’ll try to explain what an agile software team is in the most straightforward way I can. Aiming this at customers, clients and interested parties not industry experts is the purpose.
Despite the rhetoric and industry hype, truly agile software teams are rare. A team with a task board and a daily stand-up isn’t necessarily agile (or Lean, or doing Scrum, or whatever). Being agile is emergent. By behaving in particular ways and doing particular things agility comes to a team. The business benefit will also emerge. If everyone in the business thinks and acts in lean and agile ways it will emerge more. Agile teams respond to the business very quickly. They organise themselves to do so. That’s why they are so effective.
A twitchers guide to spotting an agile software team would say something like:
- They do lots of work but they do it in small chunks.
- Each chunk is surprisingly small. Planning small chunks is tricky; but more predictable.
- A chunk is bomb proof when it’s done. It’s ready to go.
- They don’t start new stuff until the current work is complete. Working features return value.
- They have a process for getting better. They agree what to try next – regularly.
- They do get better. Better means more predictable and more productive.
- They work at working together. The team respect each other and everyone respects the team.
- They help each other out. Job roles can blur. Getting work finished and released is paramount. They keep work flowing.
- They strive to reduce overheads. They will talk instead of creating documents. They will automate repetitive tasks. They like sitting near people who can answer their questions.
- They work to a fixed quality. The quality level is appropriate to the business; but they like it fixed.
- Above all else, they strive to deliver value to the business regularly.
- They like doing valuable work and being judged by commercial results.
Good agile team members have traits that compliment traditional software development skills. You might spot them:
- Appreciating how low overheads, minimising work in progress plus great teamwork are critical to success.
- Being knowledgeable of current practice (Scrum, Kanban, Lean, XP, TDD, pair programming, user stories, team building etc.)
- Showing a desire for personal growth. Trying new ideas is important.
- Happy being subordinate to the team. Team success IS personal success.
- Possessing a “T-shaped” skill profile. Testers who can code. Analysts who can test. Coders who can engage users.
- Being a leader who leads not leans on their team. Agile isn’t just at the team level.
- Regarding collaboration as a skill to practice and nurture.
- Showing ability and willingness to trust and respect others mutually.
When a software team looks at reducing their overheads they start to question established practice. Without a safe working environment the courage to question and make changes will be absent. Safety comes from trust and respect. Trust and respect emerge from a willingness to take responsibility and support colleagues. Supporting colleagues, working lean and exploring new ideas requires T-shaped people with knowledge and experience of current agile practice. Everything depends on courageous, knowledgeable leadership. With the right leadership the rewards are rich.