Many managers tend to assemble software development teams with the goal of keeping the team together — release after release, project after project. The logic is that the team’s performance will improve as the team members get to know and understand each other. But is this the best approach to managing teams?
It’s true that teams need time to form, storm, norm and perform. Once the members get passed the startup rituals, they usually open up, communicate better, and settle into patterns of behavior. Those patterns help in setting expectations among the team members. Each person knows what she needs to do and what to expect from everyone else. Predictability is good, but it comes at a price.
We’re all creatures of habit. We settle into patterns of behavior. No problem there. We also settle into patterns of thought and analysis. In doing so, we restrict our ability to reach broadly and dig deeply. The solution sets we derive will be predictable and functional, but they may not be optimal. If you want to be great, if you want your team to be great, if you want your software to be great, patterns will hold you back. We need to recognize our patterns and find ways to break out of them.
Mix It Up
That’s where mixing things up can help. Introducing new members to a team breeds new ideas and encourages innovation. New people bring new experiences, new perspectives, and new energies. The newbies are not bound by established norms and historical decisions. They are free to question everything and accept nothing. This will broaden everyone’s viewpoints and lead to fresh ideas.
Here are a few ideas for keeping your teams fresh and unpredictable:
- If your company has many software development teams, try moving personnel around from team to team.
- If your company is small, try rotating responsibilities among team members to promote cross-disciplinary skills.
- Hire new people from outside your industry and with varied backgrounds.
- Include non-technical people on the development team as analysts and testers.
- Get everyone out into the field from time to time so they can observe how real business users work.
In addition, encourage everyone to question solution constraints and established norms. Prompt them to ask why and keep asking why until they get satisfactory answers. We tend to become complacent and increasingly tolerant over time. Asking questions helps combat those tendencies.
Is your primary goal building a smooth-running software development team, or is it building great and profitable software?