Skip to content
§
§ · journal

In-house vs outsourced. Decision matrix.

When to hire in-house engineers vs outsource to an agency: cost, speed, control, quality, and the stage-based model that gets it right.

Four axes, stage-based answer.

The in-house vs outsourced engineering decision turns on four axes (cost, control, speed, quality) and one variable the axes do not show: company stage. Pre-product-market-fit and under 1M ARR, an agency retainer at 4K to 12K monthly beats hiring on capability-per-dollar and avoids the 3-to-6-month ramp risk. Between 1M and 5M ARR, run a hybrid with one or two in-house engineers plus an agency for spikes. Between 5M and 20M, build a core in-house team of 3 to 6 with a specialty-layer agency on retainer. Above 20M, fully in-house engineering wins on continuity and total cost. The hidden costs each side carries are real and rarely surfaced in the comparison spreadsheet: in-house carries recruiting fees of 15K to 25K per role, 3-to-6-month ramp, and roughly 22 percent annual churn. Outsourced carries 3-month switching cost on agency change, context loss when team rotates, and vendor lock-in via custom architecture. Three hybrid patterns work consistently in the middle stages: Core plus Surge, Specialty Layer, and Pod model. The transition from agency to in-house succeeds when revenue is above 5M, the product roadmap is stable, the time horizon is three years plus, and an engineering manager is in place; without all four, stay hybrid longer.

Cost, control, speed, quality.

Cost is the axis founders look at first and read most wrongly. A mid-level full-stack engineer in the US costs 90K to 130K base plus roughly 30 percent in benefits, payroll tax, equipment, and overhead, giving 120K to 170K all-in. Senior runs 200K to 235K all-in. The same monthly spend (10K to 14K) buys you 100 to 140 hours of agency engineering with access to specialists across Shopify, Next.js, infra, security, and data engineering. Per-hour the in-house engineer is cheaper at scale; per-capability the agency wins until you cross a revenue threshold where you can afford a small team.

Control is what in-house actually buys you. In-house engineers attend your standups, share your slack channels, see customer tickets in real time, and absorb domain knowledge that takes 18 to 24 months to acquire. They prioritize what your product manager tells them to and switch contexts when your customer success team flags an outage. An agency, even a great one, runs to a contract and a sprint cadence; same-day pivots are possible but cost change-order conversations. For brands where the product is the company (most SaaS, most differentiated DTC), the control premium is worth real money.

Speed and quality are intertwined and easy to confuse. Speed-to-first-deploy on a known-pattern feature favors the agency: they have shipped this pattern many times, the boilerplate is ready, the engineer is senior. Speed-to-customer-impact, factoring in time-to-understand-your-business, favors in-house once they are past month six. Quality measured by code-review depth and post-launch defect rate is roughly equal at the senior level; quality measured by long-term maintainability favors whoever stays in the codebase longest, which is usually in-house if churn is low. The honest version: agencies are faster on the first 80 percent of any project; in-house engineers are faster on the last 20 percent and on iteration once the product is live.

Three hidden costs each side.

In-house hidden cost one: recruiting. A retained engineering recruiter charges 20 to 25 percent of first-year base salary, so 18K to 32K per hire at 90K to 130K base. Running the pipeline yourself costs 6 to 12 weeks of hiring-manager time, which for a CTO at a 3M-revenue brand is 30K to 60K of opportunity cost on focused product work. Either way the cost is real and recurring because of the second hidden cost: churn. Tech engineer voluntary turnover sits around 22 percent annually per the most recent Bureau of Labor Statistics data on technology occupations, meaning a five-engineer team re-hires one person per year on average. Replacement cost loaded for ramp and lost productivity is roughly 50 to 100 percent of the departed engineer's annual salary.

In-house hidden cost three: ramp time. New engineers take 3 to 6 months to reach productive contribution on a complex codebase, longer if the architecture is poorly documented. For the first two months they are net-negative productivity, consuming senior-engineer review time without shipping much. The hiring math founders run typically assumes month-one productivity; the real math is that the first six months of an engineer's tenure costs the same as their base salary in salary plus near-equivalent in lost senior time. This is fine if you plan for it and brutal if you do not.

Outsourced hidden cost one: switching cost. Changing agencies takes roughly 3 months: 4 weeks for the new agency to understand the codebase, 4 weeks of overlap with the outgoing agency, 4 weeks of velocity loss as the new team finds the unwritten gotchas. Switching cost two: context loss when the agency rotates engineers within their team. A senior who has run your account for 18 months knows your conventions, your customer's complaints, and your tax-quirk workarounds; a junior assigned next quarter to backfill knows none of that and will rebuild understanding on your dime. Switching cost three: vendor lock-in via custom architecture. A great agency builds clean handoff-ready code; a mediocre one builds code that only their team can extend, and the cost of that lock-in shows up when you eventually want to switch.

Both lists are real. The honest comparison reads: in-house has higher fixed cost, lower per-hour cost at scale, and high transition risk on hiring and churn. Outsourced has lower fixed cost, higher per-hour cost, and high transition risk on agency change and context loss. Neither is free of risk; the question is which risk profile fits your stage. Read the Shopify enterprise commerce case studies for examples of brands that landed each side of this call.

Four stages, four answers.

Pre-product-market-fit and under 1M ARR: agency only. The product is still changing weekly, the team is small (often founder plus one or two), and the cash discipline matters. A 4K to 8K per month agency retainer for 30 to 50 engineering hours covers the technical roadmap without committing to a fixed hire who may not match the product six months from now. A bonus: a good agency has shipped the patterns you need (auth, billing, admin, search) many times and will not re-invent them on your spend. At this stage every founder over-estimates how much engineering they need and under-estimates how often the spec will change.

Between 1M and 5M ARR: hybrid. Bring on one or two in-house engineers, typically a generalist full-stack hire and possibly a designer-engineer. Keep an agency on retainer at 5K to 15K monthly for project spikes, specialty work (replatform, performance, infra), and surge capacity when a launch window compresses. The in-house engineers carry institutional knowledge and customer-facing iteration speed; the agency carries capacity flex. This is the most efficient model for brands in the middle and where most operators we work with at Digital Heroes sit when they engage us for a web development retainer.

Between 5M and 20M ARR: build a core in-house team of 3 to 6 engineers with an engineering manager, plus a specialty-layer agency on retainer. The in-house team owns the product, the deployment, and the day-to-day. The agency covers performance work, security audits, data engineering, infrastructure migrations, and one-off projects that would derail the in-house roadmap. This stage is where most brands first hire a CTO or VP Engineering; the agency relationship reports to that person and is managed like any other vendor. Cost runs 50K to 110K monthly for the in-house team plus 8K to 20K for the agency layer.

Above 20M ARR: fully in-house engineering. A team of 8 to 20 engineers with multiple managers, dedicated platform and security people, and the budget to hire specialists directly. Agency engagements at this stage are surgical: a 60K project to ship a checkout extension, a 90-day engagement for a specific migration, a fractional staff engineer on retainer for a specialty domain. The fixed cost of the team is high but the per-output cost is the lowest of any stage, and continuity is unmatched. Most enterprise Shopify headless brands above 30M revenue run this model.

Three patterns, tested and named.

Pattern one: Core plus Surge. An in-house core team of two to four engineers handles daily work, with an agency on retainer that scales up for defined initiatives: a Shopify replatform, an international launch with Shopify Markets, a custom app build, or a quarterly performance sprint. Day-to-day cadence stays in-house; project velocity stays high. The retainer floor is usually 5K to 8K monthly with the option to scale to 25K plus when a project fires. This pattern is what most DTC brands between 3M and 12M revenue run; it gives you the cost discipline of in-house with the capacity flex of agency without paying for either at full price all year.

Pattern two: Specialty Layer. In-house generalists own product features; a specialty agency handles work where deep expertise is rare and expensive to hire as a full-time engineer. Common specialty layers: performance engineering (Core Web Vitals, edge caching, bundle optimization, the work web.dev documents in depth), security (penetration testing, SOC 2 prep, compliance), data engineering (warehouse, ETL, analytics infra on BigQuery or Snowflake), and platform work (Kubernetes, serverless migration, observability). Hiring a full-time engineer for any of these costs 200K plus all-in and they are 60 percent utilized; renting the expertise on retainer is dramatically cheaper.

Pattern three: Pod model. The agency dedicates a small pod (typically 1 senior engineer plus 1 to 2 mid-level engineers and a partial designer) who function as an extension of your in-house team. Pod members attend your standups, use your Linear board, sit in your slack, and report into your product manager or engineering manager. The agency handles HR, payroll, and replacement if a pod member leaves; you get team-like continuity without the headcount overhead. Cost runs 18K to 35K monthly per pod, depending on seniority and time commitment. This is the cleanest pattern for brands that need persistent capacity but cannot or do not want to add headcount.

Four signals in either direction.

Switching from agency to in-house succeeds when four signals fire together. Revenue is at or above 5M ARR so the fixed cost of a small team is comfortably below 20 percent of revenue. The product roadmap is stable with 12 plus months of clear strategic direction; an unstable roadmap forces in-house teams into rework loops that destroy morale and slow output. The business time horizon is at least three years; in-house engineering only amortizes over multi-year time scales because of the ramp and recruitment costs. And, most overlooked, you already have or are actively hiring an engineering manager who will run the team. Without management capacity the in-house team underperforms regardless of individual engineer quality, slipping into reactive work and missing the strategic projects that justified the hiring.

Switching from in-house to agency happens for less happy reasons. Cash crunch where 100K plus monthly in salary is no longer sustainable. Loss of senior engineering leadership where the manager and the senior engineer both leave within a quarter and rebuilding takes longer than the runway allows. A pivot where the need is suddenly project-based and not steady-state: rebuilding around a new vertical, sunsetting a product line, or running an experimental side bet that should not have permanent staffing. In each of these cases the right move is to keep one or two strongest in-house engineers as institutional memory and bring an agency in to handle the rest while the business stabilizes.

The transition itself, in either direction, follows the same three rules. Document everything before the change: architecture diagrams, runbooks, why-we-built-it-this-way notes that live in GitHub readmes and a shared Notion or wiki. Overlap for 90 days minimum: the outgoing team stays paid and engaged while the incoming team learns. Keep the outgoing relationship as escalation backup for six months at a small retainer; the cost is small compared to the velocity loss if the new arrangement hits an unknown-unknown and there is no one to call. Related reading: when to hire a Shopify Plus agency for the agency-side version of this decision focused on commerce engagements.

Six answers.

When does it make sense to hire engineers in-house vs use an agency?

Stage-based answer. Pre-product-market-fit and pre-1M ARR, use an agency: a 4K to 12K per month retainer gives you specialist access without the 3-to-6-month hiring ramp and 22 percent annual churn risk that early in-house teams carry. Between 1M and 5M ARR, run a hybrid: one or two in-house engineers for daily work plus an agency retainer for project surges. Between 5M and 20M, build a core in-house team of 3 to 6 engineers and keep an agency on retainer for specialty work (performance, security, data). Above 20M, fully in-house engineering with very occasional agency engagement for specific deliverables. The crossover where in-house economics win is around 5M ARR with an engineering manager already in place.

What does an in-house ecommerce or SaaS engineer cost in 2026?

Total cost of an in-house engineer is roughly 1.3 to 1.4 times base salary once you load benefits, payroll tax, and overhead. Mid-level full-stack engineer in the US: 90K to 130K base, 120K to 170K all-in. Senior: 150K to 180K base, 200K to 235K all-in. Staff or principal: 200K plus base, 260K plus all-in. On top of that, recruiting fees run 15K to 25K per role if you use an agency recruiter, or 6 to 12 weeks of internal hiring-manager time if you run the pipeline yourself. Ramp time to productive contribution is 3 to 6 months. The hidden cost most founders miss is replacement: tech engineer churn averages around 22 percent annually, so plan to re-hire one in five engineers each year.

What does an outsourced engineering retainer cost in 2026?

Three retainer tiers in 2026. A small team partnership runs 4K to 15K per month for 20 to 60 engineering hours, suitable for brands under 2M ARR or for filling specific gaps. A dedicated pod runs 15K to 40K per month for one to three engineers working primarily on your account; this is the standard pattern between 2M and 10M ARR. Project-based engagements run 50K to 200K depending on scope, typically 8 to 16 weeks. The fixed cost is lower than in-house and there is no severance or 401K matching, but the cost-per-hour of senior engineering time is higher than in-house at scale, and uncapped scope can blow the budget if change-order discipline is weak.

Is hybrid (in-house + agency) better than either alone?

Yes for brands between 1M and 20M ARR. Three hybrid patterns work consistently. Core plus Surge: an in-house core team of two to four engineers handles daily work, with an agency retainer that scales up for big initiatives like replatforms or international launches. Specialty Layer: in-house generalists own the product roadmap while a specialty agency handles performance, security, data engineering, or platform work where deep expertise is rare and expensive to hire. Pod model: an agency dedicates a pod of two to three engineers who function as an extension of the in-house team, attending standups and using the same Linear board. The Pod model is the cleanest for brands that need flexible capacity without the headcount overhead.

When should we switch from agency to fully in-house?

Four signals together. Revenue above 5M ARR so the fixed cost of a team makes sense. A stable product roadmap with 12-plus months of clear strategic direction; an unstable roadmap punishes in-house teams with rework and morale loss. A time horizon of at least three years for the business; in-house only amortizes over multi-year time scales. And, most overlooked, you already have or are hiring an engineering manager who will run the team. Without management capacity the in-house team underperforms regardless of individual engineer quality. If any of these four is missing, stay agency or hybrid longer until it is in place.

How do we manage the transition without losing velocity?

Run both for 90 days. Document architecture, deployment runbooks, and the operational why-behind-decisions in writing before the agency exits, not after. Hire the engineering manager first if you do not already have one; an in-house team without management slips into reactive work within 30 days. Keep the original agency on a smaller retainer (3K to 6K per month) for the first six months post-transition as escalation backup; the cost is small compared to the velocity loss from a clean break gone wrong. Most transitions fail not in execution but in the manager-hiring step that gets skipped because everyone is busy.

In-house, agency, or both.

Our web development and SaaS engagements include full-build, retainer, pod-model, and hybrid arrangements designed around stage. Scoped quote in 48 hours.

Published .