Why Great Teams Build Great Products
Building a productive team begins with understanding the talents and skills of each member. The goal is to have a well balanced team. This balance is achieved through diverse programming skills, varying personalities, and personal strengths. As with any professional sport, different positions are required to build a competitive team. Placing individuals with opposing strengths may seem counterintuitive but the results speak loud and clear. Over time these individuals gain invaluable experience and insight from one another. Placing individuals in the correct roles within a team helps lay the foundation for a successful team, but that still does not guarantee success.
Why is this? The answer does not directly correlate with coding, requirements, timelines, or any other project related subject. All effective software development teams have two things in common. They trust and hold each other accountable. Although this can be the basis for any team, software groups rely heavily on individual contributions. As the saying goes, "Rome wasn't built in day." It also wasn't built by one person. The ability to trust others in a business environment can be challenging, but it is vital. Trust drives team confidence. Team members expect each other to pull their own weight. The distinction between "their weight" and "equal weight" is important. People aren't mass produced each person comes with a unique set of talents and traits. When members display this reliability, a team's trust and comfort level improves.
Part of establishing trust in business includes holding one's self and team members accountable. This must be accomplished in a respectful and tasteful manner with proper tact. Accountability is not about finger pointing or taking the blame. It's about identifying a concern, having open dialog, and providing team support for any resulting decision/action. This checks and balances system cannot be optional for members. When a project or release fails, the team fails; not individuals. This recognition by the team is an important building block. Without trust, accountability, and proper team dynamics a project will struggle to succeed.