Engineering Enablement

Upskilling vs. Hiring: How to Make the Call Faster

By James Nakamura

Upskilling vs. Hiring: How to Make the Call Faster

When a skill gap appears on your engineering team — a new infrastructure domain you're entering, a language your codebase is migrating to, a specialization that's become critical as your system scales — the default instinct in most organizations is to open a headcount request. It's a familiar process. Everyone knows how hiring works.

The problem is that hiring for senior technical roles is slow, expensive, and frequently underperforms expectations. The average time to fill a senior engineering role sits in the 4-6 month range depending on the specific specialization and your recruiting infrastructure. That's 4-6 months during which the gap remains open, the team carries the load around it, and onboarding hasn't started. By the time a new hire reaches full operational effectiveness, you're often 9-12 months from when the gap was first identified.

In many cases — not all, but many — an existing team member can close a targeted skill gap in 6-8 weeks with a well-designed learning path. The math on these two timelines deserves more attention than it usually gets.

The Framework: Four Questions Before Opening a Req

Before the default hiring response, four questions clarify whether the gap is a hiring problem or a development problem:

1. Is the gap learnable in a reasonable timeframe? Some skills require years of accumulated operational experience and cannot be meaningfully accelerated. A principal engineer's judgment about system architecture at scale is not a 6-week learning path. But many skill gaps that feel complex are actually learnable in targeted ways. A backend engineer who needs to develop operational fluency with a new observability stack, or extend their knowledge into a new cloud service area, or learn the specifics of a new database storage model — these are learnable gaps with a clear curriculum and a manageable timeline. The key distinction is between competency development (learnable) and accumulated expertise (requires time and experience).

2. Do you have an existing team member with the adjacent foundation? The fastest path to closing a targeted skill gap is usually an engineer who already has strong fundamentals in the adjacent domain. A senior backend engineer learning distributed tracing specifics is building on a foundation; the gap is contextual, not foundational. An engineer without distributed systems experience learning distributed tracing is a different project entirely. Identifying who on your team has the adjacent foundation for the gap in question is the first step in assessing whether development is a realistic path.

3. How much organizational context does the gap require? This is where the hiring calculus often goes wrong. Organizations underestimate how much of a senior engineer's effectiveness comes from organizational context — knowing the history of architectural decisions, understanding the team dynamics, having relationships with the people in adjacent services. A new hire brings a blank slate of organizational knowledge and rebuilds it over months. An existing engineer developing a new skill brings their full organizational context immediately. For gaps that are deeply intertwined with how your specific system is built and operated, the organizational context advantage of an internal candidate is substantial.

4. What is the risk profile if the gap remains open for 3 months versus 6 weeks? The urgency question shapes the decision. If the gap is creating immediate operational risk — a critical service area with only one engineer who understands it, a security domain that needs coverage now — 6 weeks of learning may still be the right call, but it needs to be a high-priority track, not a side project. If the gap is strategic (a domain your roadmap enters in two quarters), the development timeline is more comfortable.

When Hiring Is Clearly the Right Answer

There are cases where hiring is unambiguously the better path, and being honest about them matters as much as recognizing the development cases.

When you need a function that doesn't exist in your team's competency base at all — not a gap in an existing domain, but a fundamentally new capability area your team has never built. A team of product engineers that needs to build a machine learning pipeline for the first time isn't facing a learning path problem. They're facing a capability acquisition problem. You hire an experienced ML engineer, and the rest of the team learns the domain over time with expert guidance.

When the gap is at the level of organizational leadership, not technical execution. A VP Engineering or Head of Platform who can lead a team of 40 engineers through a major infrastructure migration brings experience and judgment that can't be replicated by promoting an existing engineer into the role without the right preparation. Leadership development is a longer arc than skill development.

When the business timeline for the gap is measured in weeks, not months, and you need someone who is already operational in the domain on day one. This is a real constraint for some situations — an acquisition requiring rapid integration, a compliance deadline demanding domain expertise immediately. In those cases, development paths aren't the answer regardless of the theoretical timeline advantage.

The Hidden Cost of the Hiring Default

Beyond the timeline math, the hiring default has a morale and culture cost that shows up indirectly but consistently. Engineers who see skill gaps addressed by adding new headcount rather than developing existing talent read a signal about organizational values: that growth at their level is constrained, that the organization's investment in them is limited, that when something new comes along the instinct is to hire rather than develop.

This dynamic is most acute for mid-level engineers who are ready to step into senior or lead roles. They're often the engineers closest to the skill gap — motivated, capable, with the adjacent foundation — and they're also the ones who watch most carefully whether the organization is investing in their development or hiring around them.

We're not arguing that retention concerns should override operational needs. The point is that the development-versus-hiring decision has a culture multiplier: organizations that consistently choose development over hiring when development is genuinely feasible tend to retain the engineers who have development potential. Organizations that default to hiring tend to accelerate the departure of those engineers, creating a cycle that increases future hiring needs.

Making the Call Faster

The delay in making this decision is often the most costly part. Engineering leaders who sit on an open gap for two months debating headcount before running the development analysis are losing both paths — the development window has compressed, and the hiring process hasn't started.

The framework that moves fastest: as soon as a material skill gap is identified, run the four questions in parallel with opening a headcount exploration. Don't sequence them. The development assessment should be complete before the job req is finalized, not after. If the development path is viable, you'll close the gap faster than the hire would have. If it's not viable, you haven't lost time on the hiring process.

This requires having the skill gap clearly defined before the conversation starts. A vague "we need someone who knows Kafka" is harder to assess against the four questions than "we need operational depth in Kafka consumer group management specifically in our high-throughput event processing service." The more specific the gap definition, the faster you can assess whether it's a development problem or a hiring problem.

The workflow data your engineering organization produces — PR review patterns, incident escalation chains, ticket ownership gaps — is one of the best inputs for getting to a specific gap definition quickly. The escalation pattern that showed up in three incidents isn't "we need more distributed systems experience." It's "we need two more engineers with operational depth in our specific distributed transaction processing layer." One of those is an open headcount req. The other is a targeted 6-week learning path for the engineers who already own adjacent code.

More from Tunlai Insights

All articles