Setting up an effective development team is not easy. Based on our experience, we have decided to share the steps that you can take to make your software development team as productive and motivated as possible.
1. Find the optimal team size
A large team does not automatically mean a successful team. Of course, more people can do more work, but they are also more difficult to manage. The more people in the team, the more complicated the communication system becomes.
Jeff Bezos, CEO of Amazon, once said that “If you can’t feed a team with two pizzas, it’s too large”. Over the years, this concept got the name “2 pizza rule” and became the definition of a successful individual team. If we translate 2 pizzas to numbers, the largest your team should get is 8 to 10 people, with the golden mean being at 4 to 7.
Of course, a large business requires a lot of people to run. At the same time, the most effective solution will be to structure it in small independent teams of 4 to 7 people and appoint a team lead to each. Ten developers will work more effectively in two teams of five than in one large team.
Therefore, in order to ensure productivity and effective communication in a team, keep its size to 4 to 7 people. In a larger team, it becomes increasingly difficult to establish proper communication.
2. Define the skill set in your team
This is one of the biggest challenges, as it has a great effect on the hiring process. Depending on the specifics of your project, you can make a team of specialists, a team of generalists, or a mixed team.
- Generalists are professionals with a wide range of skills having solid expertise in multiple areas. Such developers are experts of many different tools and techniques and can be assigned multiple tasks in a project.
- In software development, generalists are usually represented by full-stack developers who can work with both frontend and backend components of an application.
- We recommend that you consider hiring generalists for small-size projects and projects that are expected to have lots of changes during their development. Full-stack developers will be quicker to adapt the flows to changed requirements.
- Specialists are strong in a particular set of skills and are experts in a particular technology and related tools. Their knowledge of their field of expertise is usually deeper than that of generalists. At the same time, their area of expertise is somewhat narrower.
- In the context of software development, you can find specialists in UI design, manual testing, backend development. If you are planning a medium- or large-size project, it is better to set up a team of specialists to cover all tasks from design to development and testing.
- Mixed teams consist of both generalists and specialists. With a mixed team, you will be able to develop a project of any size and be prepared for any changes that arise en route. To build an efficient team, aim at about 75% of specialists and 25% of generalists.
It is always a good idea to look for so-called T-shaped professionals. They possess both the knowledge of their main field (the vertical bar of the T) and the ability to cooperate with colleagues in other fields and use their knowledge in those fields (the horizontal bar).
For example, you may find a frontend developer who also has some knowledge of UI design or a designer with a basic experience of HTML or CSS.
T-shaped developers are a great addition to your team, as, while not being pure generalists, they can still apply their skills in other areas, when needed.
3. Assign roles and responsibilities
Start your team organization by determining the roles and describing their responsibilities. A development team consists not only of developers. If you are building your development according to the Scrum model, you will also need a Product Owner and a Scrum Master.
The Product Owner is responsible for communicating the product vision to the team and making sure that it is developed according to that vision.
The Scrum Master ensures that the team works in accordance with the Scrum principles. Define the roles and describe their responsibilities before you start hiring.
Also, distribute the roles within the development team. Usually, it includes a Software Architect responsible for high-level design, a DevOps Engineer taking care of networking and product deployment, a Team Lead managing the development, a Tech Lead overseeing the development planning and execution.
Depending on your situation, the role structure may be different, but it should be effective in any case.
Atlassian suggests a team-building exercise helping to understand the roles and responsibilities within the team. It is based on asking each member to define his or her role and tasks as well as the role and tasks of another team member. By comparing the notes, you can identify the “pain points” and other areas needing attention.
4. Decide on the management style – strict or delegated
When a new team has just been built, you, as the boss, should take control and manage the process. Since you are the one who organized the business and it is your idea that is to be implemented, take over the management functions at the beginning.
When the ball starts rolling, everybody gets to know each other and their roles, the tasks are planned and scheduled, it is time to switch gradually to delegating control to the team members and allowing them to organize their processes as they see fit.
Stages of a development team working cycle
Most software development teams work according to the “forming-storming-norming-performing” model, which dates back to 1965, but it still effective. By this model, each team goes through the following stages of its evolution:
- Forming. At the forming stage, the team members meet for the first time. They are just building their relationships and may be somewhat reserved and uncertain in their communication.
- At the forming stage, conflicts are very unlikely, as people tend to be polite to each other.
- In addition, at the forming stage the team defines its goal and purpose, the roles and responsibilities are assigned, the main project milestones are determined.
- The role of the team lead is extremely important at the forming stage, as they become the center of gravity around which the team builds itself.
- Storming. At this stage, the team members fall into their natural working habits and become more comfortable and relaxed in their working environment. This often leads to disagreements and even conflicts caused by differences in opinions and views.
- The members’ personalities become more pronounced which sometimes results in negative attitudes, authority challenges, arguments and competition among the team members.
- The team lead should be able to recognize possible conflicts and try to resolve them before they become threats to team success.
- By taking a wise approach of not avoiding the conflict but, rather, analyzing it and finding the optimal solution, the lead helps the team sail through the turbulence of the storming stage and grow into a healthy group of dedicated and motivated professionals.
- Norming. After all the forming conflicts are successfully resolved, the team achieves the understanding and mutual support that is necessary for successful performance.
- At the norming stage, the members see and acknowledge each other’s skills, talents, and expertise, begin to trust each other and form friendly, productive relationships.
- The communications become more effective with constructive criticism expressed and accepted with a positive attitude. The team starts establishing its own rules and forming its spirit.
- For the team lead, the norming stage is the time to switch from strict management to delegating authority and allow the team to self-organize.
- Performing. If the team has reached the performing stage, the chances of achieving their major goal are almost a hundred percent.
- The team members become confident, independent, and motivated to work towards their goal. The team has a common vision of their purpose and a clear understanding of what they are doing.
- Each team member realizes his or her tasks and their contribution to the common work. The members tend to avoid conflicts or resolve them at the beginning.
- As more authority is delegated to the team, the members work out their decision-making procedures and share responsibility. The role of the team lead reduces to coaching and providing aid and advice when needed.
Sometimes, the team cycle includes the fifth stage, adjourning, when the team has successfully achieved its goals and is disbanded.
If the team was formed for a limited time or for a single project, upon its completion, the team members continue with their careers independently. Usually, they part with a feeling of appreciation and gratitude to each other and a generally positive attitude to working together.
Most teams experience difficulties at the starting stages. Wise leadership and careful guidance may help to reduce stress and build productive relationships within the team.
5. Try to be a wise leader
Being a leader is both an art and a lot of hard work, as a leader needs to combine a whole set of skills necessary to set up and manage a productive team. The leader should be great in communications, capable of setting clear requirements and defining goals, wise and resourceful in resolving eventual conflicts.
In a software development team, the leader should make sure that everybody understands both their common goals and their individual tasks.
How to resolve conflicts in a team?
The resolution of any conflict should start with a clear definition of the problem. The key is letting each side state their point. In some cases, you may be able to reach a compromise by finding a common ground between the two sides.
However, rather than working towards a compromise and expecting both sides to sacrifice something, try to aim at a win-win resolution and get to the core of the problem. Once you find it, it will be easier to resolve it.
A good problem-resolving technique is the “5 Whys” method. It allows quickly getting to the root of the conflict and finding the acceptable solution.
How does the “5 Whys” method work?
Start with a clear statement of the problem and then ask the first “Why?” Give an answer explaining the reason, and then ask the second “Why?” Continue until you identify the source of the issue.
- The feature that was included in the scope could not be presented during the demo. – Why?
- It was not presented because it conflicted with the other features. – Why?
- It conflicted because we did not run the integration tests. – Why?
- We did not run the integration tests because the testers were too busy with other tasks. – Why?
- The testers were busy with other tasks because they had to test the functionality that was changed according to the customer’s requirements.
With this method, you will find both the reason for the problem and the way to resolve it and also avoid the conflicts within the team.
If you would like to know more about setting up a productive team and creating a healthy working environment, contact us for a detailed consultation. We will be happy to share our experience and knowledge. If you need a development team for your project, let’s discuss it in detail – we will be glad to work with you!