Effectiveness of Teams
For example in â59 secondsâ Richard Wiseman questions the effectiveness of brainstorming â groups tend to focus on mundane, easily agreed upon suggestions; or be swayed by uncreative, charismatic team members.
How do we reconcile this conflict? If groups tend to lack creativity and flexibility in their thinking, why do agile teams appear to be more creative, more flexible and above all more effective? Is it an illusion, or does agile actually help teams achieve more?
Just one developer?
The trouble with software is its rarely a lone sport anymore. There arenât many fields where one developer on his own can make a significant contribution. But where one developercan make meaningful progress you will get the best bang for buck. As soon as you add a second team member you needmuch more communication (ok, I might sit and talk to myself sometimes, but I talk much more when thereâs another human being there). By the time youâre adding a third, fourth or fifth developer, youâre spending loads of time justtalkinganddrawing on whiteboards andstanding around havingmeetings.
If Iâm the only person to have touched the code, when it crashes â I know exactly whose fault it is. As soon as there are more developers, we get to play blamestorming. âWell it works fine on my PCâ, âIt worked last time I ran itâ, âYou checked in last â itmust be your bugâ. You start to get the diffusion of responsibility that Wiseman talks about. People donât feelpersonally responsible for the output, so they donât feel compelled to make it better: half assed is good enough, itâs not my problem.
The truth is most activities of any size nowadays require a team of people to work on, which immediately raises the question ofwho works on what, when.
Fluidity
Maybe agile helps teams be more effective by letting the team be more fluid. Rather than the smartest people getting stuck on one problem or in one area, the fluidity and constant reassessment of agile allows the smart people to automatically refocus to where they need to be. But critically, itdoesnâtneed someone to micromanage the situation and tell them to work on the most important things â people will âself-organiseâ and naturally gravitate to where they can help most.
At the daily standup Harry says:
Jim â are you doing ok with the checkout flow? Youâve never done anything like that before so would it help if I came and paired with you today? The order history page can wait until next week so we can hit our target for Friday.
Magic: a âself-organising teamâ. Imagine some asshat manager had said that! Jim would feel like an idiot, Harry gets to feel awkward so tries not to ride roughshod over Jimâs work â both get dragged down and demotivated; the end result is slow, sloppy work and a miserable team. Instead, because the team came up with the idea, everyoneâs happy about it and the work gets done as quickly as possible.
Because different people are always offering help â either because theyâre nosy and want to know how something works, or because theyâre some smartass know-it-all thatâs good at everything â the fact that the smartest people are quickly rotating round the groupâs biggest problems isnât always plain to see. Everyone is moving around; but most of the movement is noise: the important thing is that the brightest, most capable people are moving to where they are needed most.
Maybe the fluidity simply creates a socially acceptable way for the smart people on the team to leap from problem to problem without the rest of the team feeling stupid.
Whoâs the rockstar?
I hate the term, but if agile teams are more effective because the ârockstarâ developers are working on all the important stuff â that suggests everyone else is working on the unimportant stuff. Now, if your company has time to pay idiots to work on stuff that nobody wants â maybe I can offer you some overpriced consultancy?
But that doesnât happen, does it? Perhaps because the ârockstarâ on the team, is probably only good at playing guitar (stretching the tortured analogy). Iâve heard him play a drum solo: itâs shit. But the drummer? Yeah, heâs not too bad at that. Everyone on a team has different strengths, and will do best at certain tasks. As a manager, itâs almost impossible to try and assign people to tasks to get the best out of everyone and deliver the most value possible. Youâre basically trying to allocate resources centrally, which turns out to be pretty hard.
Instead by delegating resource allocation to the team, the teamdecide who would be best on each activity; the team take responsibility for delivering as much value as quickly as possible. Even if that sometimes means people are working on tasks theyâre not suited for â those who are better at it might be working on something more valuable. Sometimes you need a drummer, even if theyâre not the best drummer in the band.
Costs
Regular task switching and lots of pairing is great for creating an environment where developers can move from task to task easily. But this comes with a cost â I canât immediately pick up where James left off, I need to talk to him to find out what he was doing and where he got to, I need to learn and understand the code he wrote yesterday before I can write more. This has a cost to it.
What about the diffusion of responsibility? If six different people all work on the same feature, wonât we find that nobody really cares whether it works, because everyone blames the other guys? Well, assuming weâre all professional developers, Iâm sure we wouldnât sink to such childish behaviour. But itâs surprising how easy you can become detached from the goal youâre aiming for â the overall benefit youâre trying to deliver for the customer. You know whatâs left to do, so you do your little bit. You donât think about the overall goal and what the customer actually wanted. You take your eye off of quality for a split second and bang! You screwed up.
I suspect diffusion of responsibility is a genuine problem in agile teams â which is why shared ownership is emphasised. We all own this code â so treat it as your own. In another light, itâs the craftsmanship ethic â to leave the code a little better than you found it. Donât just assume the other guy knew what he was doing: fix it, properly. Without this, the diffusion of responsibility would lead to chaos.
To tolerate all these costs: task switching, diffused responsibility, communication and coordination overhead â there simply must be a massive benefit. The upside of having the right people on the right task at the right time must outweigh all those downsides.
But does it always? Does it on your team?
Reference: Effectiveness of Teams from our NCG partner David Green at the Actively Lazy blog.


