Team Topology: How to Structure Your Software Team (Startups to Enterprise)
Creating a strategic software organization allows you to develop strategic features, keep technical debt at bay, and scale up when you hit the next phase in growth.
On the flip side, having a poorly optimized software team structure will hinder your ability to complete the initiatives listed above.
It’s essential to learn quickly and reassess your team each time you hit a new phase of growth.
To help you out, we’re going to discuss the most common stages of growth and how to structure your software team during each phase.
A Few Notes & Disclaimers
The following recommendations don’t include concrete, absolute structures because every tech company has different products in different industries with different systems. There is no one size fits all. However, there are some strategic best practices that will help you structure your software team as you hit the next phase of growth.
Something else to consider is funding. Outside investment will catapult your business and change how you approach hiring and organizational structure. You’ll still need to plan your software team’s topology responsibly, but it does change your mindset.
If you’re thinking about software team structure, Conway’s Law is something to know. Conway’s Law is neither wrong nor right, good nor bad. But the reality is that organizations tend to mimic their software architecture. For example, if you have many microservices, you will probably have just as many small teams of engineers to maintain each of those smaller microservices.
Goal: Establish your first paying customers
- Someone who can get customers (CEO, founder)
- Someone who can implement (CTO, developer, founder)
In the very beginnings of your product company, you need to be honest about your capabilities as founders.
Someone needs to acquire customers and revenue. Someone needs to create/iterate your product. If you have a gap in either of these skills, you’ll need to hire someone.
Hiring a Technical Lead
If this skills gap is technical, you’ll need to hire an engineer. But should you hire a developer or a CTO? Well, it depends, but we’ve written a guide to help you decide which is best for your startup. Here’s the gist:
When you search for a startup engineer or CTO, you need to find someone who can take on two main things.
- Someone with the ability and desire to contribute to your product’s technical needs right now.
- Someone with the ability and desire to quickly grow into a leader to address future needs.
Your goal should be to find someone who understands the need for individual contribution now but is excited about and capable of leading a team too.
You Have A Customer
Goal: Get to a level of comfort re revenue vs. expenses
- Someone who can get customers
- Someone who can implement
- Someone who can strategize your product (developer, CEO, product manager)
In this stage of growth, you typically have one major problem. You need additional help to support your paying customers’ needs.
This product feedback will inform your product’s long-term strategy so you’ll need someone who can take this feedback and transform it into a product roadmap. This individual(s) may be a product manager, engineer, or a CEO. Either way, you’ll need to accelerate your product to meet current customer needs.
With these new hires, the goal is to get to a place of relative comfort. You want to find an equilibrium, a place where money in = money out (or at least not too much money out). It’s important to be comfortable for a bit before you take a risk to get to the next stage of growth.
Rapid & Sustainable Growth
Goal: Hit aggressive growth goals while remaining profitable
- Team (maybe just one person) to get customers (sales, marketing)
- Team to implement (developers)
- Team to strategize your product (product)
- Team to communicate with current customers (customer success, chatbots)
- Individual to strategize internal workings, future growth of team, and technology (CEO & CTO)
In this stage of growth, a team mindset is helpful, even if certain teams only consist of one person.
Since this stage is so custom to each organization, it’s impossible to give sweeping generalizations about structuring your software team. However, we can give you a bit of advice: Hire for your fires.
i.e., what are your biggest problems? It could be
- Performance/infrastructure (DevOps and IT)
- Bugs (software engineers)
- Security (security managers)
- Need new features (software engineers)
- New technology available (Solutions architects or engineers)
- Your competition (product management)
If you’re unsure of your biggest problems, that’s a problem in itself. You’ll need to strategize how to get feedback. This may be building a chatbot or a customer service team.
As you put out these fires, you’ll hire new engineers that specialize in the maintenance and improvement of these areas (infrastructure, bugs, security). Although, you’ll eventually reach a tipping point where the expense of these new hires outweighs the revenue you’re generating from paying customers. That’s when operations (the team responsible for acquiring paying customers) need to sustainably grow the user base and/or revenue from the product. At this stage your business is a constant pendulum, swinging back and forth between needs.
While there is no industry-wide turning point, there will be a point where you hit a number of users and things will become tricker.
More users mean more bugs, more security risks, and more performance issues. To support these users, engineers need to be there to optimize the product and its systems. To top it off, you’ll need a buffer between user’s problems and engineering, a team to collect, measure importance, and strategize. This is customer success, product managers, and marketing.
This is also the stage to strategize around engineering leadership. As you hire more engineers, there will be a need for tech leads and managers. This leadership makes a big difference in a product organization. Your team will want to stay or leave depending on who their mentor and leader is at the company. Define this culture, and be able to explain it to your team. People want to know “what they’re in for” in their workplace, and setting that expectation in your company will be crucial to keep the right people.
Goal: Create multiple product lines and revenue streams at scale
- Teams to acquire new customers
- Teams to implement
- Teams to strategize product development
- Teams to communicate with current customers
- Leadership to optimize internal teams
Once you’ve mastered the sustainable and rapid growth phase, it’s much easier to reach this enterprise/pre-enterprise stage. Your risk decreases the more you grow, and a single position won’t make or break your software organizational structure.
What’s more important is to create a solid hiring process so your organizational structure aligns with your business and product goals. During this process optimization, start with the role and organizational structure and go from there. What are your current and long-term resource needs? How vertical should your organizational hierarchy be?
This initiative takes dedicated team members because it takes a lot of time. It requires organizational strategy, testing, interviewing, and hiring across multiple products and teams.