How to Structure a Development Team
Content:
  • 1. 📐 Software Development Team Structure Approaches
  • 2. 🌊 Agile Software Development vs Traditional Development Teams
  • 3. 📚 Tips on Structuring a Development Team
  • 4. 💡 Takeaways
  • Cover image by Paul Hatch

    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 is one of the most crucial factors for project management
    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!



    📐 Software Development Team Structure Approaches

    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.



    Generalist Structure

    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.

    Software development team can be cross functional, meaning that members have a wide range of skills
    A software development team within the framework of generalist approach has variable team roles

    The generalist approach has the following pros and cons:

    Pros
    1. All team members implement features as a whole, with no need to communicate that often to cover different aspects of the same task. Thus, they have less blockers and can proceed faster
    2. You can have different points of view on the problem which contributes to a more efficient solution
    3. You contribute to a long-term skills improvement, which will make projects’ development much faster in the future
    Cons
    • Development can take more time as your team members will work on some tasks that may be absolutely new to them



    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.



    Specialist Structure

    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.

    Agile software development isn’t actually a structure but rather product development management approach
    A specialist software development team normally limits members’ responsibilities to their team roles, and they do one task throughout the whole cycle (e. g., animations)

    As for the advantages and disadvantages of the specialist approach, here they are:

    Pros
    1. Deep understanding of each part of a project separately, which allows perfecting them
    2. Faster development since most of the elements get completed simultaneously
    3. Clearly distributed responsibilities
    4. With a well-structured reporting flow, less supervision is required since everybody’s highly competent in what they’re doing
    Cons
    • More coordination of the workflow is required since there’s a higher risk of miscommunications due to a possible lack of general understanding of the project
    • Developers aren’t interchangeable, meaning that for team members to work on other tasks, they’ll have to get to know a certain part of the code anew



    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.



    Our Expertise: Specialists Approach

    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.

    Agile software development allows you to build cross-functional teams
    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

    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.

    Hybrid structure allows you to take best out of two worlds and build agile software development teams since it’s easier to combine values
    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:

    Pros
    1. The efficiency is maximized thanks to the higher flexibility of approaches
    2. Brings the best of two worlds and minimizes those drawbacks of the 2 previous approaches
    Cons
    • Coordination is quite challenging since variable approaches require variable supervision techniques
    • Such teams are normally more expensive and time-consuming to build



    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.



    🌊 Agile Software Development vs Traditional Development Teams

    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:

    Software development teams can nurture traditional or agile approaches values (like those of the scrum master approach)
    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:

    Agile Traditional
    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.



    📚 Tips on Structuring a Development Team

    In this section, we’ll give you a couple of tips on how you can arrange and structure your software development teams.



    # 1: Decide On The Size Of The Team 👥

    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:

    • Don’t face (or face noticeably less) organizational and workflow issues.
    • Are quite dynamic: they are easily structured and restructured.
    • Are able to work more independently.
    • Allow setting communication and coordinating the efforts of team members easier.
    Agile development can imply using agile methodology and its branches like scrum master approach
    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.



    # 2: Split Big Teams Into Smaller Ones ✂️

    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.

    As an element of software development, agile methodology can include splitting big software development teams into smaller ones
    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:

    • By specialization. Like teams of designers, front-end developers, back-end developers, etc.
    • By roles. For example, a PM, a designer, and software developers within one team to cover the full cycle.
    • By development stages. Let’s say you know exactly what will be needed at each stage of the development and build teams according to the requirements.

    Yet, more teams will require more coordination and supervision, which you definitely should take into account when taking care of this matter.



    # 3: Decide Who You Need for the Project 👨‍💻

    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:

    • 1 UI/UX Designer (UI and UX can be handled by different specialists if necessary).
    • 1-2 Front-End (or Mobile if you craft an App) Developers.
    • 1-2 Back-End Developers (if needed).
    • 1 QA Expert.
    • 1 Project Manager.

    Surely, team structure can vary depending on your specific use case.

    Software development is quite a tricky process so it’s a good idea to define who you’ll need for the project in your traditional or agile team in advance to minimize the risk of having to hire additional talents
    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.



    # 4: Feel Free To Change Up The Teams 🔀

    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.

    Agile team in software development can imply shuffling team members
    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:

    1. Before starting a new project.
    2. Because of a reduction or an increase of the number of employees.
    3. When a sub-team faces a task they can’t solve. Yet, this situation can be avoided by assigning tasks to competent teams in advance.
    4. When the team shows low performance.
    5. According to the needs of the particular project.

    Also, try to assign people to the projects that match their interests. Strong initiative sometimes is as important as experience.



    # 5: Make the Workspace Friendly 😄

    Last but not least, make sure to keep the atmosphere friendly and relaxed so everybody would feel included and welcome.

    It’s important to create a friendly atmosphere for software development teams
    For the productive software development process, it’s essential to create a friendly atmosphere (image by Patswerk)

    You should make sure that:

    • Everybody has a voice.
    • Team members respect each other.
    • All issues are addressed.
    • Even if you have a hierarchy, it shouldn't be oppressive but more of a coach-student relationship.



    💡 Takeaways

    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:

    • Decide on the size of your team and don’t be afraid to split it into a few smaller ones.
    • Wisely choose specialists that you’ll need for the project.
    • Properly assign roles according to the software development team hierarchy.
    • Feel free to move developers between teams.
    • Take care of your teams’ microclimate.

    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!

    quote
    Contact Us!
    {"value":[4.1,4.8],"count":[2,195],"from":"2021-08-18"}
    Rate this Article:
    (98 ratings, average: 4.45 out of 5)
    Thank you for your vote!
    How [& When] to Make a Custom Coaching Website?
    10 min read

    As an experienced coach, you likely have a simple WordPress- or Shopify-based website to present yourself and your services. However, such a solution may not match your coaching business needs as you decide to launch a new product or deepen the level of interaction with your clients. When using a

    How to Deal With Technical Debt?
    9 min read

    Cover image by Trace Byrd Having technical debt is 100% okay. For example, it’s a natural “legacy” of many companies that rush to bring a satisfactory solution to the market. This allows them to start making revenue and collecting user feedback early, so they have enough resources to address

    How to Enable Serverless Architecture?
    16 min read

    Cover image by Csaba Gyulai Serverless architecture is quite a topic to talk about — it has a lot of benefits, however, they work under specific conditions only. Even though the concept is pretty simple, such ambiguity around its usefulness stops many companies from enabling it. Apart from that, 36% of

    How can we help you?

    If we can't do it, no one else can.

    Name*
    Email*
    Please tell us about your project*

    Thanks!

    We'll come back to you regarding your project within 24 hours. Meanwhile, please check some insights from our blog:

    How [& When] to Make a Custom Coaching Website?
    10 min read

    As an experienced coach, you likely have a simple WordPress- or Shopify-based website to present yourself and your services. However, such a solution may not match your coaching business needs as you decide to launch a new product or deepen the level of interaction with your clients. When using a

    How to Deal With Technical Debt?
    9 min read

    Cover image by Trace Byrd Having technical debt is 100% okay. For example, it’s a natural “legacy” of many companies that rush to bring a satisfactory solution to the market. This allows them to start making revenue and collecting user feedback early, so they have enough resources to address

    How to Enable Serverless Architecture?
    16 min read

    Cover image by Csaba Gyulai Serverless architecture is quite a topic to talk about — it has a lot of benefits, however, they work under specific conditions only. Even though the concept is pretty simple, such ambiguity around its usefulness stops many companies from enabling it. Apart from that, 36% of

    Search

    0 results. Try changing your query.