Build a Strong Development Team From the Start
The software development team is at the core of any technology company. Not only does it create valuable intellectual properties, but it also helps the business remain competitive and relevant in an ever-changing economic environment. Building a high-performance team involves recruiting the right talent, creating the proper team structure, establishing the optimal process and, ultimately, retaining the team.
Invest In The Hiring Process
Building a highly efficient, productive team starts with hiring. This process should never be rushed or overlooked because a wrong hire could be detrimental to a team’s success. According to a McKinsey survey, a company’s top performer is up to eight times more productive than an average employee. Therefore, it is crucial to always seek top talent and approach each interview with caution while staying alert for any signs of danger or unprofessionalism.
Ideal candidates should possess strong vertical expertise in a specialized area and broad knowledge of other pertinent skills. Although “unicorns” who excel in front-end and back-end development are rare, managers should look for candidates with T-shaped skills. This term, which was originally used by McKinsey to recruit management consultants, refers to someone who possesses a deep understanding of one domain and retains familiarity with other relevant areas. Developing a team with T-shaped members not only enhances interdisciplinary communication that spurs creativity, but also allows development resources to be more easily redirected when the business’s priorities change.
When interviewing potential candidates, interviewers should evaluate more than their skill sets and experience. In addition to their competencies, ideal employees should have a keen interest in the job. Motivation not only drives an individual’s performance, but also has a ripple effect on the team or even the organization.
Cultural fit is also an important consideration. A good hire must be able to work harmoniously with the rest of the team. In today’s world, large software systems are constructed by teams rather than individuals. Hiring a software developer who has expertise and knowledge but lacks interpersonal skills is futile. Arguments and big egos will only derail projects and produce an undesirable work environment.
Create The Right Team Structure
Regarding optimal team size, Jeff Bezos offers an excellent productivity tip with his "two-pizza rule." If a team cannot be fed with two pizzas, it is too large. Ideal teams should contain between five and seven members. Larger teams can stifle creativity and make meetings less productive. Smaller teams allow for more engagement, a stronger support network and more innovation.
Most of all, smaller teams facilitate more effective communication between members. With fewer people to keep track of, each team member stays more informed of each person’s duties and how their work fits in with the team. This concept, which is known as “link management,” was created by Harvard psychology professor J. Richard Hackman. According to Hackman, as a team gets larger, the number of links that must be managed increases at an alarming rate.
The team should also contain the right number of senior, midlevel and junior developers. Although there is no industry standard, a lean, efficient team typically includes more midlevel and junior developers than senior developers. The right team balance will reduce payroll costs, encourage internal career growth, create more mentorship opportunities and lessen staff turnover. Not only can junior developers be recruited more quickly but their lack of experience can also be an asset. Junior developers are often malleable and can adapt to a company’s methodology more easily.
Establish Standards And Practices
Before a new project begins, team members should agree on standards and team norms. Many developers have their styles in terms of habits and organization, and it is best to establish work agreements early on before incoherent development practices form. Team norms help streamline communication and encourage a sense of ownership within a team.
In addition to rules and standards, a team must decide on its methodology. Many agile and extreme programming practices, if implemented correctly, can considerably improve a team’s efficiency and software quality. For instance, I once coached a team that instituted pair programming to reduce its code review cycle. Not only did this improve the code quality by catching design errors early, but it also promoted bonding and knowledge sharing between the pairs. Having a good engineering practice enables teams to collaborate, acquire diverse perspectives and create a more reliable product with fewer defects.
Whichever practices or standards a team chooses, they should be thoroughly documented, and team members should be held accountable for follow-through.
Develop And Maintain Engagement
Gathering a team of developers can be difficult, but retaining that team can be even more challenging. Staff retention begins with employee engagement. Daniel Pink offers an excellent formula to improve workplace motivation by focusing on building autonomy, mastery and purpose.
Leaders can provide autonomy by enabling team members to control their work and allowing them to decide when and how they execute those tasks. Trusted, empowered teams solve problems more effectively with more creative solutions. In addition, leaders should support a team’s professional learning. Continual skill mastery and growth engage team members and provide them the necessary skills to advance new projects and initiatives.
Finally, it is important to clearly articulate a company’s objectives and how they relate to an individual’s personal goals. When employees see they are connected to something larger than themselves, they find purpose in their work and unlock the highest level of self-motivation. Combined, the elements of this trio motivate, engage and stimulate team members to produce their best work.
Building a development team is like assembling a sports team: Every member must know their role, position on the team and overall goal. Each person on the team should fit together with the others like a puzzle piece. Investing in the hiring process, establishing standards and best practices, and motivating team members as they grow will help create a team that is strong from the beginning.