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.



