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 nineteen tech leaders tackle the challenge.
Tips For Building a Great Software Development Team
- Implement a clear hiring plan
- Hire team members with good attitudes and communication skills
- Assess the strengths and weaknesses of the current team and fill those gaps
- Promote your culture—it's important to hire individuals who share your company values
- Encourage transparency and autonomy
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Christian Gloddy, VP of application development at Newsela, said a manager should be receptive to the needs of cross-departmental colleagues, users and the person in the mirror.
What’s a key factor leaders should consider when growing their dev team?
One important thing leaders need in building a high-caliber team is empathy. For us, that means empathy for our users, the teachers, and the students who use our platform in the classroom every day. Leaders need empathy for the engineers beside them. They need empathy for their partners in product, design and marketing. And of course, empathy for themselves.
Empathy shows itself in the features that are built. It isn’t enough for software to be functional. It has to be understandable and flexible. For that, empathy is necessary.
"[Leaders] need empathy for their partners in product, design and marketing.”
What’s been a major challenge you’ve faced and solved while scaling?
The software industry has an unfortunate history of empowering what is often described as the “brilliant jerk”: lone coders who understand the languages and platforms in play, but also struggle to collaborate, communicate and aid those around them. The greatest challenge for us is finding teammates that are both brilliant and build upon our team’s culture of empathy.
Bringing on empathetic engineers helps ensure every engineer is surrounded by people who will catch them when they fall, and lift them back up. To build a team for future growth, you need people in longboats rowing in the same direction, not jerks on jet skis.
Justin Oblak, VP of engineering Teampay, said it was important that neither his new or veteran engineers felt neglected as the team scaled. So a balanced onboarding process was implemented to cater to the needs of both groups simultaneously.
What’s a key factor leaders should consider when growing their dev team?
Empathy is one of the most important attributes to consider when recruiting for engineering teams. A team of empathetic individuals creates an environment of trust and confidence instead of pressure and bullying. This solid base of trust results in increased ownership and responsibility, which allows the team to scale more gracefully.
"A team of empathetic individuals creates an environment of trust and confidence.”
What’s been a major challenge you’ve faced and solved in scaling your team?
One of the biggest issues we faced was onboarding time. As teams grow quickly, it’s easy to get into a place where you’re spending more time helping new engineers than building the product. We prioritized implementing a well-documented onboarding process to fully support new engineers when they join, while still allowing our existing team members to execute on their day-to-day responsibilities.
Setting up new hires for success meant educating them for NS1’s Director of Engineering Thomas Spiegelman. To do so, the leader said he matched new hires with experienced engineers that could provide a wealth of knowledge, building a collaborative culture in the process.
What’s a key factor leaders should consider when growing their dev team?
One of the most important factors is finding engineers who are excited about the work they are doing. We find they are more apt to enjoy teaching other people, and this builds a foundation of cross-training and collaboration.
"We made it a point to pair new engineers with our more seasoned engineers.”
What’s been a major challenge you’ve faced and solved in scaling your team?
We have had problems with historical knowledge being siloed onto a handful of engineers who have been around for a long time. Changing this was no easy task, but we took two specific avenues to increase the velocity of our cross-training.
We put together a more structured onboarding experience to help build a base of knowledge in new employees. Then we made it a point to pair new engineers with our more seasoned engineers to remove single points of failure in our knowledge base.
Sometimes mentors need support just as much as mentees do. Betterment Senior Engineering Manager James Paolantonio said that as his teams scaled, it became clear that mentorship could extract a cost from mentors. So the onboarding process was revised to give teachers and apprentices more breathing room.
What’s a key factor leaders should consider when growing their dev team?
The two keys to a great software engineering team are balance and growth.
A team composed of engineers with varying skills and experience creates an atmosphere of teaching and mentoring. This allows every member of the team to grow in their own way while also being exposed to technologies and processes they may be unfamiliar with.
"We took steps to allow greater onboarding time that better supports our new hires and mentors.”
What’s been a major challenge you’ve faced and solved in scaling your team?
Managers often fail to take into account the weight of mentorship in onboarding new hires. We consider onboarding a vital part of our engineering experience and pair new hires with a “buddy.” But in the past, we sometimes didn’t take that responsibility into account when planning projects. So we took steps to allow greater onboarding time that better supports our new hires and mentors.
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.
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.
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.
Collaboration and Wikis Work
CTO Dan Duling said getting new hires up to speed quickly can be a hurdle when scaling. He placed an emphasis on collaboration and documentation to solve for that at Chowly. Duling said that his team’s willingness to speak up and take action when they identified problems helped lead to the creation of a valuable tool that helps new hires hit the ground running.
“As teams expand, delegating responsibilities to newer members becomes a challenge,” said Duling. “Knowledge transfer and dissemination among larger teams is vital for future success because, at scale, one or two people can not handle everything by themselves.”
“We addressed this problem by creating an internal wiki documenting procedures and best practices. Our first iteration wasn’t a success, but through collaboration and identifying our gaps, we landed on a solution that is working well. Now it is easier for the team to collaborate and grow our knowledge base. Collaboration and the willingness to try new solutions, even when we’re uncertain whether they’ll be successful, has been our greatest asset when addressing challenges like these.”
Recognition Leads to Retainment
Retention is an issue many tech teams deal with as they scale. Darek Potchebout, CTO at Geneva Trading, said making engineers feel valued is essential to retaining talent. He does this with his team through rewards and recognition.
“The talent market is competitive, which presents a big challenge,” said Potchebout. “The technical and domain expertise needed to work on certain projects means finding creative solutions to attract and retain talent.”
“To overcome this challenge, we maintained our flat organizational structure as we’ve scaled to give employees visibility to the leadership team and promote transparency across all levels of the organization. We’ve also made a point to continue to develop programs that reward employees and support work-life balance, such as recognizing the last week of the year as a company holiday. We strive to create an environment where employees are heard and recognized in a variety of ways for the impact they have on the firm.”
Hire Diversely and Develop Careers
Just because a company is hiring in a hurry doesn’t mean that its recruiting and focus on employee development should change, according to Tempus’ Nayeem Qadir. The director of engineering said he places an emphasis on diversity and soft skills when hiring and internally-run professional development post-onboarding.
“Personnel and hiring-related challenges are significant in high-growth startups,” said Qadir. “It’s important not to let hiring standards deteriorate by keeping a deep hiring pipeline and diversifying the hiring teams that are bringing talent in. How an engineer takes feedback, interacts in group settings, handles pressure and their willingness to learn are also important factors to consider, he said.
“We supplement our recruiting efforts through coding bootcamps and internship programs. And to help with retention, we aim to put people in the right positions. We focus on internal learning and development programs like “Tempus Board of Education” and building out a robust career framework that allows for mobility and growth.”
Create Space for Communication and Agency
When scaling, communication breakdowns can happen. It’s also possible to overlook new hires when assigning important work. CTO Ryan Sawatzky has dealt with both of these issues in his career. To combat these challenges, CPI’s tech leader intentionally created an environment that fosters transparent communication and gives new hires the ability to make an impact right out of the gate.
“Create an environment where communication is open and honest,” said Sawatzky. “Regular and transparent communication within and between teams is crucial to the success of every project. So is respect and cooperation rather than competitiveness with peers.
“It is also important to provide opportunities for engineers to demonstrate the value that they can provide. We involve new hires quickly in team exercises like discovery, design and code reviews, allowing them to actively contribute value from day one. Then we encourage engineers to directly interact with customers through theses phases of a project.”
Facilitate Feedback
According to Developer Manager Adrian Koperski, accountability is key to ensuring teams can scale effectively. Koperski stays accountable to his team at Adage Technologies by providing counsel and guidance that helps advance their careers.
“One challenge is making sure developers get consistent feedback and coaching to continue growing,” said Koperski. “When managers are spread across different teams, they can miss out on those opportunities.”
“We changed our structure to accommodate what our teams wanted. Each scrum team has a manager who’s actively involved in development work and manages the devs on that team. This way, managers can work closely with their teams to offer feedback and support on a more regular basis and assist with career progression and continuous improvement.”
Tap Into Professional Networks
Sanjay Chaudhuri said that when scaling an engineering team, it’s important to have strategic hiring practices. The CTO at Wishbone Club said looking for effective communication skills in new hires is just as important as creating a communication-heavy atmosphere in the office.
“Partnering with recruitment firms helped a lot,” said Chaudhuri. “A strong professional network and past working relationships with candidates also helped us bring the right talent in quickly. And partnering with Built In Chicago played an instrumental role in reaching a wide group of people interested in the startup scene and looking to make an impact.”
Provide Mentorship and Avoid Silos
Mentorship is an important part of a developer’s career arc, according to Rocketmiles’ Lead Software Design Engineer in Test, Sasha Karabko. She said scaling a team shouldn’t come at the cost of an employee’s continued development.
“One of the biggest challenges we’ve faced is ensuring every new hire has a mentor, no matter what level they were hired,” said Karabko. “We always want to have support for new hires, while helping them build rapport for later on in their careers.”
Karabko also said that it’s important that developers don’t work in silos, which can stifle teamwork. To counteract that, Karabko said developers at the company created engineering guilds focused on more collaborative projects, initiated ‘Refactor Fridays’ and regularly host lunch and learns to keep communication open between teams.