📐 Software Development Team Structure Approaches
🌊 Agile Software Development vs Traditional Development Teams
📚 Tips on Structuring a Development Team
A development team’s structure plays a significant role in a project’s success. Surely, other factors like developers’ expertise, experience, and talent are extremely important. Yet, proper management and teams’ structure allow profiting from these factors as well as making the whole development process easier and faster.
Software development team structure impacts project management practices, development team roles, etc. (image by Paul Hatch)
In this article, we’ll cover such issues as approaches to organizing a development team’s workflow, agile and traditional teams differences, and give you some tips on organizing. Additionally, we’ll go over Stormotion’s approach to managing our development workflow.
So, if you’d like to build an in-house team of developers or you’re an IT firm yourself and need some insights from an experienced software development company — welcome. We hope our expertise would be helpful to you!
In fact, there are 3 main approaches to arrange a development team. Let’s call them generalist, specialist, and hybrid. So, in this section, we’ll take a look at their strong and weak sides, and give you some examples of when one of them might be more suitable for you.
This approach implies building a development team of people with a highly diverse set of skills. Great results are reached thanks to the face-to-face communication and the cooperative effort of all members.
For instance, a front-end developer can also have some knowledge of back-end Java. Or a Project Manager can be familiar with UI design and help with this development part.
The generalist approach has the following pros and cons:
Taking that into account, the “one team for all” approach might be more suitable for you if you might feel like it’ll be easier to supervise the team when they’ll all be working together, etc. Plus, it’s more common for companies with up to 10-15 employees to use such an approach.
We at Stormotion use this approach in 80% of cases since our goal is to help our talents become true professionals in as many fields as possible so they can use this extensive knowledge to build even more complex projects every single time. Yet, when there are more than 15 people working on the same project, it might not be convenient.
This arrangement approach means that each team member is an expert in a certain programming language, framework, or technology, and thus, fully responsible for their part of development. You can create teams with their own hierarchy and structure to complete one part of the project. It all depends on the scope of work.
As for the advantages and disadvantages of the specialist approach, here they are:
Such an approach is normally used by companies with over 15-20 employees for projects with rather big scopes of work. Additionally, if you’re working on several projects simultaneously, the specialist approach might be more suitable. It’s also reasonable to use it when your schedule is tight.
To minimize the downsides of this structure, there’s an alternative — assigning tasks via tickets. Each part of the code is connected to a digital ticket that gets distributed between developers randomly. This way, developers get to work with previously unknown parts of the product, which also makes the code itself a better quality since there are multiple points of view. Plus, it contributes to making team members less dependent on each other and them being interchangeable.
The key point in team structuring is finding the perfect approach to each case separately. To provide you with hands-on experience, we’ve decided to share some insights from Stormotion’s workflow with you.
Once we started working on Yangol, a project of Stormotion’s co-Founders that helps companies structure and manage talent onboarding, we were using the specialist approach. We had 3 developers from our team assigned to 3 separate tasks — backend, mobile, and web app development.
Specialist approach is quite hard to connect with agile software development since they nurture different values (image by Stormotion)
Later on, our developer who was responsible for the web app part needed to work on a mobile preview feature for it. Thus, it required him to get to know the mobile codebase. Eventually, he took over all 3 codebases once they were fundamentally written and worked on their improvements. Since then, we switched to the generalist approach on this project.
It’s important to keep in mind that such switches require a lot of energy and time, yet, they’re not always avoidable.
Hybrid project teams imply exactly what the name says. They have both people who focus on a product as a whole and can narrow their focus down when needed.
With the hybrid structure, you can build agile software development teams even with parts of specialist approach since it’s easier to combine values (image by Alex Krugli)
Let’s take a look at the strong and weak sides of this approach:
Basically, any company with enough time and budget can build such a team since it’s multi-purpose. Yet, making such an effort is more reasonable when it comes to complex and challenging projects. So, if you work on a simple product or small adjustments to it, we’d recommend considering something less resource-consuming.
Nowadays, when companies create teams for projects, they can be either agile or follow traditional corporate values. Even though agile is considered modern and more efficient, traditional team structures still exist and some cases actually benefit from them a lot.
Both agile and traditional aren’t methodologies — they’re sets of principles and values that help to determine how to manage teams properly depending on what results one aims for.
Before we talk about the differences, we’d like to mention that there’s a term called Agile Manifesto, which is a summary of agile principles:
Agile project management is considered more innovative and productive, yet, some cases still require traditional development team roles and hierarchy (image by Hygger)
As for two team types differences, we’ve gathered the main aspects in the following table:
Team management and organization is almost free of supervision; the Project Manager (PM) guides and coordinates the team as well as makes the workflow as smooth as possible
Strong hierarchical structure and responsibilities distribution; PM is responsible for the result
Team performance over individual metrics
Individual metrics over team performance
Multi-purpose teams and specialists, skills are valued in the first place
Clear roles and duties distribution
Up to 10 people in one team
Teams aren’t limited in sizes
Traditional teams might be more suitable if you know you need developers to “blindly” perform requests so as not to create chaos or hold back the development. Yet, most modern IT companies and departments prefer agile team structure since it allows workers to bring the value of their best personal traits while still cooperating and being team members.
You surely don’t have to follow all the principles from one of the team types, it’s a great idea to take the best from each one of them.
In this section, we’ll give you a couple of tips on how you can arrange and structure your software development teams.
The size of your software development team plays a significant role since it actually impacts most aspects of the process: development time, costs (on salaries/hiring), amount of resources (finance, time, and energy) needed for management, etc.
Normally, development teams aren’t that big. Even if they are, C-level then divides them into smaller ones. In fact, having small teams can give you a lot of benefits. According to QSM’s research, small teams:
Apart from product development itself, software engineering can include building traditional or agile teams, applying agile methodology, etc. (image by Carolina Contreras)
Yet, it’s really important to understand what a small team is. Firstly, it highly depends on your use case. For example, Jeff Bezos, the CEO of Amazon, said that he likes to follow this concept: if you can’t feed a group of people with 2 pizzas, it’s too big.
Surely, this concept is really situational, but the idea is clear. You might consider limiting your team size to 5-7 members for maximum productivity. In the next subsection, let’s talk about how to divide your team into small groups if you have more employees.
There are multiple cases when products were developed by huge teams. There are software or game development teams with over 1000 employees and it’s still manageable with the right approach — you can divide big teams into small ones and work from there.
Agile methodology in software development includes structuring a team in way that it’s not too big (an agile team normally includes up to 10 members) (image by Kasia Bojanowska)
You can divide developers into small teams in several ways:
Yet, more teams will require more coordination and supervision, which you definitely should take into account when taking care of this matter.
First of all, try to keep your teams balanced. A so-called full-cycle software development team (meaning it has enough specialists to perform end-to-end development) usually includes:
Surely, team structure can vary depending on your specific use case.
You should decide who you’ll need for the software development process in your traditional or agile team (image by Anton Fritsler (kit8))
Secondly, pay attention to roles within the team. They aren’t the same as positions and sometimes have nothing to do with it at all.
For example, you might need someone to be a team lead. This role isn’t only for a project or senior manager. The team lead is responsible for a team’s success in a certain software development aspect — be it front-end development or design. They often act as coaches for the team and can work in any position at the company (developers, designers, etc.).
It’s better to assign the team lead in each subteam. Yet, if your application development team structure isn’t too branched, it’s ok to have only one person in this position.
Once you have several development teams formed, you might also need a chief architect. This is the person who coordinates all your teams, builds consensus around a product’s architecture and design, and oversees the general development process from a technical point.
Another important thing to understand is that you can freely restructure your software teams when you need to. It can either happen occasionally (for example, if you need to review the code in another sub-team) or you can change them permanently. Some even say that it’s better to move people between teams regularly.
Building an agile team can sometimes mean shuffling team members (image by Coach Risk)
Here are some typical situations when it can be useful to shuffle developers and change your software development team structure:
Also, try to assign people to the projects that match their interests. Strong initiative sometimes is as important as experience.
Last but not least, make sure to keep the atmosphere friendly and relaxed so everybody would feel included and welcome.
For the productive software development process, it’s essential to create a friendly atmosphere (image by Patswerk)
You should make sure that:
To sum up, let’s recall what we’ve talked about in this article. First of all, there are 3 main approaches to structuring development teams: generalist, specialist, and hybrid. When it comes to defining principles and values of the workflow, it can be agile or traditional.
As for tips on structuring the development team, let’s briefly summarize them as well:
If you have any questions left or maybe you’d like to know our opinion on your specific use case, we would be happy to help you!
Was it helpful?
How We Handle Quality Assurance (QA) in Stormotion
How Much Does It Cost to Develop IoT Software?
The Stormotion Team: What Makes Us Special?
Our clients say
They understand what it takes to be a great service provider, prioritizing our success over money. I think their approach to addressing ambiguity is their biggest strength. It definitely sets them apart from other remote developers.
Max Scheidlock, Product Manager