null
October 25, 2018

How to Scale Your Engineering Team

Scalability

Conversations, decisions, and execution are three big pieces when it comes to creating technology and building technology teams. As a leader in any organization, it’s important to figure out your business, value proposition, and competitive needs. If you want to have a high-performing engineering team, this all needs to be applied to your team.

At Perforce, I head the Engineering Division for the version control product line, called Helix Core. This includes the Server and Client engineering groups, and the Engineering Shared services and Quality groups. This team has grown quite a bit over the last two years. During my journey at Perforce — and at my previous gigs at NetApp and Cisco — I’ve learned a lot about growing strong teams.

Scaling With the Current Team Size

There is nothing wrong with staying small. You can do big things with a small team. While it might not seem like scaling if your team isn’t growing, you are. Even though you aren’t scaling with people, you’re scaling knowledge and skills. Here are a few tips:

  • Look at your current team and ask if you’re using them to their full potential. Are you providing the right tools to build their skills?
  • Scale outside your own skill set and accept failure as part of the process.
  • Engage best practices around the overall engineering teams (as described later).
  • Understand your engineers and what they love working on. Is it solving customer issues, working on new technologies, solving new problems, or something else entirely? When possible, give them more work in those areas.

Scaling the Team Globally Across Multiple Sites

People around the globe are more accessible than ever before. More and more organizations use a remote work environment or have distributed teams who work in different time zones.

Talent is pulled from all over the world. And distributed teams can work on products or projects around the clock. In order to build strong globally distributed teams, extra effort is needed.

I’ve been a leader in engineering organizations of all sizes. Here are a few things I’ve learned that have helped our teams stay unified – even as they get more distributed.

Create an Awesome Onboarding Experience

For a new hire to come on board and start contributing, it’s important for them to know who they’ll be working with. New engineers should not feel overwhelmed from day one. Have a buddy assigned to the new hire. The buddy should help them navigate the first 30 days, and be available later on as needed. Invest in reusable training materials for onboarding the engineers.

Consistent Screening During the Interview Process

Interviewing is an art. As a hiring manager, train your employees how to interview for a certain role via a phone screen or an in-person interview.

Hire the Right Talent

Skilled software engineers are always most interested in building code. As much as hiring a talented engineer is important, it’s more important to hire the right person — someone who will be a great fit on the team. You need quick learners, people who are comfortable with change, and people who can look at the big picture, even when it’s ambiguous.

Shared Tools

Companies invest in different tools for the same purpose across different groups. Investing in tools and sharing testing frameworks across groups is vital. This will help the engineering teams think about learning tools and focus more on building code on top of these tools. Investing in shared services — such as release management, builds, tools, and documentation — can help engineering teams scale.

Communication. Communication. Communication.

“In teamwork, silence isn’t golden; it’s deadly.” Mark Sanborn

Nothing beats in-person interaction. It helps build trust, and you can get to know each other more than just being virtual peers. At Perforce, each employee provides a brief blog about themselves (personal and professional background, hobbies, uniqueness) when they are first hired, and it’s shared over the Perforce intranet. Weekly video conferencing brings the entire team together. Having 1-on-1 interactions builds rapport to understand the challenges, successes, and opportunities together. We also facilitate travel across the globe, which helps team members get to know each other along with culture at specific sites.

Coding Standards

Consistency is the key metric when it comes to getting a handle on the code. As code is built up with several hands and heads touching it, it’s more important to have coding standards defined. It helps new developers have a consistent way of looking and understanding the developed code. And it helps the developers when they switch teams or work on other cross-functional projects.

Code Reviews

Code review should be necessary to enhance the overall code quality of the product. Having regular code reviews, unit testing, and preflight testing prior to submitting the code is important. It helps keep the sanity of the code intact. As teams are distributed across the globe, it also helps in distributing the knowledge. And it expedites the code review process, support, and maintenance of the code in a much wider manner.

Automation

Automation is the key to success when it comes to scaling effort and improving quality. Scaling the product, teams, and releasing at a faster pace is impossible, if automation is missing. Unit tests, regression tests, functional tests, and interoperability tests should all be automated to ensure that the focus is on trying actual uses cases and customer workflows.

Testing the Product at Scale

In an ideal world, every code change needs to have a unit test and code review. This definitely slows the development cycle to some extent. However, when hundreds of developers add or integrate with fully tested code, we’re adding more quality and reliability to the overall codebase. Framework-based automated testing also helps enhance testing across modules, which keeps them integrated and isolated at the same time.

How to Be an Effective Leader While Scaling Teams

  • Scale the team outside their current skill sets. And when failure comes with new tasks, embrace it.
  • Take every opportunity as a learning experience. Accept the challenge.
  • When you are doing things right, there will always be a bit of chaos. That’s okay.
  • Over communicate, especially when you have distributed teams across multiple geographies and time zones. 
  • Culture is the promise you make to your employees. Brand is the promise you make to your customers. Be transparent, and create a culture of trust and shared accomplishments across the teams.
  • Drink your own champagne for the latest version of the product.
  • Maximize the “golden hours.” Golden hours are when you have the most overlap between time zone differences. Rotate the meeting hours across time zones.
  • Look for the potential leaders in your team who can lead smaller teams. Then, scale up in terms of communicating, planning, and coordinating.

Scaling an organization is a skill. Until you do it, it’s hard to have a feel for it. I have lived through this every day in my job and have been learning as I go along. Apart from everything I already said, the most important thing is being uncomfortable in a comfortable situation. This will keep you up and running. You will keep scaling your teams in terms of growth, skill set, and innovation.