Best practices for building a software development team
No matter how fast technology moves and changes, tradition hiring practices — the holy trinity of screening, tech interviewing, and onboarding — will likely never change. Similarly, it doesn’t matter if you’re aiming to implement Salesforce or build an AI product that blows minds and grabs headlines: It’s still a balancing act between assembling a team of engineers and keeping the big picture in mind.
That balance doesn’t come easily to everyone faced with hiring an entire team. Often it’s a matter of anticipating what skills you’re going to need when and plotting the most efficient and cost-effective way to get what you need at just the time.
Here’s the nitty-gritty on what should guide the entire process.
#1 Nail down the composition of your development team
Naturally, your ideal software development team structure depends on the particular needs of your business and project.
For instance, developing an MVP for a startup or building a new product from scratch may require a nimble team, primed to work in sprints, that also has an array of competencies.
In contrast, refining an existing solution calls for a niche skill set. Our work with ecommerce company Monetha is a great example: They needed features added to an existing product, and Golang skills were key to that process.
Still, some roles in a software development team are essential to any tech project's success.
"In a perfect world, development teams don't rely on project managers. Instead, they self-organize through agile frameworks, while product owners define the overall direction," says Fabio Davide, technical director in our UK office.
But in the harsh, change-is-the-only-constant software reality, not having a project manager is like having a ship without an anchor. According to Fabio, a good project manager acts as a buffer to track all the moving parts and coordinates communication among internal and external stakeholders.
Tech leads are the engines powering your software development team. They guide the team on how to choose the best tech stack and make sure the tech vision is in sync with your business goals.
Beyond purely commercial tasks, they serve as mentors and coaches, helping team members elevate their technical abilities and providing guidance on industry best practices.
A solution architect is your go-to person for designing and deploying complex systems. Their primary responsibility is to balance costs, functionality, scalability, and integration with existing systems.
- Bringing a solution architect on board offers numerous benefits:
- Better stakeholder alignment on design decisions
- Effective prioritization of tasks
- Minimal likelihood of costly issues at the implementation stage
- Optimal product performance and resource utilization
(Note that ifor startups the roles of tech lead and solution architect are often undertaken by one person.)
In complex systems or continuous integration scenarios with frequent code changes, having QA is crucial to prevent deployment chaos. And while smaller projects or resource-limited teams might skip this role entirely, it's best to involve testing specialists early on. Even without a finished product, they can review requirements, designs, and mock-ups and prepare test documentation, saving you from costly issues at the production stage or, worse, post-rollout.
Later down the road(map), you might consider bringing in UI/UX designers, DevOps engineers, Scrum masters, or experts in specific domains like fintech, healthtech, or ecommerce to match the growing scope of your project.
There’s one golden rule, though, no matter where you are in your hiring: Build an engineering team around the problem you aim to solve, and not the other way around.
A tip from Fabio: “Start by pinpointing the problem at hand and then determine the specific skill sets to tackle it. If any challenges arise along the way, be open to reorganizing the team based on the feedback and insights provided by those on the ground.”
Case in point: If your product requires a highly scalable backend, it would be more effective to hire, say, Go engineers rather than attempt to address expandability issues with less scalable languages like PHP or Ruby.
#2 Optimize your costs
Popularity vs. practicality
Rockstar developers and sexy skill sets are all well and good, but don’t make the thinking that won’t affect your budget. Extra skills = extra costs.
On the flip side, penny-pinching won’t help either. If you stretch your engineers too thin or expect miracles from devs without the right abilities, you’ll end up with a sub-par solution, a disenchanted team, and a skills gap the size of a small planet.
The solution? Get a good product owner, determine the scope of what you’re trying to build, and go from there.
In-house vs. dedicated software development teams
Tech companies love a prestigious location, but bright lights come with a price. The more on-site developers you hire to populate your hip office space, the higher your expenses will be.
The obvious fix is to avoid hiring within a set location and opt instead for a remote dedicated development team. This will keep overall costs lower and allow you to focus on obtaining the best-fit software engineers.
Key to that approach is partnering with a company with an established reputation. “Outsourcing development teams only works when you have a reliable, industry-recognized partner,” Fabio explains. “When you outsource, you relinquish control over the quality of your tech, unless you micromanage to the extent that it defeats the point.”
The company’s size also matters. A fully outsourced team works better for larger organizations, while staff augmentation is better suited to smaller companies.
Seniority vs. actual skills
Ultimately, an engineer with the most relevant knowledge will be the most cost-effective choice. Years of experience do not automatically make someone a better candidate, and hiring based on this can be an expensive waste of time.
#3 Streamline your interview process
Prioritize problem solvers
When projects and businesses differ so greatly, is there a one-size-fits-all approach that can be applied to optimize every technical hiring process? Yes, but it all boils down to flexibility.
“For any role in tech, you want a person who is dynamic enough to be able to respond to unforeseen stimuli,” says Fabio. “I often ask candidates about a problem they have encountered in the past, what their approach was, and what they did to fix the issue.”
The catch is, an engineer may be technically very capable, but if they struggle to cope with curveballs, they are likely to be a less-than-perfect fit for the team.
Engage an experienced tech expert
Once the initial resume screening is complete, involve a senior technical leader to conduct a skills-based interview. An experienced hiring manager can determine a candidate’s aptitude for the role almost immediately.
“The strongest managers can interview someone in 30 minutes and approve them,” says Glyn Roberts, Vention’s CTO of digital solutions. “Less experienced hiring managers need multiple stage interviews to validate the hire.” (Translation: The more rounds of interviews, the more money you'll spend with no guarantee of success.)
#4 Know when to scale
Always weigh the consequences of premature scaling against the potential drawbacks of on-demand hiring. Employing too many people too soon is wasteful, whereas involving many new hires right before a critical project phase may jeopardize project momentum because onboarding sucks up time.
Head off missteps with scaling your team by conducting regular one-on-one sync-ups with your engineering team to keep abreast of the current and projected task pipeline.
Also, keep in mind that stakeholders will likely start asking for more resources as the project scope expands. So, educated forecasting is key to scaling the team with the right developers at the right time. That’s exactly how Vention helped ClassPass scale their team with 35 developers in just two months: We capitalized on our streamlined approach to staffing and deep pool of pre-vetted engineers.
Similarly, when DealCloud came to us for development support, we brought together our best specialists across web development, DevOps, and QA, and formed seven agile sub-teams to collaborate in tandem. We then quickly became their core squad, scaling from six to 126 software engineering specialists to match their success. (Of course, scaling in this way is dependent on budget, but pre-emptive action is likely to be far more cost-effective than scrambling to meet unexpected needs.)
Agile methodology can also be a major power-up. Story points are a great way to measure a team’s performance and velocity, as you can assess tasks based on their complexity, effort, and risk, as well as estimate how many can be accomplished within a specific timeframe. Once you have a clear understanding of how fast the team is, and how fast you want to grow your product, the math becomes much easier
#5 Find the right balance of hard and soft skills
Soft skills are every bit as important as your team’s technical skillset. The ability to clearly articulate progress — what you did yesterday, what you will do today, and what your roadblocks are — is vital to forecasting resourcing needs, providing the team with the necessary support, and keeping stakeholders engaged.
Fabio also adds a third category: adaptability. “The perfect candidate offers 25 percent soft skills, 25 percent hard skills, and 50 percent adaptability,” he says. “If a person is unable to adapt to up-and-coming frameworks and technologies or unknown issues on the go, their long-term value may fall short.”