How to Build a Great Software Development Team

January 8, 2020
Updated: January 17, 2020
Written by Built In Staff

Building a great software development team takes more than finding the best developers. Engineering leaders must also ensure their team’s work aligns with the goals of the business and that they keep one eye on the future so that they’re ready to scale — and tackle the challenges that rapid growth creates.

Leading by example helps accomplish some of these goals, but it’s not enough. Tech leaders must also be intentional. They must take ownership of the interview process, onboarding, team development and the core values that guide their work. Here’s how fifteen tech leaders tackle the challenge.

 

Drift
Drift

Drift

According to Freedom Dumlao, building a collaborative team of skilled developers requires a detailed hiring plan. And a crucial part of that plan involves identifying team players. Drift’s chief architect would prefer such candidates over more experienced coders who work in silos. 

 

What are the most important factors to consider when building a great software engineering team? 

Hire humans with great attitudes. A brilliant engineer who can’t work well as part of a larger team is far less valuable than a competent engineer who’s eager to participate with their colleagues to ship great software. 

You also need a clear hiring plan. Connect the goals of the business to specific engineering needs that need to be filled. At Drift, we prefer to have many small engineering teams of three people that can fully own a product or feature. When new business needs are identified, we can follow this pattern to define exactly what engineering needs will have to be met in order to achieve those objectives.

 

"Connect the goals of the business to specific engineering needs that need to be filled.’’  

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

As everyone in Boston knows, it is a very competitive market for software engineers. Most of the talented people already have jobs. Getting them to join your team requires showing them that there is a real opportunity to work on great technology with amazing people, while growing their career and perfecting their craft. 

We love to showcase the culture and opportunity that exists here by hosting both internal and external events. Internally, we’ve recently had success with a multi-day hackathon that allowed all of our teams to create anything they could imagine. Externally, we’ve continued to open up our office space as a venue for local meetups and events like Boston Node, Product Hunt and others. These events give engineers in Boston a chance to understand more about what Drift is like.

 

illfonic great software engineering team
illfonic

IllFonic

According to Daniel Garcia, technical director at IllFonic, it’s easy to attract great talent when you work at a company that builds video games. Building and managing that talent requires finding the right personalities and correctly assessing their skills to develop the next game.

 

What are the most important factors to consider when building a great software engineering team? 

I would say the most important factor when looking at prospective team members is personality. Someone can be the smartest, fastest worker on the planet, but if they can't work well in a team, none of it is going to matter. 

After that, it’s crucial to assess skills. I try to look at what the current team's strengths and weaknesses are and determine what areas could be filled or improved. The last thing I usually consider is their ability to work semi-autonomously. Having the ability to add polish to features and look for new tasks when out of work without being prompted is not only appreciated but sometimes necessary in a fast-paced environment.

 

"The most important factor when looking at prospective team members is personality.

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

One of the major challenges we have had scaling the team is getting the team size right. The team needs to be large enough to have work evenly distributed, but still small enough to be agile and communicate well. It is a difficult balance to strike. If the team is too small, then everyone will be overworked and things will start slipping. 

If the team is too large, it’s difficult to manage quality control. I have also found that when teams are too big, over-engineering is more likely to occur. To solve this problem, we have begun spinning smaller, temporary strike teams that can move fast and light but still operate within the larger team.

 

ojo labs
OJO Labs

OJO Labs

By fusing machine and human intelligence, OJO Labs is building tech products that they hope will empower people to make better decisions. Until that tech can make smart hiring decisions, however, Senior Director of Engineering Feroz Patwa believes he’s found an effective recruitment methodology to build his software engineering team.

 

What are the most important factors to consider when building a great software engineering team? 

Building a great software team starts with having an effective recruiting methodology. Hiring the right people at the right time for the right opportunities grows the person, builds the team and brings success to the company.

Promoting an empowered culture is crucial to having an engaged team. Our team has the proper context of who we are solving the problem for, and why it is important. With this context, our team figures out what solution to build, and how to build it. 

We aim high and promote a culture of continuous improvement by consistently challenging ourselves. We learn from our mistakes and we strive to deliver maximum value by being efficient and reducing toil. 

Everyone at every level is encouraged to dig deep and constantly seek out ideas and strategies that will make our product, team and organization the best it can be. 

 

"We aim high and promote a culture of continuous improvement by consistently challenging ourselves.

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

As we continue to grow, it is critical that we stay aligned. We need to effectively communicate information to and between our teams. Leaders provide frequent updates and ensure that everyone has the right context. This is done through regular one-on-one meetings, all hands, Slack channels, etc. 

For cross-team communication, our teams organize events that foster camaraderie and generate new ideas. Events include hackathons, lunch-and-learns, show and tell, tech talks and more. 

 

scalefactor
ScaleFactor

ScaleFactor

Francis Sullivan, CTO of ScaleFactor, said his biggest challenge is finding qualified people. To build his software engineering team, he continues to recruit outside of Austin and hire passionate recruiters who believe in company culture.  

 

What are the most important factors to consider when building a great software engineering team? 

It is important to hire people that are culturally aligned. Every company's culture is different, so it's important to hire for fit because technical skills can be taught, but the culture is more about who a person is and can’t be taught as easily.

Hiring people who are team-oriented and are able to communicate effectively is also crucial. Most software projects require more work than a single person can do quickly, so people need to work together as a team. 

Finding people who are able to learn quickly and build products efficiently requires constant learning about what works and what doesn’t, and then adjusting. It is very rare to start on an idea and get it 100 percent right from the start. Rather, standard software methodologies like Agile promote rapid cycles to improve learning opportunities and focus on solving the actual problems being addressed.

 

"Getting people who are team-oriented and are able to communicate effectively is also crucial. 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

Finding qualified people is difficult in this environment, so the natural tendency is to lower the bar. But lowering the bar will not win in the long term. Some of the ways we have solved this challenge are by hiring outside of Austin and hiring recruiters who care about the company culture and find the right candidates.

Hiring the wrong person is a very costly mistake. We need to partner with recruiting to help with retention. If you are hiring someone for a specific job, you are not looking for a long-term fit. Constantly remind yourself that a job is temporary, but the outcome is permanent.

Another challenge is the competitive market. A way to make sure that you set yourself apart is to ensure the candidate understands how they would fit in with the company’s vision. Explaining how tech talent aligns with the business, and showcasing what working closely with the product delivers for the company can be powerful. At the end of the day, software engineers want to build a product that is used and adds value.

 

ccc
CCC

CCC

Director of Architecture of Telematics Technology Todd Rigertas emphasizes the importance of empowering talented engineers at CCC. For him, making a good engineer “great” means giving teammates “authority, information, resources and a compelling mission.”

 

What are the most important factors to consider when building a great software engineering team? 

Great software engineers empowered with authority, information, resources and a compelling mission make great software engineering teams. As Jim Collins wrote in his book “Good to Great,” “Get the right people on the bus, the wrong people off the bus, and the right people in the right seats.” Simply put, great software engineers hire other great software engineers.

Engineers must have the ability to set their processes, execute independently, retrospect, course correct, lather, rinse and repeat. We have found that these attributes enable advanced growth of individuals, which leads to great teams.

 

"Simply put, great software engineers hire other great software engineers. 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

As with any startup, the Austin telematics team started primarily with only software development resources and senior leadership. As the customer base has grown, product owners, scrum masters and software developers in-test have been added. The new roles and responsibilities required processes and ownership adjustments for all team members, with the primary development challenges of shared software quality ownership and development agility. 

Emphasizing retention of static analysis and unit-testing responsibilities, while adding test automation plan reviews with comprehensive team participation created a more scalable SDLC. The combination of unit tests, functional test automation and load test automation have provided developers with the confidence to accelerate the development of new customer requirements.

 

The Predictive Index
The Predictive Index

The Predictive Index

Sean Cavaliere, VP of engineering at The Predictive Index, prioritizes smarts over experience when identifying candidates to join his team. He also hires with the business strategy front of mind. That way, whether the engineering department is made up of five people or 20, he can be proud of what they stand for and the work they produce. 

 

What are the most important factors to consider when building a great software engineering team? 

We rely on data to find engineers who are aligned with our strategic vision. Any time a new team member is added, a new team is formed. With a talent strategy in place, we know exactly what constitutes “the right person” for the job. We hire the best and brightest, but we're careful not to focus only on skills or qualifications. We look for overall fit for the role. That includes smarts, attitude and experience, in that order.

 

"We look for overall fit for the role. That includes smarts, attitude and experience, in that order.’’ 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

Hiring someone who is a poor fit for the role destroys employee engagement. At PI, we take a data-driven approach to hiring and engagement to ensure we are creating strategically-aligned, diverse teams. By designing our team based on the business strategy and evaluating candidates for job fit and team fit, we can predict candidate success as our engineering team grows.

 

Cogito
Cogito

Cogito

Kon Kalabokis wants to make sure that his engineers feel empowered to make decisions that will help them accomplish their goals. That way, Cogito’s senior director of software engineering can help his team better tackle inevitable scale-related challenges head-on. 

 

What are the most important factors to consider when building a great software engineering team? 

Based on my experience, the most important factors are creating an atmosphere of transparency and trust where engineers are empowered to make decisions related to completing their work. I also emphasize hiring people with well-developed soft skills who communicate well within a team. Collaboration is vital to success. 

 

"Collaboration is vital to success.’’ 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

Our real-time AI product is a completely new idea for clients. This creates challenges when scaling our engineering team to ensure clients’ needs are met and our product continues to evolve. Whatever challenges we have at the moment lead to more opportunities at both a team and individual level. As we grow in team size to meet this demand, we focus on ensuring we have a common framework in managing requirements, tracking and overseeing projects, as well as automating our integrations and deployments in a repeatable manner. 

 

Mass Mutual
Mass Mutual

MassMutual

The speed of technology development isn’t slowing down for anyone. Keia Cole, head of digital experiences at MassMutual, understands that this means providing her team with as much opportunity and exposure to new practices as possible. 

 

What are the most important factors to consider when building a great software engineering team?

On the digital experience team at MassMutual, building a community that fosters learning and curiosity is extremely important. Technology is changing constantly, so we all need the opportunity to learn and try new things. We want to create an environment that inspires innovative thinking and creative technical solutions. It takes courage to pitch and try new approaches, so developing an inclusive culture where failure is used as a learning opportunity is critical. We want everyone to feel welcome and encouraged to speak up and share their perspectives. 

We build teamwork through being active in our community. We’re always looking for ways we can champion involvement in Boston-area tech events and volunteer opportunities.

 

"Technology is changing constantly, so we all need the opportunity to learn and try new things.’’  

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

New tools, patterns and approaches can have cascading effects, so teams need to be aware of what’s happening across the organization. We are more deliberate about using agile ceremonies to facilitate cross-team communication and have developed some of our own processes that work well for our organization to ensure that everyone remains aligned. Finally, any critical information is communicated in multiple ways to reach everyone who should be aware.

 

Flywire
Flywire

Flywire

VP of Engineering Felipe Talavera Armero focuses on people, culture and pace. As Flywire’s engineering department has scaled, he caps individual teams at seven to eight people for efficiency and communication purposes. That way, the developers can duplicate processes, learn from each other and sustainably scale with the company. 

 

What are the most important factors to consider when building a great software engineering team? 

We want to hire people who are curious and will continue to build an environment where everyone helps each other. Create the culture you want from the beginning to maximize the delivery of the company’s value. 

Understand the pace of building technology rather than rushing ahead with a build without considering all outcomes. We look for potential FlyMates who are able to think medium-term, consider all outcomes, create a sustainable plan and teach junior FlyMates to have that mindset too.

 

"Create the culture you want from the beginning to maximize the delivery of the company’s value.’’  

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them? 

The main challenge we’ve faced is creating a process and a communication strategy that is sustainable and doesn’t break as we continue to grow. Our solution? Keep teams small (seven or eight FlyMates), ensuring that processes continue to work well. 

FlyMates have an input on what product area they work on, and we strategically group certain FlyMates together so  they can learn from each other. 

Originally, communication was easy. Need to review something? We would bring 10 to 15 people into one room. But as we’ve grown and spread the engineering team globally, we’ve adjusted the way we communicate with better documentation, requesting feedback and comments online to cover the timezones. 

 

guild education
Guild Education

Guild Education

SVP of Engineering at Guild Education Jess Rusin said her software engineering team consists of employees with diverse backgrounds and strong communication skills. As the women-founded startup scales, Rusin makes sure everyone’s goals are aligned with proper training and warranted growth.  

 

What are the most important factors to consider when building a great software engineering team? 

Ensuring you have a balanced team with a diverse set of strengths and backgrounds is critical. As you build out a team, it is great to have both generalists and deep experts. It is also important to have team members with diverse skill sets. Doing so can lead to higher overall results and drive better cross-collaboration and focus.

Second, hire effective communicators. Building software that provides business value requires more than just writing code. Interfacing with product managers, designers, marketing and other functions within the business are key to driving important initiatives forward and helping to connect the “why” behind what teams are building. Strong communicators are able to explain technical concepts to non-technical audiences, listen, understand and utilize technology tools effectively within the organization to share information.

 Lastly, cultivate a culture of reflection. When building highly effective teams, it is important to take time to reflect and celebrate accomplishments together. It is also important to identify any areas for improvement. Taking a step back to reflect for a moment leaves room to iterate on the team’s abilities to deliver great software, improve processes or ensure that the long-term technical vision is in alignment with broader business initiatives. At Guild, we utilize our bi-weekly “retros” as one form of reflection for each of our engineering teams to celebrate teammates, identify practices they would like to continue and submit ideas for change.

 

"As you build out a team, it is great to have both generalists and deep experts.

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

At Guild, we quickly realized that we needed to start sharing and distributing information more effectively as the team grew. This meant documenting design proposals and decisions, holding regular internal tech talks and demos, updating supporting documentation such as READMEs, pairing developers together when new engineers join the team, and taking time to refactor and simplify projects to enable a broader set of individuals to contribute. The earlier you can identify single points of failure and distribute the knowledge, the more you will be able to leverage the whole team as you grow.

As the team scales, there is unnecessary overhead in one large meeting and teams may need to split or shift. It’s important to encourage teams to build new ways to collaborate and share information, such as asynchronous communication through a tool like Confluence and good meeting practice by including agendas and a link to notes in the description. 

By encouraging managers to be thoughtful about how to organize teams effectively and reduce dependencies, such practices can lead to higher productivity in the long term. 

 

Pioneer Square Labs
NEXTSTEP - Pioneer Square Labs

Pioneer Square Labs

Adam Loving's ideal software team is both flexible and diverse. According to the Pioneer Square Labs' principal engineer, these values lead to the creation of more robust code and enhance problem-solving ability, which is especially important to teams that are in high-growth mode.

 

What are the most important factors to consider when building a great software engineering team?

Finding well-rounded developers who are comfortable experimenting. Hiring experienced or specialized engineers will lead to fast near-term progress, but it could limit your options down the road. Junior engineers are more likely to grow with the needs of your business but will need mentorship and more time to reach full effectiveness.  

Also, do you want each member of your team to be able to touch all parts of the code, or do you want them to have clear application boundaries and defined interfaces between their different subsystems? In some cases, the architecture may call for multiple experts. In other cases, all the engineers may be able to work on the full stack. Having a more flexible team is better for overall code robustness. 

For most roles, I prefer candidates with a computer science degree. A grasp of data structures and algorithm fundamentals is far more important than expertise in a particular technology. When it comes to personal and professional backgrounds, ideally your team will be as diverse as possible, if not technologically, then in their business or cultural backgrounds. In a startup, it’s critical to see problems from as many angles as possible. 

 

"Having a more flexible team is better for overall code robustness.’’ 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

Software complexity increases and requirements change as businesses grow. The engineers who helped us get off the ground didn’t always have the skills to take the software to the next level. It was often necessary to add more senior engineers, bring on those with different specialties or split into separate teams. Otherwise, engineers may need to skill up in a new area. 

This is where transparency early on pays off. If the engineer has visibility into the business, is customer-centric and is good with team communication, then she will be more likely to turn her skills toward learning a new expertise.

 

Navigating Cancer
Navagativing Cancer

Navigating Cancer

Senior Software Engineer Gary Manfredi told us that prioritization and alignment has completely changed the way his team at Navigating Cancer works, both internally and with other departments.

Obviously, defining priorities and getting everyone on the same page is easier said than done. But Manfredi has advice for other engineering managers looking to overhaul their current practices: Get back to the fundamentals.

 

What are the most important factors to consider when building a great software engineering team? 

Building a great team begins at the top. Impeccability regarding commitments, candor, good planning, clear decision-making, urgency and empowered delegation are all part of our self-development as individuals and are required for good leadership. Aligning with the company is also key. If a manager is not fired up and motivated by the company and their place in it, then they should revise their outlook or find a new company. Engagement is contagious. 

When it comes to interviewing, don’t default to whiteboard coding tests. If your company is in the business of shipping whiteboard code, then great. Test for that skill. Otherwise, provide the candidate the integrated development environment of their choice and test real coding skills. You risk missing a good candidate who may freeze up or not code well on whiteboards. That said, we’ll test whiteboarding for a few things, including concept diagraming, architecture and unified modeling language. 

 

"When it comes to interviewing, don’t default to whiteboard coding tests.’’ 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

I’ve had the challenge of owning a team that was struggling because of tap-on-shoulder request processes, bad tooling, missed timelines and poor morale. Simply adding more people would not have fixed the issues to allow us to scale. My focus was to take the team back to fundamentals. We got our Scrum process down with the right ceremony and transparency. This took some time, better technical planning and the support of an awesome project manager, as well as replacing an engineer who wasn’t invested. It also required coaching the product team on how to pace their inflows and clear requirements. 

But it paid off. Velocity, engagement, quality, employee retention and morale went way up. And the product team became happier as development became a well-oiled machine. Practicing and perfecting development fundamentals is the basis to do it.

 

DoubleDown Interactive
DoubleDown Interactive

DoubleDown Interactive

As oxymoronic as it might sound, as an engineering leader, you want to avoid doing as many of the things that got you your job as possible. According to Derek Taylor, senior software engineering manager at DoubleDown Interactive, this means coding and really getting into the weeds. Taylor told us how minimizing such tasks is key to creating an engineering team that is primed for sustained growth.

 

What are the most important factors to consider when building a great software engineering team? 

I assume that developers can identify good engineers and determine what specialties they’re looking for. Finding the right teammates is more difficult. 

Decide on what kind of culture you want for your engineering organization. List the attributes that define it. Make goals for the first year. Score your candidates against that criteria. This does not mean all candidates should match a single template. You should have a healthy mix of people who will work well together and communicate with each other. Look for future leaders. You’ll need them. It’s easier to grow them now than to hire them later.

 

"Avoid doing what got you your job.’’

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

Growing quickly is relatively simple. Growing well is difficult! You won’t scale well if you are still trying to code, strategize with upper management, plan with your peers in other disciplines and manage engineers. So find new leaders, and be clear about expectations. Give managers the appropriate amount of people for a team and then stop managing that team. Manage your managers or they will not become powerful. 

Avoid doing what got you your job. Minimize coding and don’t micromanage. You will steal vital experience from engineers and managers and you will miss critical strategic details. Knowledge silos develop naturally when you start a team. Actively work to break them down and spread out the expertise.

 

Tango Card
Tango  Card

Tango Card

Crossed-wires are just as useless among engineering teams as they are behind television screens. At Tango Card, Seattle Engineering Manager Russell Dodds encourages a culture of self-direction while also emphasizing team deliverables to ensure each developer has clear priorities based on a solid foundation of support. 

 

What are the most important factors to consider when building a great software engineering team? 

I love working with teams that move fast, understand the customer or business impact of what they are working on, believe in the products they are building and deliver value as a unit. To allow the team to move fast while still delivering the right features, you have to remove friction from the development and release processes. Transparency from management and the non-engineering business side of the house about how solutions affect customers is also critical in empowering engineers. 

Continuous integration and delivery is also important, as well as cloud-based infrastructure. A strong culture of code reviews, team-over-individual deliverables and self-direction will allow developers to ask the right questions, own the results and build the best solutions. To make this work, we are always striving for the right balance of senior engineers and junior engineers. We want to maintain a strong engineering foundation while continuously injecting new ideas and technologies.  

 

"Undocumented tribal knowledge is prevalent in most small teams.’’ 

 

What challenges have you faced as you’ve scaled your software engineering team, and how did you overcome them?

Undocumented tribal knowledge is prevalent in most small teams. Once the team reaches a certain size, that lack of documented information can negatively impact productivity, be a roadblock to onboarding new engineers and lead to bugs and the poor integration of existing features. Even as our overall team has grown, we have continued to use Agile and Scrum groups of between four to six members that focus on products. This has allowed teams to remain efficient, productive and retain a sense of ownership. 

But it does cause issues when features cross groups. Either the team without expertise adds features to an unfamiliar product or they are blocked on the product team's ability to deliver the requested feature. To counteract these drawbacks, we encourage all engineers to code review commits across teams, have bi-weekly demo sessions to understand what other teams are working on and commingle to increase cross-functional knowledge.

 

Dreambox Learning
Dreambox Learning

Dreambox Learning

As a technical leader, it’s your job to lay the groundwork for your team’s initial success while casting one eye on the horizon. The Dreambox Learning engineering team strives to stay ahead of potential problems that come with scaling.

According to Lorenzo Pasqualis, VP of engineering, they do this using Agile techniques like the Scrum of Scrums to organize cross-team dependencies that inevitably slow coders down.

 

What are the most important factors to consider when building a great software engineering team? 

Building high-performing engineering teams is a non-negotiable skill for engineering leaders. It is the difference between successful and failing technology companies. It all starts with hiring well and without compromise. Once you’ve hired great people, you need to give them direction by defining reality in the form of clear expectations and business strategies. Once you’ve defined reality, you need to respect your people by giving them your full trust and getting out of their way. 

Finally, you need to keep a close eye on your team’s culture. Seed it with coherent and consistent guiding principles and give it space to grow organically. However, you can't stop paying attention. Team culture, like a garden, tends to evolve in surprising ways. Sometimes, you have to adjust it by tweaking your guiding principles or introducing new ones when necessary. 

 

"Seed your culture with coherent and consistent guiding principles and give it space to grow organically.’’

 

What challenges have you faced as you've scaled your software engineering team, and how did you overcome them?

As a company grows, software engineering teams need to evolve in concert with new and changing realities. Some people and groups are naturally good at adapting, while others are not. Leaders need to be able to identify new nascent bottlenecks and take appropriate actions to ensure uninterrupted high-performance. 

For example, I’ve found that there is a significant inflection point when engineering teams go from working on projects that have no dependencies to working on more complex projects that do. In my experience, you must deliberately tackle that complexity by introducing some form of dependency management. We solved the problem with the introduction of a scaled Agile technique, the Scrum of Scrums, to organize cross-team dependencies. We also created the role of engineering owner, who is a leader responsible for coordinating the technical aspects of a particular stream of work with inter-team dependencies.

Great Companies Need Great People. That's Where We Come In.

Recruit With Us