Working in groups is an important part of modern software development. The free flow of ideas can lead to better solutions and the quality of the result can be better than working alone. But group work is not always the answer. It has it’s dark side that when abused can steal productivity and quality.
Groups are dangerous
As a developer my tendency is to be intensely individual. I have my own opinions and tend to turn off if a meeting looks like a group-think session. That said I still value working with others in groups because it is the easiest way I know to learn from others and to shine a bright light on the big gaps in my knowledge or thought process. However, there are some common anti-patterns that you should be aware of the next time you jump into a group to get something done or you make your developers take a group approach to the next problem.
Design by committee
If you work in a bureaucratic business you have no doubt experienced the design by committee anti-pattern.
- the room is full of people who don’t know how to solve the problem but they continue to offer “solutions”
- the meeting was billed as a brainstorming session
- no one can clearly articulate the problem to be solved
- unclear purpose and group members are disorganized
- no clear owner and actions
- don’t meet just to meet
- have a clear agenda and problem statement. if you can’t define it you can’t solve it
- get the right people in the meeting. if it’s a technical problem bring in the technical developers. if it’s a business problem bring in the technical developers 😉
- make sure someone owns the outcome and make them responsible for seeing it through
Some achieve, others leave
People are unique individuals. Their skill levels vary widely and so does their level of engagement. Some people are intrinsically driven to accomplish the task and are looking forward to the work. Others are disengaged and just want to get through the day so they can go home.
Measuring skills and engagement can be difficult. Some people have really diverse skills and if you try to paint everyone with the same brush then you shouldn’t be surprised with the bland results and disengaged attitude.
- it’s not my problem attitude
- treating people as interchangeable widgets. (the phrase human resources being a disgusting example)
- not asking someone what they would like to work on
- not knowing how to engage each team member
- find out what excites the each team member and try to incorporate it
- allow for autonomy and ownership so people engage themselves
- there is not such thing as “it’s not my problem”. the whole thing is a collaboration where everyone has skin in the game. if someone in the meeting has no skin in the game politely recommend that they don’t need to attend
Bumpy playing field
Since skills vary the group might fail in one of two main ways. The group could split and the top tier could start to outpace the lower tier. This causes disengagement in the lower tier since the feel less valuable and the top tier feels they are unjustly carrying the team. The other failure is that the top team is held back from utilizing their full potential since they are constantly helping the lower tier to keep up with the pace. This causes a feeling of inferiority in the lower tier as they continue to need to ask for help. The top tied feels that they are being underutilized and might lose interest and drive.
- talk of elitism and favoritism among group members
- mention of unfair responsibilities
- constant tension and bickering
- in all honesty i haven’t quite figured this one out yet. suggestions welcome
Simple problems complicated answers
Unfortunately life doesn’t get easier. The same group dynamics that you battled in school rear their ugly heads in the workplace. There is probably a maturity level where some of these problems are mitigated but there is most likely a whole new class of problems. Group-work can be frustrating but it can also be intensely rewarding. There is a fine balance between isolation and group discussion that every developer should strive to find. I find that isolation can lead to amazing discoveries and thoughts but only when I meet to discuss do ideas take on a physical shape. Always keep an open mind but don’t let an unproductive meeting go too far without trying to turn it into a productive session.