What Actually Drives Software Development Costs
The dominant factor is rarely the technology stack — it remains uncertainty. Every ambiguity in the requirements becomes a buffer inside the number you receive. A team that cannot see the exceptions and edge cases will assume the more expensive option. Putting two weeks into requirements work can cut the final cost by far more than haggling over hourly rates.
Integrations remain the second big multiplier. A feature that touches only your own data is low risk; the same screen wired into a legacy ERP is not. The effort hides in the counterparty: undocumented APIs, long certification processes, inconsistent data. Ask any vendor to break integrations out as separate items, as that is where the numbers slip.
The requirements nobody writes down can easily double the budget. An internal tool used by twenty people costs far less than the same functionality serving thousands of external customers. Compliance work, high availability, scalability, audit logging and multi-language support each add weeks of work. Write them down at the start monolith or microservices you can expect them to arrive later as change requests.
The mix of people behind the number matters. A rate card says little on its own: one senior developer at twice the price can be cheaper per delivered feature than a pair of junior developers who require supervision and rework. Ask as well who else is billed: laravel vs nodejs coordination, quality assurance, infrastructure work and UX design are real work, but they should be itemised.
The quoted figure is rarely what you will actually spend. Expect hosting, paid APIs, observability and an ongoing support budget annually. A useful planning figure says that a live system needs a noticeable fraction of the original budget annually for updates, security patches and small improvements. Treating the launch as the finish line is the classic mistake.