The developers worked in teams of six to ten people and looking at the success of the end products, the competition raised the question: What constitutes a 'high performance software development team'?
The level of ability (or potential ability) and experience of members is crucial, and individual's selection will depend on the nature of the project. Fairly obvious, but worth stating.
In general, there are two types of individuals: those who find problems and those who find solutions. Choose members who have a bias for finding solutions - they will bring energy to a team that is normally drained by problem finders. A positive mindset and can-do attitude go a long way.
There's a school of thought that self-organising teams do not need a leader. A team leader will, however, often emerge naturally, especially where there are varying degrees of experience in the team. Whether explicitly identifying an individual as team lead or letting natural selection play its course, leaders who display the characteristics of servant-leaders (those who look to enable the full potential of those in their team, rather than taking an autocratic, command-and-control style) are better suited to leading high-performance teams.
Identify the combination of individuals that will communicate effectively as a group. Colocation is essential for 'high-bandwidth communication' and allows for fast and efficient problem solving. Distributed teams are becoming a viable option with modern tooling, but there is a significant trade-off when communicating across cities or time zones.
Assemble a cross-functional team that has all the skills necessary to get the job done. Waiting for external teams to complete certain tasks kills productivity.
Individuals who understand the big picture and who buy-in to the objectives of what the project is trying to achieve will naturally aim to maximise the value of their contribution.
Success often comes only after a number of failures. If you are looking for innovation from your team, tolerate failure. Create a 'safe' environment in which the team can experiment with ideas, new technologies and approaches. Encourage the team to explore uncharted territory and stretch the boundaries of what is possible.
Show a genuine interest in the successes and failures of the team and be a champion for the project and team across other business units. High-performance teams are proud of their work and recognition for their efforts will directly impact their level of motivation.
A high-performance team is a crucial element in delivering a successful product and once you know what constitutes a winning team, it could be the start of something game-changing.