Comparison
In-house team vs Outsourced development
Two legitimate ways to get software built: employ the engineers yourself, or contract the capability from outside. The deciding factors are whether the capability needs to be permanent, whether you can genuinely hire and keep it, and how much of your business knowledge has to stay in the building.
What the choice is actually between
Almost nobody arrives at this question in the abstract. There is a roadmap that is not moving fast enough, or a system that needs building, or a capability the organisation does not currently have, and the question is whether to solve it by employing people or by contracting a supplier. Both answers work. Both answers also fail routinely, and they fail for reasons that are predictable enough that you can decide in advance which failure you are more exposed to.
The difference is not really quality, and it is not really cost. Good engineers exist in both models and bad ones do too. The difference is what you are committing to and where knowledge accumulates. An in-house team is a permanent capability: fixed cost, slow to assemble, slow to change, and it builds up understanding of your business every month it exists. Outsourced development is contracted capacity: faster to start, adjustable in both directions, and knowledge only stays with you to the extent that you deliberately arrange for it to.
We should be plain about our position, because it affects how you should read this page. Yarqat is the outsourced option. We supply teams and we build software for other organisations. That means the self-interested answer here is obvious, and you should be suspicious of any page from a supplier that reaches it. So the in-house case below is written as strongly as we can honestly make it, because there are whole categories of work where employing the engineers yourself is straightforwardly the better decision, and we would rather say so than take on an engagement that should never have existed.
The short answer
Build in-house when software is the product, or when the capability is going to be central to how the business operates for years, and you can actually hire and retain the people. Those two conditions travel together and both matter. If the thing being built is what your customers buy, if it will be iterated on indefinitely, and if the knowledge of how it works is part of your competitive position, then that capability belongs to employees. Contracting it out means renting something you will need permanently, and paying to rebuild context every time the arrangement changes.
Outsource when the need is real but the permanence is not. A defined programme with an end date, a specialism you need continuously but not full time, a spike in capacity while a funded plan is waiting, a capability you do not have and do not want to own forever, or a gap that must be covered while recruitment runs. In those situations, hiring permanently is a decision you have to unwind later, and everybody involved knows it during the interview. Contracting is the honest shape of the need rather than a compromise on it.
The answer most organisations actually land on is both, deliberately arranged. Permanent staff hold the parts of the system that carry the domain knowledge and the product direction, and external capacity carries the work that is bounded, specialist or temporary. That is not a fudge. It is what happens when a leadership team is honest about which parts of the work are permanent and which are not, and it works when the split is decided on purpose rather than by whoever happened to be available. What does not work is either extreme applied on principle: refusing all external help while vacancies stay open for months, or outsourcing the core of the product and then wondering why nobody internally can explain how it works.
Side by side
| Dimension | In-house team | Outsourced development |
|---|---|---|
| What you are committing to | Employment. Salaries, employer costs, equipment, tooling, management overhead and a commitment that continues whether the roadmap is funded this quarter or not. | A contract. Committed for a term with a notice period, adjustable at agreed points, and it ends when you decide it ends rather than through an employment process. |
| Time to working capability | Months in most markets. A search, a hiring process, an offer, a notice period, then onboarding. The clock does not start when you approve the headcount, it starts when the right person says yes. | Weeks. Scoping, agreeing terms and access, then onboarding. The people already exist, so the search and the notice period are removed from your timeline. |
| Cost structure | Largely fixed, and it persists through quiet periods. The visible salary is only part of it: employer contributions, benefits, recruitment fees, equipment, licences, management time and the cost of vacancies while you search. | Variable and contracted. The rate per person is usually higher than a salary alone looks, and it carries recruitment, bench risk, management and tooling inside it. What you stop paying for is capacity you are not using. |
| Scaling up | A hiring cycle, repeated for each role, competing with every other employer for the same people. Approving headcount and filling it are separated by months. | A conversation and a start date, constrained by the supplier having the right person rather than by the market having one. |
| Scaling down | Difficult, slow and personally costly for the people involved. Reducing a permanent team is a formal process with real human consequences, and everyone knows it. | A notice period agreed in advance. The flexibility is contractual rather than a matter of goodwill, which is precisely why it should be agreed at the start and not when you need it. |
| Where domain knowledge accumulates | With people who stay. Understanding of why the pricing logic has that exception, and which part of the system everyone is careful around, compounds and remains in the organisation. | With the engagement, and only to the extent that you arrange it. Continuity of the same people, written documentation and shared code review are what keep it. A rotating arrangement loses it every few months. |
| Proximity to the business | High. Engineers overhear the sales call, sit in the operations meeting and understand the customer complaint before it reaches a ticket. That is a real advantage and it is hard to reproduce from outside. | Depends entirely on how the engagement is structured. Embedded teams in your standups and your tools get close to it. Arm’s-length delivery against a written specification does not. |
| Access to specialisms | Limited by what you can justify employing full time. A capability needed one day a week is hard to hire for and easy to lose once hired, because the person gets bored. | A genuine strength. You can buy a fraction of a specialist continuously, or seniority you could not justify as permanent headcount, without inventing a full-time role for it. |
| Who owns delivery | You do, completely. Your leadership, your priorities, your process, your quality bar, and your problem when any of those is missing. | Varies by model. Staff augmentation leaves delivery ownership with you. A dedicated team owns how the work gets done while you own the roadmap. A fixed-scope project puts delivery with the supplier. |
| Recruitment and retention burden | Yours, permanently. Sourcing, interviewing, onboarding, career development, salary review and the cost of replacing anyone who leaves, which for a senior engineer is substantial and rarely counted. | The supplier’s. Their bench, their retention problem, their cost of replacing someone. Your equivalent exposure is the risk of people being swapped, which is why named individuals and an agreed replacement process matter. |
| Security and access control | Simplest posture. Employees under your own vetting, your devices, your policies, and an access model your auditors already understand. | Workable but it must be designed. Named individuals in your identity provider, defined data access, agreed processing locations, and a documented position under UK GDPR where personal data is involved. |
| Quality control mechanism | Management, hiring standards and code review inside one organisation. When it slips, the fix is a management or hiring problem. | Contract plus visible output. The reliable safeguards are that the work goes through your review process in your repositories, and that you can see progress weekly without asking for a status report. |
| Open-ended product work | The stronger fit by some distance. Software that will be iterated on indefinitely benefits from people who accumulate context and are still there in three years. | Workable with continuity of the same team, and poor without it. Open-ended work carried by rotating contractors pays the context rebuilding cost repeatedly and never sees the compounding benefit. |
| Defined programmes with an end date | An awkward fit. Hiring permanently for eighteen months of work means either finding more work afterwards or unwinding the team, and candidates can usually tell during the interview. | The natural fit. Staffed for the programme, scaled down at the end with agreed notice, with the knowledge documented while the people who hold it are still there. |
Choose In-house team when
- Software is the product. If what your customers buy is the software itself, the engineering capability is not a support function you can rent, it is the business. Building that with employees who stay is not a preference, it is the only arrangement that makes sense over any real time horizon.
- The capability has to be permanent. If you will be building, running and improving this system for the next five years, employing the people who do it is cheaper and safer than contracting the same capacity indefinitely. Renting something you need forever is a poor trade, and we will say so rather than sell you a rolling arrangement that quietly becomes permanent.
- The domain knowledge is the moat and it must not leave. In businesses where the value is in deeply understood rules, pricing, underwriting, clinical or operational logic accumulated over years, that understanding belongs with employees. Anything contracted can end, and the knowledge walks out with the contract unless you have engineered against it.
- You need engineers in the room with the business every day. Some products are built through constant informal contact: an engineer who hears the customer complaint directly, who challenges the operations process rather than implementing it as described, who notices in a meeting that the requirement contradicts something already in the system. External teams can get close to this and the good ones do, but employees are simply there in a way that is difficult to reproduce.
- You are building something you will iterate on forever. Continuous product work rewards accumulated context more than almost anything else. The value of an engineer on your specific system rises steadily with time on it, and permanent employment is the arrangement most likely to keep that person for long enough to collect the return.
- You can actually hire, and you can keep people. This is the condition that decides whether the in-house case is real or theoretical. If your market, location, salary bands and employer brand let you attract the engineers you need in a sensible timeframe, and your attrition is low enough that the team compounds instead of resetting, build in-house. If vacancies have been open for months and the plan is quietly bending around the people who exist, you do not currently have this option, whatever the strategy says.
- You have someone senior to lead them. A team of engineers with no technical leadership is not a capability, it is a set of individuals doing the tickets in front of them. If you have a strong engineering lead with capacity to set direction, hold a quality bar and develop people, in-house works well. If you do not, hiring engineers first and leadership later reliably produces a codebase that has to be argued about afterwards.
- Security or regulatory constraints make external access genuinely hard. Some environments have real limits on who may touch production data, where processing may happen, what vetting is required and which devices may connect. Where those constraints are genuine rather than habitual, the friction of granting and evidencing external access can outweigh the flexibility, and employing the people is the simpler, defensible answer.
- Continuity through change matters more than flexibility. If the organisation goes through acquisitions, reorganisations and leadership changes, a permanent team is the thing that remembers why the system is the way it is. Contracts end during upheaval, often for reasons unrelated to the work, and the knowledge goes with them.
Choose Outsourced development when
- You need capacity now and hiring cannot supply it in time. A funded plan waiting on a search that keeps not concluding is a real cost, paid weekly, and it rarely appears in any budget. External capacity starts in weeks because the search and the notice period are already behind it.
- You need a capability you do not have and do not want permanently. A one-off data migration, a mobile application maintained reluctantly by web developers, a security review, an infrastructure layer that only gets attention when it breaks. Hiring for these means inventing a permanent role for temporary or partial work, and then finding something for that person to do afterwards.
- The work has a defined end. Migrations, platform rebuilds, regulatory deadlines and integration programmes need substantial capacity for a period and then do not. Contracting matches the shape of the need honestly. Hiring for it creates a decision you have to unwind later, at cost, and usually at the worst moment.
- You are covering a gap while you hire. These are not alternatives that exclude each other. Running external capacity alongside active recruitment keeps delivery moving during the months a search takes, and the arrangement can be designed from the start to hand over to the permanent team as they arrive.
- You need seniority you cannot justify full time. A principal-level engineer, a specialist architect or someone who has built the exact thing you are attempting before may be needed for a fraction of the work rather than all of it. Buying part of that person’s time is available to you. Employing them for a role that only needs them occasionally is not, and they will leave anyway.
- You need an outside opinion on something your own team is too close to. Architecture that has drifted, a delivery process everyone has stopped questioning, a build-or-buy decision where internal preferences are already fixed. External judgement is not automatically better, but it is not invested in the previous decisions, and that is sometimes exactly what is needed.
- You are building software properly for the first time and have no engineering organisation. A funded business with clear product direction and nobody to build it can get a product built and running while permanent hiring proceeds in parallel. The condition that makes this work is that someone internally genuinely owns the roadmap, and if that person does not exist, fix that before buying anything.
- Your demand is spiky rather than steady. If the workload doubles for a quarter and then halves, permanent headcount sized to the peak is expensive for most of the year and sized to the trough is a permanent bottleneck. Contracted capacity that flexes in both directions fits that pattern better than any employment arrangement can.
- You have tried to hire and the market will not supply it at the level you need. This is worth stating without embarrassment because it is extremely common. Some specialisms, some locations and some salary bands simply do not produce the candidates. Continuing to hold the plan hostage to a search that is not converging is a decision too, and usually a worse one than contracting the capability.
The cost structure, without inventing numbers
Any comparison that reaches for figures here is guessing, because salaries, rates and employer costs vary by market, seniority and specialism, and they change. What is stable is the structure of the two commitments, and that is what should decide it.
An in-house engineer is a fixed cost that continues regardless of what the roadmap needs this quarter. The salary is the visible part, and it is not the whole part. Employer contributions and benefits sit on top of it. Recruitment carries a cost whether you use an agency or absorb the time internally. Equipment, software licences and tooling are per person. Management, review and career development are real time taken from someone senior. Vacancies cost you delivery for every month they stay open, and departures cost you the recruitment again plus the context that left. None of that is an argument against employing engineers. It is an argument for comparing the total cost of the arrangement rather than the salary line, because the salary line understates it consistently and in one direction.
An outsourced engineer is a variable cost with a higher headline rate, and the rate is higher for reasons that are not all margin. It carries recruitment, the risk of paying someone between engagements, management, tooling, holiday and sick cover, and the supplier’s own overhead. What you are actually buying with the difference is the removal of the fixed commitment and the removal of the hiring cycle. Whether that is worth paying for depends on how confident you are that the work continues, and confidence is the correct word: many organisations are more certain of their roadmap in the plan than the following year justifies.
The comparison people get wrong is treating an unfilled vacancy as free. An approved role that has been open for months costs the delivery it would have produced, and it usually costs it silently, appearing as a plan that keeps slipping rather than as a line anyone reviews. When you compare a rate against a salary, compare the rate against the salary plus the true employer cost plus the expected time to fill the role plus the probability that it is not filled at all. That comparison is harder and much more useful, and it sometimes concludes firmly in favour of hiring, which is the point of doing it honestly.
One more structural point that is easy to miss. Fixed costs and variable costs behave differently under uncertainty, not just on average. If the funding is committed for a year rather than forever, if the demand is seasonal, or if the programme could be cancelled by a decision above you, then a commitment you can adjust is worth more than a lower unit cost you cannot. If the work is certain and permanent, the reverse is true and the fixed commitment is the cheaper way to buy it.
Knowledge, continuity and the thing that actually decides this
If there is one factor that separates good outcomes from bad in both models, it is continuity of the people. Not the employment status, the continuity. An engineer who has been on your system for a year is dramatically more effective on it than a comparably skilled engineer who arrived last month, and that gap is mostly context: knowing why a decision that looks wrong was correct at the time, which integration misreports its own behaviour, which part of the schema everybody is careful around, and what the business actually means by the word it uses for a customer.
In-house employment is the arrangement most likely to produce that continuity, and that is its strongest structural advantage. It is not a guarantee. A permanent team with high attrition loses context just as thoroughly as a rotating supplier does, and a lot of organisations that believe they have accumulated knowledge in fact have one person holding it while everyone else works around them. If your retention is poor, the main advantage of hiring in-house is not actually operating, and the honest comparison is closer than the strategy assumes.
Outsourcing loses knowledge by default and keeps it only when the arrangement is designed to. The controls are unglamorous and they work. Insist on named individuals rather than roles, so a substitution is visible instead of silent. Require an interview and a paid overlap before any change of person. Keep the work in your repositories and your review process so your own engineers see the code as it is written rather than at handover. Have documentation and architecture decisions written as the work happens instead of promised for the end. Refuse to let any system become the private property of one engineer, external or internal, and treat it as a defect when it happens.
The test we would apply, whichever model you choose, is this: if the person or the team who knows the most about a system stopped tomorrow, what would happen. If the answer is that delivery halts for a month, then the knowledge is concentrated in a way that has nothing to do with employment status and everything to do with practice. Fixing that is worth more than the in-house versus outsourced decision on its own.
There is a related trap on the outsourcing side worth naming explicitly. An arrangement that produces working software while leaving nobody internally able to explain how it works is a dependency, not a supply of capacity. That is a failure of the arrangement rather than an inevitable property of contracting, and the way to avoid it is to require, from the first week, that you could end the engagement with notice and be left with a running system your own people can operate. If that is not true at every point, the engagement has a problem regardless of how the delivery looks.
Speed, and what a hiring cycle really costs in time
The time difference between the two models is larger than most plans allow for, and it is the factor most often underestimated in board papers. Approving a headcount is not the start of capability. The sequence is writing the role, sourcing candidates, screening, interviewing, deciding, negotiating, an offer, a notice period that is frequently months for senior people, then onboarding. Any one of those steps can restart the whole thing when a preferred candidate declines. For senior and specialist roles, the honest estimate from approval to productive work is measured in months, and that is when the process goes well.
Contracted capacity removes the search and the notice period, because those already happened. What remains is scoping, agreeing terms, arranging access and onboarding. The constraint moves from the market having the right person to the supplier having them, which is a smaller and faster constraint but not a nonexistent one. A supplier who says yes to every specialism immediately is describing a sales timeline, and the reasonable answer to a request for an unusual skill set is sometimes that it will take a few weeks to introduce the right person.
Access is the step that is consistently underestimated on the outsourced side, and it is usually the client who is the bottleneck rather than the supplier. Accounts have to be raised, permissions approved, security reviews completed, devices agreed and environments made to work for someone who has never run the codebase. Where this is prepared before the start date it takes days. Where it is discovered in week one, it can absorb most of the first fortnight, which is expensive and entirely avoidable.
Productivity is a separate question from starting, in both models, and it depends far more on the state of what people are joining than on their employment status. A clean codebase with tests, documentation and a working deployment pipeline is fast to join for anybody. A large system with no tests, tribal knowledge and a manual release process is slow to join for anybody, including the excellent engineer you just hired permanently. If you want new capacity to be productive quickly, the highest-value preparation is usually improving the thing being joined rather than choosing between the two models.
Control, security and regulated environments
Control is the argument most often made for building in-house, and it is frequently made imprecisely. Employment does give you a simpler and more direct set of controls: your vetting, your devices, your policies, your access model, an audit trail your own auditors already understand, and the ability to change what someone is working on this afternoon without a commercial conversation. Those are genuine and they should be weighed.
What employment does not automatically give you is quality, security practice or delivery discipline. An in-house team with no code review, no test coverage and a manual deployment process is not more controlled than an external team working through your pull request process into your CI. It only feels that way because the people are yours. The controls that actually protect you, least privilege access, review before merge, automated checks, audit logging and a defined process for granting and revoking access, are model-independent, and they are the ones worth being strict about.
External access does have to be designed rather than assumed. The workable position is that supplier engineers exist as named individuals in your identity provider, with permissions granted through your own access controls and revoked through your normal leaver process the day someone rolls off. Work happens in your repositories, your cloud accounts and your CI, so there is no supplier environment to be released later. Where personal data is involved, the arrangement should be documented properly under UK GDPR, including which party is controller and which is processor, where processing happens and what the engineers may see. Where there are constraints on production data, on device management or on the location of the people, those belong in scoping rather than in a surprise during delivery.
Some environments make external access genuinely hard, and it is worth distinguishing those from environments where it is merely unfamiliar. If a regulator, a contract or a customer requires specific personnel vetting, specific processing locations or restrictions that no external arrangement can satisfy, then the constraint decides the model and no engineering argument moves it. That is a legitimate reason to build in-house and we would tell you so directly. But a great deal of what gets described as a security objection is habit rather than requirement, and the way to tell the difference is to write down the actual rule and check whether an external team could satisfy it. Often they can, with an arrangement that costs some setup effort and then works.
One control question deserves an unambiguous answer. Intellectual property in contracted work should be assigned to you on creation rather than on final payment, and the supplier’s own engineers should be under agreements that make that assignment real rather than nominal. If a supplier cannot show you that chain when your counsel, an investor or an acquirer asks, that is a reason to be concerned about the supplier, not about outsourcing as a model.
The hybrid, which is what most organisations actually run
Framing this as a binary makes the page cleaner and the decision worse. In practice, most organisations that build software of any size run a mixture, and the ones that do it well have decided the split deliberately rather than accumulating it by accident.
The split that tends to work divides the work by permanence and by proximity to the domain. Permanent staff hold the parts of the system where the business logic lives, where the decisions are frequent and consequential, and where the accumulated understanding is the point. External capacity carries work that is bounded, specialist, temporary or peripheral to the domain: a migration with an end date, a mobile client, an infrastructure and delivery layer, a data pipeline, a period of extra throughput on a funded programme. The principle is simple to state and harder to hold: do not contract out the part of the system you most need to understand.
The version that fails is the mirror image, and it is common enough to be worth warning about. An organisation outsources the core product because it is the largest piece of work, keeps a small internal group for coordination, and discovers a year later that nobody employed by the company can explain how the thing works or estimate a change to it. At that point the supplier relationship has stopped being a choice, which is bad for the client and, over time, bad for the supplier too, because engagements held together by dependency rather than value are the ones that end badly.
There is also a good version of the transitional hybrid, where external capacity is explicitly there to be replaced. You run a team to keep delivery moving while recruitment proceeds, and the arrangement is designed from the first week to hand over: the same repositories, the same review process, documentation written as the work happens, and permanent joiners paired with the people who built it. This works well and we take engagements shaped that way. The condition is that it is written down as the plan rather than left as an intention, because an intention to insource with no date, no owner and no budget is how a temporary arrangement quietly becomes a permanent one.
A practical way to run the mixture is to be explicit, per system rather than per person, about who owns it. Every significant part of the platform should have a named internal owner accountable for it, even when the work on it is being done externally. That single discipline does more to prevent the dependency failure than any contractual clause, because it forces someone internal to understand the system well enough to accept the work.
Switching model mid-engagement, which happens more than anyone plans for
Very few organisations decide this once and hold it. Budgets change, a programme ends, hiring finally succeeds or finally fails, and the model has to change with a system already running and a team already in place. This is the messy part, and it is worth planning even if you do not expect to need it.
Moving work from an external team to an in-house one is an insourcing programme, and it should be resourced as one rather than treated as an administrative change. The sequence that works is to hire first and overlap deliberately: permanent engineers join while the external team is still delivering, pair on real work rather than sitting through walkthroughs, take ownership of one system at a time with the previous owners still available, and only then reduce the external capacity. The failure mode is ending the contract on the day the new hires start, which converts every question into an archaeology exercise and reliably costs more than the overlap would have. Expect the transfer to take longer for systems with poor documentation and no tests, because in those the knowledge really is in people rather than in the codebase.
Moving from an in-house team to external capacity is usually less about knowledge transfer and more about arrangement design. The important decisions are which systems the external team will own, who internally remains accountable for each of them, how work will be visible weekly, and what the exit position is at every point rather than only at the end. Where this follows a reduction in the permanent team, be honest about sequencing: knowledge should transfer while the people who hold it are still employed and still motivated to transfer it, which means the handover happens before the departures, not after.
In both directions, keep the artefacts in your control throughout so the switch is a change of who works, not a change of where things live. Repositories, cloud accounts, CI, issue tracker and documentation should be yours in every model, so that changing the model means people start or stop rather than something having to be untangled and moved. If a supplier holds any of that, resolve it before you need to switch rather than during.
Finally, an honest note about why these switches often happen. A large share of insourcing decisions follow an outsourcing arrangement that was never designed properly: work done at arm’s length, no internal owner, no visibility between status reports, and knowledge that never came back. Before concluding that outsourcing failed, it is worth checking whether it was the model or the arrangement. Equally, before concluding that hiring failed, check whether the roles were genuinely fillable at the level and salary offered. Both decisions get made in frustration more often than they get made on evidence, and the frustrated version is expensive in both directions.
How we help
Further reading
Common questions
Is outsourcing cheaper than hiring in-house?
Not reliably, and anyone giving you a confident yes is selling something. The rate for a contracted engineer is usually higher than a salary looks, because it carries recruitment, management, tooling, cover and the supplier’s own overhead inside it. What outsourcing actually changes is the shape of the commitment rather than the unit price: you stop paying for capacity you are not using, and you remove the fixed cost that persists through quiet quarters. The comparison worth doing is total cost against total cost, which means salary plus employer contributions plus recruitment plus equipment plus management time plus the delivery lost while a vacancy is open. Done that way, permanent hiring often wins for steady long-term work and contracting often wins for bounded or uncertain work, which is exactly what you would expect.
When is building in-house clearly the right answer?
When software is the product, when the capability will be central to the business for years, when the domain knowledge is your competitive position and must not leave, when you need engineers in daily contact with the business, when you are building something you will iterate on indefinitely, and when you can genuinely hire and retain people with someone senior to lead them. Also when security or regulatory constraints make external access genuinely difficult rather than merely unfamiliar. We sell the outsourced option and we will still tell you to hire in these situations, because contracting a capability you need permanently means paying to rent something you should own, and rebuilding context every time the arrangement changes.
What is the biggest risk when outsourcing development?
Ending up dependent. That is when the software works but nobody employed by you can explain how, estimate a change to it or operate it without the supplier. It happens through a specific set of choices: work done at arm’s length rather than in your process, no internal owner for the systems being built, visibility limited to status reports, and documentation promised for the end that never arrives. The defences are concrete. Work in your repositories, through your code review, in your cloud accounts. Name an internal owner for every significant system even when external people are doing the work. Require documentation as the work happens. And hold to a simple test at all times: if you gave notice today, you would be left with a running system your own engineers could operate. The second risk, more familiar and easier to guard against, is being sold senior engineers and delivered junior ones, which named individuals, an interview before commitment and an agreed replacement process largely solve.
How long does it actually take to build an in-house team?
Longer than most plans assume, because approving a headcount is not the same as having capability. For each senior role the sequence is writing the role, sourcing, screening, interviewing, deciding, an offer, a notice period that is often months, then onboarding, and a declined offer restarts a good part of it. For a team rather than an individual, those cycles overlap but they do not disappear, and the first hires are usually the slowest because there is no team yet for candidates to join. Then there is ramp-up, which depends far more on the state of the codebase than on the people: a clean system with tests and a working pipeline is quick to join, and a large undocumented one is slow to join for anybody. Plan on months rather than weeks, and if delivery cannot wait that long, the sensible answer is often to run both, with contracted capacity carrying the work while recruitment proceeds.
Can we outsource and still keep control of our intellectual property?
Yes, and the arrangements that make it true are specific rather than reassuring. Intellectual property should be assigned to you on creation rather than on final payment, because the alternative gives a supplier leverage precisely when a relationship is going badly. The supplier’s own engineers should be under agreements that assign their work product accordingly, so there is no gap between what you are owed and what can actually be given. The work should be written directly into your repositories, deployed to your cloud accounts and built by your CI, so there is no supplier-held environment that later has to be transferred. And you should be able to see the assignment chain if your counsel, an investor or an acquirer asks. A supplier who cannot meet those conditions is telling you something useful about themselves.
Should we outsource the whole product or only part of it?
As a general rule, do not contract out the part of the system you most need to understand. The split that works divides the work by permanence and by closeness to the domain: permanent staff hold the systems where the business logic lives and where decisions are frequent and consequential, while external capacity carries work that is bounded, specialist, temporary or peripheral. Outsourcing an entire product is defensible in one situation in particular, which is when you have no engineering organisation yet, clear product direction owned internally, and an explicit plan to build the permanent team alongside it. What does not work is outsourcing the core because it is the biggest piece of work and assuming understanding will arrive later. It does not arrive on its own, and by the time the gap is visible the relationship has stopped being a choice.
How do we stop domain knowledge leaving when an engagement ends?
By treating it as a design requirement from the first week rather than a handover activity at the end. In practice that means continuity of the same people rather than a rotating pool, documentation and architecture decisions written as the work happens with the reasoning included, code review that runs in both directions so your engineers read external code and external engineers read yours, and a named internal owner accountable for each significant system regardless of who is doing the work. It also means refusing to let any system become the private property of one person, external or internal, and treating it as a defect when it happens. A useful check is to ask what would happen if the person who knows the most about a given system stopped tomorrow. If the answer is that delivery halts for a month, you have a concentration problem that has nothing to do with employment status.
We have vacancies open and a roadmap slipping. What should we do?
Run both, deliberately and with the transition written down. Keep recruiting, because if the capability is genuinely permanent it should end up with employees, and use contracted capacity to stop the plan bending around people who do not exist yet. The important part is designing the arrangement for handover from the start: external engineers work in your repositories and your process, new permanent joiners pair with them on real work rather than receiving walkthroughs, documentation is produced as the work happens, and the reduction of external capacity is planned with notice as the internal team arrives. What turns this from a good arrangement into a bad one is leaving the insourcing as an intention with no date, no owner and no budget, at which point a temporary measure becomes a permanent dependency nobody decided on.
Does outsourcing mean losing visibility of what is being built?
Only if the engagement is structured that way, and a lot of them are, which is why the concern is reasonable. Arm’s-length delivery against a written specification, with progress summarised weekly by an account manager, does exactly what people fear. The alternative is an embedded arrangement where the external engineers are in your standups, using your issue tracker with your workflow states, opening pull requests into your repositories, and reviewed against your definition of done by your engineers. Under that arrangement you can see the work every day in the same places you see your permanent team’s work, without asking anyone for a report. The practical test at the end of the first fortnight is whether you could judge the engagement from your own board and repository alone. If you could not, the visibility problem is in the arrangement and it is worth fixing immediately rather than tolerating.
Weighing In-house team against Outsourced development?
Tell us the volumes, the compliance position and who would run it day to day. We will tell you which one we would choose for your case, and say so plainly when it is not the one we sell.
- 01A senior engineer reads it. Not a form queue, and not an account manager.
- 02We reply either with questions or with a straight answer that we are not the right fit.
- 03If it looks like a fit, a technical call with the person who would actually run the delivery.
- 04Then scope, effort and risk in writing, before anyone signs anything.