Building a software engineering team may be the most exciting and scary step as a manager. You may be a first-time founder, an engineering manager tasked with building your own team, or a lead engineer joining a small team that is hiring. In any case, there's no reason to fear and every reason to embrace the challenge.

Strategies and Trade-offs

Building a team is like a problem-solving exercise, similar to other endeavors in business and technology development. There are strategies, obstacles and opportunities. Much of the success depends on the early strategies and success in execution of those strategies.

The strategy to build a team should be aligned with the strategy to build the company’s products and the overall business model.

The famous tradeoff is “Good, Fast or Cheap. Choose One”. In technology, like a take-out restaurant, you get to choose one, hope for a second and sacrifice the third.

  • “Good” refers to the quality of the product produced by the team which includes the quality of the customer experience, data, algorithms, operations and scalability, minimal technical debt, and other factors.
  • “Fast” refers to the speed and efficiency to achieve some product or technology goal. There is always a lower bound on speed based on the complexity of the problem and communication channels within the team. 1
  • “Cheap” refers to the cost of the work, mostly composed of compensation to team members, system operation costs, cloud-service fees, other hardware and software license fees.

The strategy of which tradeoffs to choose should depend on the company’s current stage of development, which falls into 3 categories for the purpose of this discussion:

  • Type A: Early and disruptive “start up”. This is an early stage start-up with little or no brand recognition and nothing to maintain in terms of reputation. The advantage for this stage should be in speed to market, not necessarily quality. In some cases, a disruptive product has lower quality than a similar incumbent product, but has some other advantage such as cost. In other cases, the advantage is being first-to-market, speed is all important, and even cost may be sacrificed.


    • Typically the choice is: Fast.
    • Strive for: Cheap.
    • Trade-off: Lower quality
  • Type B: Established brand “start up”. Unlike the previous disruptive start-up, this company has a well-established reputation and a brand that need to be protected. Speed to market is typically important because of competitors, but quality is more important.
    • Choice: Good.
    • Strive for: Fast.
    • Trade-off: higher cost
  • Type C: Established company with a strong brand and large, complex technology and product offerings. This company is a late stage startup or a public company that must provide high quality products to protect its brand, retain its customers, and maintain or improve its market share. Ideally it could also strive for speed or low-cost, but in practice, the company has likely become bloated and is less able to adapt and change. It cannot move quickly because of communication network effects, which increase as teams grow and the number of teams increase, and it cannot reduce costs because of inherent complexity in its products. 1, 2
    • Choice: Good
    • Trade-off: higher cost

Applying the Strategies

Now we need to align the hiring strategy with the company type or stage. Overall, a hiring manager can choose to target different experience levels in each role. Companies typically use labels to indicate role level in increasing order, as “junior”, “senior”, “staff”, “principal”, as in “senior software engineer”, etc. Larger companies may use a numbering system. Generally the more experienced individuals can command higher compensation and have more potential job opportunities. They also tend to be more productive and more able to lead other technical team members.
Less experienced individuals tend to need more guidance. Keep in mind, that “experience” does not always depend on years in a relevant job. Many individuals are able to show the capabilities that can outpace on-the-job time, through outside work, training, course-work, advanced degrees, and general aptitude. Lastly, self-motivated individuals tend to outshine others who are only motivated by external rewards and compensation.

Let’s explore some guidelines by type of company.

Type A companies typically want to hire a strong “founding team.” It could start with the founders themselves if they have a background in technology. Think of the company started in the garage of the founder, while she builds a team of other engineers around her. With the initial team usually formed from the founders’ own networks, hopefully they are either experienced or highly motivated so they can develop a product quickly.

With a little traction and maybe an initial product out in the market, the founders then need to hire people they do not already know. By this point, they may be able to attract new employees by offering some equity in the company in the form of stock options. It is usually easiest to hire less experienced engineers at this point, who are more tolerant of the risk of an early-stage startup. If the founders can mentor them well, then they can be successful and move quickly.

Type B companies have the most to gain with a strong engineering team and the most to lose if the team fails to deliver. These companies will have some funding and be able to attract more experienced workers to develop a high quality product. In most cases, this will require strong compensation packages because there’s still likely a lot of long-term risk for the business as it tries to establish the product in the marketplace.

Type C companies have the most funding, the most traction in the market and least risk compared to the others, but the most pressure to maintain or improve the product quality. It is best to target experienced individuals to lead teams that comprosied of engineers with a diverse set of levels of experience. It is worth hiring some junior or mid-level engineers that can grow with the team. This puts the most onus on the team leads and engineering managers to mentor, train, and find effective ways to manage the team.

Strategies of Job Seekers

Hiring is a two-way street, both employers and potential employees need to find the right mutual fit. If you are reading this and wondering how you can target your job search, it may help to flip the strategies above on their head.

Are you willing to tolerate a lot of risk that a business may fail? Try a Type A startup, where you may learn the most and make a large impact. If not, you may want to apply to Type C established companies.

If you are highly-experienced, any of the company types can be a good target. If not, you need to find a company that is willing to train you and help you grow into the role.

Summary

  • Building a technology team is much like any other problem-solving task or business endeavor
  • You need to first understand your strategy in the context of “Good, Fast, Cheap”, choose one.
  • Next you need to understand the type or stage of your business, and your needs at this time.
  • Finally you need to align those needs with how you focus on roles and levels of experience to hire.

References

  1. Mythical Man-Month, see on wikipedia
  2. Parkinson’s Law, see on wikipedia

Disclaimer This article is based on my opinions and on publicly available information and on my general experience of over 20 years in the software technology industry. They are not based on any private information from any current or past employer. All opinions are provided without any claims or guarantees of fitness for any use, purpose, liability or recommendations.