Scaling up is a natural part of a startup’s lifecycle. Many entrepreneurs start their businesses and achieve the first tangible results with just a few people on board. The need to scale software engineering, sales, marketing, and other teams is driven by the pressure or ambition to serve more clients, build more features or whole products, expand to new markets, and so forth.
Entrepreneurs may believe that hiring more engineers is enough to scale a software development team, but it doesn’t always turn out as they expect. The challenging process exposes the bottlenecks in their value delivery pipelines, exacerbates quality issues, and more.
Table of contents
Premature scaling has even been blamed for the demise of 74% of high-growth internet startups, yet many companies scale up for wrong reasons.
This article outlines the points when it’s reasonable to scale your software development team, the typical challenges, and the prerequisites of a successful team scaling.
Like any other team, scaling a technical team is related to how things are going with your company and driven by demand.
If you own a service company, it’s reasonable to begin scaling the dev team once your marketing efforts start bringing more orders than your software developers, designers, quality assurance, and other specialists can handle simultaneously. The lack of specific expertise is another reason to augment the team.
Product startup owners may be tempted to scale up their team when they observe longer sprints or missed release deadlines. However, a business should scale a software development team only when it has every reason to believe that this investment will return ten times as much.
Other typical signs and reasons include, but are not limited to:
- you have achieved product-market-fit
- rapid growth of the customer base
- growing SaaS startup KPIs
- you decided to build a mobile version of your online application or supplementary apps
- stakeholders set new goals that they want to implement as soon as possible, ahead of the competitors
- poor reviews of a company’s software and services and customers that never come back
Along with valid reasons for boosting the software development team, entrepreneurs need to watch out for certain prerequisites for successful scaling. If they start before they’ve met them, they put the startup at risk of premature scaling.
Ironically, teams fulfilling these prerequisites may find out they can keep it small and don’t need scaling at all, e.g., if they automate everything.
The second paradox is that startups may wish to be scaled up because they fall short of these requirements yet. For example, projects may lag due to poor management, and adding task force to a late project would only delay it further. If a project is already bloated and challenged, it’s wise to try to decrease the mess instead of increasing the team. It may be better to hire a few people to develop tools that will help manage many.
Startups should also be prepared to face several growth challenges.
Calculating the right numbers
Poorly planned hiring misaligned with the company’s strategy will result only in unbalanced workloads, issues with team management and communication, longer bug fixes, and other problems.
There is practically no way to calculate the ideal number of workers and teams for a project in advance. It largely depends on the number of independent subtasks and tasks that have to be done in a particular order, e.g., any work on integration and deployment pipelines, merging software changes in code shared by different teams, synchronization, or waiting for the provisioning of resources.
Luckily, the owner needn’t necessarily calculate everything if they architected their company well. When its departments deal with autonomous tasks and manage separate teams, each department will be able to hire the right number of people to deliver the required number of features.
When the number of teams and team members grows, so does the number of communication channels. Information communicated through one channel may contradict what is communicated through another. Some participants may be simply left out.
In the continuous integration (CI) and continuous delivery (CD) pipelines, the number of CI pipelines for n teams tends to be n+1: one pipeline per team, plus one for integration. Added CI pipelines trigger issues with team coordination and environments provisioning.
Large-scale software development also has longer feedback loops. It becomes harder to iterate and build the right product. Moreover, when the company size increases, communication between tech and customer-facing staff tends to decrease. The developers may have little to no idea about the problems the salespeople and customers are facing.
Managing distributed workforce
Nowadays, startups can augment their teams with experts picked from the global talent pool while significantly cutting payroll and office costs. However, hiring and managing distributed teams is also more challenging. Communication becomes more complicated, and the lack of clear shared goals may result in teams pulling in different directions.
Companies may also expand geographically. Such scaling-up implies managing multiple locations, possibly in different time zones, overcoming language and cultural barriers, and addressing specific local issues.
For example, if the HQ and development centers are eight or even twelve hours apart, there are no overlapping working times at all. If they prefer different tools, processes, methodologies, etc., new routines will take some time. Hampered communication may damage cohesion across the organization and even break the services.
Different cultures and values
The scaling stage is challenging for corporate cultures, the principles of interactions and cooperation within each unique company.
A small business may thrive on a flat structure and employees’ autonomy. Every team member can speak their mind, take the lead, and work towards a common goal without any bureaucracy. However, when teams grow and multiply, the employees’ excessive independence may lead to chaos while it’s getting harder to oversee and guide large groups.
If a growing company omits cultural screening for the sake of hiring faster and cheaper, every poor cultural fit will aggravate the problem.
Team leads or project managers who micromanage are likely to watch an employee’s every move, demand progress reports too often, and criticize anything they would have done differently. This may be beneficial for small-scale projects and teams, especially dealing with excessively complex or customizable orders, and during new employee onboarding.
However, when a team grows or takes on new duties, the executives, PMs, or team leads that are inclined to scrutinize each employee’s work can no longer keep up with all the activities and information. Trying too hard, they risk losing sight of the big picture and burning out.
What does micromanaging say to your employees? That the team doesn’t trust them enough while imposing excessive demands. This can make developers quit when a growing company needs them desperately. Others may entirely rely on the micromanager’s opinions, guidance, and even help, which will also cause trouble in the long run.
Problems posed by the product’s architecture
Sometimes, scaling a software development team fails to yield good results due to ill-conceived application architecture and infrastructure. There is a perception that organizations tend to design systems that copy their own communication structures. A product architecture may turn out incompatible with the scaling team’s structure. Extra teams will only make things worse.
Issues related to codebases
When the code quality is poor, team scaling leads to efficiency drops instead of boosts. New team members may spend weeks digging into other people’s code, and don’t forget the working hours that current employees will spend helping them. Meanwhile, the tasks of both will be snowballing.
A one- or two-team company usually starts with open-source tools to build CI/CD pipelines. This initial practice may not be able to scale up consistently and effectively.
The following chapter will advise how to overcome these challenges and scale a software development company more effectively.
1. Reinforce the company culture.
Your company’s mission and the purpose and direction for its culture should become the guidelines for uniting your current and future teams and pass the scaling stage with confidence.
Pick a set of the organization’s core values and hire only people who support them. These values should stay strong even when you grow to hundreds of employees, while individual values should be recognized by the team and supported with effective management.
Articulate your company vision to give your teams something they can project far in the future. It will keep everybody motivated and focused on the bigger goal even when working on small tasks.
2. Prepare your team expansion.
It’s crucial to understand why you need additional people in the first place. The acceleration of software development will not necessarily be proportionate to their number. If the employees are overwhelmed with tasks that can be automated, new tools may be more efficient than hiring more people to do the same tedious job.
Assess your current team’s weak spots that need attention. They also need to develop soft skills to teach and help new employees when needed.
If you have design, research, analytics, QA, management, and support departments, consult with those who may be affected by an increasing software development team. The designers, QA, and analysts can even point out where exactly the team needs augmentation.
Scaling is most successful when managed by an individual solely focused on this process and knowledgeable in navigating the organization.
Whether you’re about to ramp up a single team or scale up a whole startup, put your development strategy first, plan the steps considering your company’s vision, and only then proceed in baby steps. It’s essential to formulate and put down actionable rules, communicate them to everyone, and stick to these rules, whatever the number of employees.
It may be helpful to create a three-year growth plan. Try to synchronize the efforts of all departments, from marketing to production. Hold biannual meetings for the executives to discuss how the growth plan is being realized and make the necessary adjustments.
For choosing the appropriate team structure and team organization, the following questions will be helpful:
- Will the new team be developing customer-visible features end to end or modifying the system to achieve their goal? If yes, it will be a feature team.
- Will they work on a specific component of some user-visible functionality? If yes, it will be a component team.
- What kind of workplace do you want to create for your new team(s)?
- How will the new team(s) impact the current employees’ communication and teamwork?
Feature teams seem to be more popular, but the choice depends on each system’s architecture: the “shape” of the team has to match the “shape” of the system. Involve senior architects and tech leads in such decision-making early.
Teams of any size and shape require more than desks, computers, software, and environments. You need to plan ways for employees to grow with your organization in the larger financial and strategic perspective and opportunities to develop their professional and institutional knowledge.
3. Hire carefully.
Some business owners take great pains recruiting each of their 50, 100, or even 1,000 employees themselves, but it may be enough to hire just ten (or how many department directors you need). If you take your time and find the right people for these positions, they will eventually hire the remaining 990, organize them, and be accountable for their work.
The same recommendations apply to heads of departments and software developers:
- elaborate on the details of the job descriptions, focusing on things that are missing in your existing personnel;
- be careful with employee referrals;
- give candidates a chance to prove themselves during a trial period; along with their performance, evaluate their soft skills, personal qualities, and even temper.
Sudden and rapid scaling can adversely affect an existing team’s morale. Consider the human factor when making decisions and hire people iteratively.
4. Keep your teams small.
Small teams are key to flexible scaling. It’s recommended to start with a group of 3-6 people and keep to small-and moderate-sized teams organized along specific product, functionality, feature, platform, or service affinities.
Jeff Bezos’ “rule of two pizzas” says that a team may be large enough if you can feed it with two pizzas. If you need more than 2 pizzas, you probably need to split it up. However, teams should not multiply chaotically. It’s pointless to create a separate group if it is not an independent unit.
5. Automate your processes.
Automation is essential to DevOps and CI/CD and crucial when it comes to scaling your team. Automate as much as you can.
Start with automating regression, smoke, and sanity testing. Then move to data-driven tests, stress and load tests. Invest in all kinds of automatic code checks, transaction notifications, and monitoring.
6. Improve communication.
Managing large-scale software development requires well-organized open communication, especially with distributed developers. Review your existing communication channels and develop a strategy suitable for both in-house and remote workers, if any.
You will likely shift from face-to-face meetings to video conferencing and replace your office whiteboards with project management and collaboration software.
If you outsource any tasks, ensure the contractor provides the developers with the necessary software and gadgets. Often, the optimal approach to paying for services is a monthly fee per user per device.
Conduct regular meetings of the in-house and remote team members. You may have to adjust schedules too, moving some employees’ working hours and setting alerts to respond to emergencies happening in another time zone.
A “Scrum of Scrums” team may be helpful in communicating the right information among all units. This special coordination team typically consists of members from each team chosen to address user interface design, architecture, integration testing, and deployment. Scrum of Scrums should also identify, analyze, and resolve coordination issues and risks.
As for task management, adopt shorter sprints that facilitate faster reactions, keep your backlog full, and assign a responsible person to every task. Jira is an excellent tool for this purpose.
To facilitate communication between the tech and customer-facing teams, make sure the developers can access and search through feedback and customer support questions. For example, Slack’s search feature enables every team member to quickly find information about past problems and issues mentioned by customer support.
7. Adapt your project management to the new scale of operations.
Assess the existing managing positions. Software product development requires understanding digital logic, data, systems, instruments, leadership, teamwork, psychology, art, and much more. At least one person within a development team should possess that knowledge and a clear map of where the software stands currently, what it will be, how it works, and how to make it work better. This person must also ensure clear communication of important information throughout the organization.
It may be smart to make the PM a “mini-CEO” by combining their responsibilities with the product owner’s, such as market analysis, finding ways to add product value, and connecting a particular product development with the company’s global progress.
To identify and prevent the problem of micromanagement, watch out for the following symptoms in your managers:
- spending most of their time overseeing others
- avoiding delegation or taking over any work delegated previously
- focus on minute details rather than the big picture
- defying other people’s opinions and experiences
- requesting updates more frequently than needed
Objectives and Key Results (OKR) management technique provides the benefits of micromanagement without the need for total control. 2-5 SMART objectives, with up to four measurable results per objective, are set for a team or individual quarterly.
Once or twice a week, everyone will present their progress and give feedback on their OKRs. If an objective is 75-80% complete, it counts as being achieved. If anything reaches 100%, the next bar is set higher.
The Kanban technique is excellent for visualizing the development process and distributing the workload between multiple employees. Its look may depend on each team’s issues on a project, but each worker can always see what has to be done and when.
8. Use suitable architecture.
Before scaling a software product, the team has to review its design and plan the architecture. They need a clear vision of where the company is moving, what goals it wants to reach, when, and how much it’s ready to invest.
You may also need an experienced software architect to plan the architecture that matches your scaling team.
Technical complexity arises when work takes more than one iteration or release cycle and cannot be easily divided between different technical competencies or teams. You can prevent this by having the most urgent system or software architecture features defined early or even pre-defined at the organizational level, e.g., as infrastructure platforms or software product lines.
Such pre-staging of architectural features is called “architectural runway.” It should provide the degree of stability required to support future iterations by multiple teams.
As the number of your software developers grows, you need to plan their work so that each team works independently on a certain module, but also devotes half of their time to integrating with other teams’ deliverables. You also need to plan how data exchange between the teams should occur. This way, the structure of your software will resonate with your company’s structures.
9. Improve your code quality.
The following will be helpful for scaling software development teams:
- Introduce code writing standards for your corporation. As an example, see Airbnb’s GitHub repository. Onix manages its standards using GitLab.
- Implement tools that check the quality of code, such as linters like ESLint with special settings for your company.
- Use other static code analyzers, e.g., SonarQube.
10. Measure the success of scaling, iterate, and improve.
You can use various project metrics to measure productivity and quality and see what happens when people and teams are added or removed. Pay close attention to the interval between code merge and production release. This metric should stay the same or improve as your software team grows.
Visibility into the progress within each team is crucial too. Define the performance metrics for every department and team to track progress and help all keep on the same page.
Namely, software development teams should continuously track and understand:
- Test Cycle Time. The faster your team receives quality feedback, the faster they can improve the product.
- Issue rate. You need to know where most bugs are discovered in the pipeline: production, pre-production, or support. “Further left” is better.
- Defect Removal Efficiency. DRE is the correlation of bugs detected by testers and software testing to those detected by end-users.
- Automated Test Coverage. This metric helps understand how much effort your team is putting into automated testing and the trend of your test coverage.
- Commenting and documentation ratios. These are the proportions of comments and documentation text to code.
- Maintainability score. This index represents the relative ease of maintaining your code. Values between 20 and 100 indicate good maintainability, 10-19 indicate that the code is moderately maintainable, and 0-9 indicate low maintainability.
- Standardization error rate. Before team growth, the company needs to adopt and communicate its standards regarding the amount of standardization and quality errors per line of code.
If you can measure and be aware of trends in quality, activity, and social metrics for each team, your chances of moving in the right direction increase.
Bonus tip: Outsource software development or engage dedicated teams.
Outsourcing software development can be a smart and cost-effective scaling solution, especially when you need it temporarily, due to missing internal skills, or wishing to get rid of excessive tasks burdening your existing team.
Scaling slows down minor tweaks. A dedicated team can address this problem, enabling the other teams to focus on the core tasks. It is also the optimal model for separate long-term projects: such teams are well-accountable and flexible in response to changing requirements.
You won’t need to put much effort and time into hiring the external team and can do it weekly or monthly, without worrying about letting people go when the job is done or recruiting experts urgently when needed. You are going to pay only for the completion of particular tasks, without overpaying when the workload is low.
Scaling a software development team, just like any other, has to be justified, well-prepared, and done incrementally. The challenge tests people, projects, teams, methods, skills, code, architecture, and communication. Problems invisible at a small scale can suddenly pop up.
Untimely and poorly planned scaling leads to efficiency and quality decrease and losing money. Before scaling, the organization needs to find out what is happening on the ground and assess the current situation. Estimate the number of new team members you need, resolve any insufficiency in management, and decide on the standards and relevant metrics to follow.
Smooth scaling up requires:
- a strong mission, vision, culture, and strategy aligned with your current business needs
- a shared understanding of the goals to be achieved
- well-established processes and effective communication channels
- effective project management skills, tools, and models
- a technical base and software architecture ready for scaling
- CI/CD pipelines scalability
- maximal activity automation
- clear code
Take your time to pick the right people for the right positions in your in-house or distributed teams, provide them with the necessary hardware and software, and plan cooperation across different time zones and cultural backgrounds.
Agile, with its self-organized teams working in short sprints, holding daily stand-ups, and sharing a sense of responsibility for the final product, makes it easier to respond to scalability challenges. However, before implementing any of the recommended practices, evaluate their appropriateness for your unique organization and decide how to implement them to the best effect. Monitor your adoption by using the right metrics and adjust as appropriate.
We hope this article proves useful for you.
Remember that the scaling product development team challenge can rachet up your abilities and expertise and become a business opportunity. Meanwhile, please feel free to contact Onix if you need any help, a dedicated team, or a whole project to be realized offshore.