Copyright ©2008-2020 SoftTeco
Video Conferencing Etiquette for Remote Workers

Video Conferencing Etiquette for Remote Workers

Video conferencing implies following certain rules in order to keep professional and make the conference valuable and comfortable for all the participants.

Data Quality Management: Everything You Need to Know About It

Data Quality Management: Everything You Need to Know About It

Data quality management is a comprehensive process of keeping the data accurate and error-free while using it for the company’s benefit.

Retaining Business Growth During Crisis: Things to Consider

Retaining Business Growth During Crisis: Things to Consider

Actual economic uncertainty is a good time for many companies to enhance their strategy. SoftTeco shares its view on crisis management and the best ways to retain business growth.

The Digital Transformation of Logistics and Supply Chain Management

The Digital Transformation of Logistics and Supply Chain Management

Logistics and supply chain management involve a number of complex processes that can be optimized and automated through integration of new technologies.

Health Information Exchange Best Practices

Health Information Exchange Best Practices

Health Information Exchange is part of the healthcare industry transformation but it imposes several important guidelines to follow.

The Best Examples of Location-Based Services

The Best Examples of Location-Based Services

Location-based services bring great value to the users and the best examples of such services combine rich functionality with intuitive design.

SoftTeco’s Statement on Business Continuity and Employee Safety During the COVID-19 Pandemic

SoftTeco’s Statement on Business Continuity and Employee Safety During the COVID-19 Pandemic

The purpose of this document is to provide a clear and actionable strategy on preventing the COVID-19 impact on the SoftTeco work processes. The document assembles the measures that SoftTeco implements with the aim to minimize the impact of COVID-19 pandemic on the company’s processes and to protect the employees by ensuring a safe and healthy work environment.

Top 5 Predictive Analytics Solutions in Fintech

Top 5 Predictive Analytics Solutions in Fintech

Predictive analytics is a helpful tool for the fintech companies as it helps mitigate risks and make smart data-driven decisions by building accurate forecasts.

Remote Work Best Practices: How Not to Lose Your Productivity

Remote Work Best Practices: How Not to Lose Your Productivity

Remote work is less stressful than in-office but has its own bottlenecks that impact one’s productivity. In order to get the most out of remote work, it is important to follow certain guidelines.

Order Management System: Definition and Key Benefits

Order Management System: Definition and Key Benefits

An order management system is a valuable tool that automates and optimizes the order management processes and provides other helpful features.

Software industry news
Software Development Team Structure: Things To Consider

Software Development Team Structure: Things To Consider

Defining the structure of a perfect development team for your project

When a client wants to develop a software product, 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. 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, allocate tasks 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

  • 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.

Team management

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 and ensure everyone understands their tasks and remains on the same track. 

Final word

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.