The agency vs freelancer for software development question lands in my inbox in some form every month, usually framed as a budget question. "The agency quoted Rp 250 million, a freelancer said he can do it for Rp 60 million, is the agency ripping me off?"
Wrong question. The agency vs freelancer for software development decision, and the third option of hiring in-house, is not primarily about price. It is about matching the delivery model to two things: how critical the system is to your operations, and how long it needs to live. Get that match right and any of the three options can work. Get it wrong and the cheap option becomes the most expensive decision you make this year.
I have been on all three sides of this, as a freelancer, inside agencies, and building in-house teams, so let me give you the comparison I wish more owners had before signing anything.
The two questions that actually matter
Before comparing prices, answer these:
1. Criticality: what happens if this system breaks on a Tuesday? A company profile website breaking is embarrassing. Your order management system breaking stops revenue that day. These are different categories of software and deserve different delivery models.
2. Duration: is this a project or a relationship? A project ends: build, hand over, done. Core business software never ends. It needs changes, fixes, and adaptation for as long as your business runs. Anyone who tells you a core system will be "finished" has not maintained one.
Plot your need on those two axes and the answer usually reveals itself.
The honest comparison
| Factor | Freelancer | Agency | In-house |
|---|---|---|---|
| Typical cost | Rp 20-80M per project | Rp 150-500M+ per project | Rp 15-40M per month per developer, ongoing |
| Speed to start | Days | 2-6 weeks | 2-4 months to hire |
| Quality consistency | Depends entirely on the individual | Process-backed, more predictable | Grows with the team you build |
| Continuity risk | One person, one phone number | Team absorbs turnover | You own it, but people still resign |
| Best for | Small, bounded, non-critical work | Complex builds, critical systems | Software that IS the business |
Now the texture behind the table.
Freelancers are the right answer more often than agencies admit. For a landing page, a small internal tool, a WordPress site, a bounded integration, a good freelancer delivers fast at a fair price. The problem is variance: the difference between a strong freelancer and a weak one is enormous, and an owner without technical background cannot tell them apart from a portfolio. Titles and rates signal little.
Agencies cost three to five times more, and roughly half of that premium buys real things: multiple specialists (design, backend, testing), process, documentation, and continuity when someone quits mid-project. The other half buys their office and margin. The agency risk is different: being handed to their most junior team after the senior people did the sales pitch, and change requests priced painfully once you are locked in. Ask who exactly will build your system, and ask to speak with a client from two years ago, not last month. How they maintain quality internally matters too, and you can probe it with questions from Code Review Culture: Why Good Teams Argue About Code.
In-house makes sense when software is your competitive core and changes weekly. A developer at Rp 20 million per month costs Rp 240 million a year plus management attention, equipment, and the risk that your only developer resigns with all the knowledge. Hiring one developer is usually the worst version of this option. In-house starts making sense at two or three people, which means a real commitment north of Rp 600 million per year. Most SMEs are not there yet, and that is fine.
The riskiest configuration, named plainly
Here is the pattern that generates most of the rescue calls I receive: a lone freelancer building a system your daily operations depend on.
It always starts rationally. The freelancer is capable and affordable, the system grows, the business starts running on it. Orders, inventory, payroll. Then one of three things happens: the freelancer gets a full-time job and stops answering, or raises rates sharply because he now knows you are captive, or simply burns out. Meanwhile nothing is documented, the code lives partly on his laptop, and no second person on earth understands the system your company runs on.
One trading company I encountered ran purchasing and sales on an application built by a freelancer who had migrated abroad and answered messages roughly monthly. Every bug fix took weeks of waiting. They were not a client of the developer anymore. They were hostages with invoices, and the eventual rebuild cost several times the original system.
If a system is operationally critical, it needs either a team behind it or, at absolute minimum, contractual guarantees: source code in a repository you own, documentation as a deliverable, and a handover clause. A cheap critical system without those is not cheap. You are just paying the difference later, with interest, in the currency described in Technical Debt Explained: Why Your App Gets Slower to Fix.
A decision guide by stage
Matching the model to the work, stage by stage:
- First website or landing page: freelancer, or even a website builder. Low criticality, short duration. Do not overpay an agency for this.
- Internal tools and experiments: freelancer or no-code. Bounded scope, survivable failure.
- First serious system (POS integration, order management, customer portal): agency, or a senior freelancer with the ownership guarantees above plus a paid maintenance agreement. This is the stage where the lone-freelancer trap snaps shut.
- Core system your business runs on daily: agency with a long-term maintenance contract, or the beginning of an in-house team. Judge vendors on their maintenance track record, not their portfolio screenshots.
- Software as your product or main advantage: in-house team, possibly seeded by an agency build while you hire. At this point you also need someone technical who owes loyalty to you, not to a vendor.
Whatever you choose, three non-negotiables belong in every contract: you own the source code and it lives in an account you control, documentation is a paid deliverable, and there is a defined support arrangement after launch. I have never seen an owner regret insisting on these. I have often seen them regret not doing so.
The practical takeaway
The agency vs freelancer for software development choice resolves cleanly once you rank criticality and duration above price. Freelancers for bounded, non-critical work. Agencies for complex or critical builds where continuity matters. In-house when software is the business itself, and only when you can afford more than one person. And never, under any budget pressure, a lone freelancer for a system your operations depend on daily without ownership and handover locked into the contract.
If you are at stage three or four and want someone technical on your side of the table when evaluating vendors and proposals, rather than learning these lessons at full price, that is a role I regularly play for business owners. Details at the partnership page.