When a client wants to develop a software product, be it an enterprise-level system or a mobile app, he wishes for the tasks to be completed as fast and accurately as possible as time and budget are the primary points of concern. And what exactly impacts the quality of work? The answer is the development team.
The structure of a development team is one of the first things to think about when planning a software project development. Should you opt for a big team that might be hard to manage or choose a small team that may lack some critical skills? And is there the best possible number of people in a software development team?
SoftTeco has worked with both big and small projects and in this article, we share our thoughts on the process of assembling a perfect development team for your next project.
Outline the project goals and use them as a starting point
When planning a software project, the first thing that you need to consider is the definition of your business goals. Not only do these goals set the direction for the whole development process but they also give you an idea of who you need on the team in terms of experience and skills.
For example, if it is a big project from scratch, you will need not only the developers but also QA engineers, a designer, a project manager and other specialists if needed. If the project is relatively small or you just need to implement certain changes to an existing one, you will only need a specific set of skills and can assemble a small team that would consist of domain experts.
The definition of business goals helps not only to assemble the team but also outline the deadlines and get an idea of the needed resources such as the needed management tools. This, in turn, has an impact on budget planning and resource allocation.
Choose the right size and type of your team
As Amazon’s CEO Jeff Bezos once said, “if you can’t feed a team with two pizzas, the team is too big”. So a “two pizzas” rule became an informal standard of evaluating a sufficient team size.
The more people there are on a team, the harder it becomes to manage them, assign roles and responsibilities and keep the communication going in a seamless and transparent manner. On one hand, a big team means a diverse variety of skills and this is absolutely true. On the other hand, it is recommended to have either a single team of 5-8 people or assemble a big team and break it down into smaller sub-teams. Here are the pros and cons of each option.
A “generalist” team: one team for all tasks
A “generalist” team is a relatively small team (up to 8-10 people) that consists of different specialists and can manage only one project at a time. Due to a small number of people in a team, the “generalist” team is suitable for small or middle-size projects that do not require a big number of different specialists.
The pros of a “generalist” team are:
- Clear structure,
- Easy communication,
- Transparency of processes,
- Everyone is on the same page,
- Easy management.
However, there are also certain cons to keep in mind:
- A limited set of skills,
- Possible issues with assigning requirements,
- Not enough for complex projects.
Due to the team size, everyone on a “generalist” team understands what is currently going on in the project and who is responsible for what tasks. However, in such small teams, it is easy for the responsibilities to become somewhat blurry and unclear.
A “specialist” team: a one-dimensional squad
A “specialist” team consists of certain specialists (i.e. only front-end developers) that aim to solve specific task types. You can either break down a large team into smaller squads or assemble several “specialist” teams from the start.
“Specialist” teams are great when you have a complex project that requires a variety of different skills. In this case, every sub-team works on a specific task and does not get distracted by other things.
Here are the advantages of a “specialist” team:
- Strict focus on a specific area,
- High level of expertise,
- Availability of all the needed skills,
- Exchange of knowledge and experience between team members.
As we mentioned above, the team’s size impacts the complexity of its management. Hence, “specialist” teams have the following cons:
- Possible issues with communication due to a number of sub-teams,
- More complex management,
- Complex team structure.
A “specialist” team cannot solve the business goal of a project but rather aims to work on a specific project area. Despite the potential communication issues, such teams are a perfect solution for certain projects.
Team composition: the must-have roles
Once you decide on suitable team size, the next step is to determine what kind of specialists you need for a project.
On average, a software development team usually consists of the following specialists:
- Project Manager
- Team Lead
- Business Analyst
- Front-end developers
- Back-end developers
- QA engineer
- UX/UI designer (if needed)
Of course, the number of people on the team can vary depending on the project scope and its complexity. As well, a common practice is to divide the development team into a front-end sub-team and back-end sub-team if the project involves a great number of software engineers.
While developers are the backbone of a team and are responsible for the realization of a client’s idea, a manager is a person who guarantees efficient work and adherence to the deadlines and budget. And here is where the opinions start to vary.
The biggest dilemma is probably whether you need a scrum master or a project manager on a team. We have already covered the topic in the past so we will just give you the main takeaways.
A scrum master is a person who makes sure the scrum practices are followed and understood by all team members. The main goal of a scrum master is to facilitate the work process, explain scrum to the team members and help them if needed. As well, a scrum master can manage the project requirements and backlog together with the product owner. So while a scrum master manages the team in a certain way, he is not responsible for the whole project in terms of budget or communication with the shareholders.
A project manager, on the other hand, is a more encompassing role. This person oversees the flow of the project, assigns the specialists to the tasks, manages the budget and deadlines, and negotiates with both shareholders and the team members.
So if we compare the two roles, we can say that a scrum master is a more narrow-focused role while a project manager has a wider and more general scope of responsibilities. Another important difference is that a scrum master role is applicable only to projects in scrum while a PM is relevant to any methodology. But the main idea is that every project needs a manager who will organize the workflow and ensure everyone is on the same page.
The importance of Business Analyst role
Any client wishes for a project to be completed in a timely manner and in full compliance with business goals and requirements. To ensure that, a project requires a Business Analyst who will take care of transforming the client’s ideas into clearly defined requirements.
A Business Analyst is responsible for understanding and defining the project goals and then transferring them to the team. In order to do that, the BA would conduct the analysis of a company and the desired product, analyze the competition and evaluate the market and the users’ demand for similar products. In this way, BA will help the client tailor the product to the needs of the target audience.
Clearly defined tasks, in turn, help the client to better define the needed team structure, establish the project deadlines and allocate the budget.
Side note: watch the organizational climate
One more thing that needs to be considered is the organizational climate - in simple terms, how well the employees get along. When assembling a team, make sure that there are no conflicts between the team members. Otherwise, that would lead to poor work quality, missed deadlines and numerous issues.
As well, constantly evaluate the team’s performance, conduct regular meetings and discuss the next steps and the ideas of team members on work optimization and improvement. Regular meetings with the team help to avoid potential issues with communication, contribute to resolving conflicts, and ensure everyone understands their tasks and remains on the same track.
When approaching a software development company, try to outline the project goals and estimated requirements so that you and the manager can immediately start planning the necessary team size and composition. As well, remember that there is always more than one option in terms of choosing a development team for your project - for example, you can go with a “specialist” team and additionally hire a freelancer or assemble a full outsourced development team instead. In the end, the team composition will depend on the defined goals and your budget.