Skip to main content
Published 2026-04-17

22 min read

Why custom software projects are harder than what you see before you sign

Most teams discover uncertainty, ownership gaps, weak requirements, hasty estimates, and production surprises only after the work has started. This article explains why that happens, what we will not do on live client calls, how we prefer to plan in cycles, and why we keep all of our staff in the United States.

TL;DR

  • Put backup clauses, escalation contacts, and accountable owners beside every shared delivery milestone in writing.
  • Record plain assumptions next to estimates before approving the upcoming batch of funded work.
  • Name specific people accountable for outages and pair them with written playbooks ahead of launches.

Share this article

Corsair Media Group

Corsair Media Group

What procurement plans usually leave out

Copied

This article is for business leaders who commission, rescue, or oversee custom software. Later sections cover thin requirements and rushed estimates, then return to contract structure, coordination effort, and how we staff the work inside the United States. The pattern we see repeatedly is predictable. Procurement and sales documents show clean milestones. Operations runs into slow batch jobs, broken behavior in uncommon browsers, requirements that no one wrote down before the work began, and outages that nobody forecast in the original plan.

Naming that gap early is not a criticism of competent vendors or internal teams. It sets expectations that match how real systems behave once payroll and revenue depend on them.

A public plan usually shows three milestones, a short technology list, and a launch date pinned to a fiscal quarter. The production reality includes a payroll report that runs slowly midweek during peak approvals, a browser extension that breaks a scripted workflow, or a stakeholder who sends a supposedly small revision after formal user acceptance has already started.

None of those surprises automatically means that someone failed. Complex software involves competing incentives, undocumented knowledge inside legacy systems, hardware limits, outages from third-party services, and users who revise their priorities when they finally see the product. A strong team surfaces risk plainly instead of protecting a green status indicator for weeks after the warning signs have appeared.

Third-party vendor commitments are one category of complexity worth examining separately. The switching costs that accumulate as a platform becomes embedded in your operations are often invisible during procurement and significant by the time a renewal arrives. Our article on software vendor lock-in describes how to evaluate those commitments before they close your options.

The sections below describe two failure patterns Corsair sees routinely. After that, the article returns to why contracts deserve honest assumptions instead of promises that get made under pressure on a phone call.

When work starts before the requirements are written down

Copied

Corsair routinely takes on projects where the team inherited weak documentation. Functional owners hand over notes from a lunch meeting, a blurry whiteboard photo, a chat log that jumps between topics, or a single slide pulled from someone else's roadmap. Acceptance criteria never appear. Rules for how data flows between systems are never written down. Interfaces that other teams depend on remain undefined until the release engineers have already queued the deployment.

The outcome is worse when invoicing begins before discovery is finished. Coding starts from informal hallway conversations. The business units involved never agree on shared definitions. Vendors guess at edge cases that nobody priced into the proposal. Months later, the blame settles on whoever wrote the code, even though the executives upstream approved the project without written requirements.

Fixing that pattern does not require endless paperwork. It does require written narratives, prioritized user stories or an equivalent that can be traced, sponsor decisions that the team can reopen on demand, and a pause in the work until the engineers can cite those documents in their daily work. Weak inputs produce rework, missed releases, brittle automation, and recovery projects that consume the budget that leadership had planned to spend on new features.

If your organization cannot describe the constraints in sentences that product, security, finance, and operations have all agreed to in writing, then hold back the build funding until that language is in place. Spending headcount without a documented agreement is still a decision that leadership owns.

Why guesses on active client calls set delivery up to fail

Copied

Managers still ask for firm schedules during live client calls because someone wants reassurance before the call ends. A question about work that will take months gets answered with a verbal commitment that no one had a chance to research. Nobody has reviewed the backlog, the technical debt, or the regulatory requirements before that number leaves the room.

An immediate answer is defensible only in narrow situations. One engineer has worked in the codebase for years. The change is small. Dependencies are minimal. Test coverage exists. Leadership will record the scope in writing after the call. In every other case, the engineer needs time to come back with a real number.

The other question we wish managers would keep off live client calls is "Can we do this?" The prospect usually assumes you would not be on the call if the work were impossible. Asking engineering for a public answer in that moment rarely helps. An immediate yes that turns out to be wrong becomes a credibility problem later. A public no creates confusion about why the meeting was scheduled at all. Even an honest "we need to research this" can push the sponsor toward other vendors before your team has a chance to give a real answer.

If leadership keeps feasibility discussions private until engineering has reviewed the actual constraints, then the follow-up answer holds up. Sponsors generally accept a follow-up that updates an earlier estimate more easily than they forgive a confident yes that falls apart after the contract is signed. If we later conclude that we cannot deliver the work, then we owe the client a written explanation. When it helps, we will refer them to another firm that can do the project.

If executives demand an instant estimate for features that will realistically take quarters of work, then the answer they get is a number invented on the spot. That number gets repeated in contracts, in finance spreadsheets, in staffing debates, in bonus plans, and sometimes in public statements. Revising the number later costs more political capital than asking for a few days to research it would have cost.

Bad numbers also hide chronic understaffing. Management continues to behave as if the team can absorb work that has already pushed the same people past sustainable hours. Nights and weekends grow to chase commitments that no one validated. Quality slips. Eventually the engineer who flagged the schedule first carries the blame, even though the total effort kept climbing the entire time.

Careers change after those off-the-cuff promises. Employers remember which engineer attached a date to scope that was never going to fit it. Reference checks ask whether the same pattern appeared elsewhere. Restoring credibility takes longer than a proper discovery cycle would have taken in the first place.

Managers should not promise a concrete duration on a client call until the team has reviewed the code, mapped the dependencies, and identified the compliance requirements. Tell the client that the team will send written assumptions and an estimate after the call. Ask the client which unknowns concern them most so that the sequencing of the work matches their priorities.

Engineers should not estimate on client calls. An estimate should follow a review of the relevant systems, a list of open questions, a comparison with similar past work inside the organization, written agreement with product on the scope, confirmed test expectations, an honest accounting of coordination overhead, documentation that leadership has signed, and a direct statement of any staffing shortfall when the plan exceeds the headcount available.

A reliable estimate looks like a short research memo. Each hour and each date is tied to a specific assumption. Unknowns are labeled as unknown. The numbers match the team's actual capacity. The estimate is redone when discovery changes the scope. If leadership refuses to add people while insisting on a target that cannot be hit with the current team, then the engineer should escalate that mismatch in writing. Corsair runs the same discipline through the cycle-based planning described in the next section.

Corsair Media Group

Want estimates that account for what really happens?

Contact Corsair

Why fixed-price scopes break down when discovery keeps changing

Copied

Once documentation and estimating practices are in place, the contract structure still matters. A fixed scope works fairly only when the sponsors actually freeze the requirements, validate them together, rehearse the operational cutover in advance, and accept the narrow boundaries that they can defend later. Most business software continues to change in response to user feedback, so the product in production rarely matches the first specification for long.

A healthier model pairs an explicit first scope with written assumptions about what is likely to change. The agreement should state what happens when an upstream API changes, when transaction volume doubles, or when compliance officers ask for an additional field months after launch. Corsair funds work in cycles so that you know exactly what this funding window pays for, which risks remain open, and which work leadership has deferred.

What still breaks in production without clear ownership

Copied

Someone has to own intermittent failures, race conditions, and customer-specific data issues that no textbook describes. AI editors and code generators can propose snippets faster than a human can type them. They do not attend your stand-ups. They do not read vendor contracts. They do not answer for regressions during an overnight incident.

Many Corsair projects are recovery work. The prior vendor disappeared, the scope expanded without anyone tracking it, or the launch went well until production traffic surfaced defects that nobody had tested for. Accountability and documented decisions produce better outcomes than a polished demonstration when leadership needs a team that can stabilize what is already in production.

Our delivery is human-led by default. If the sponsor wants stricter human review, then we can restrict the optional AI assistance so that a Corsair engineer reviews each merged change directly.

Coordination load when discovery keeps moving (illustrative)

Copied

Weekly changes to requirements appear directly on calendars instead of staying hidden inside procurement spreadsheets. The chart compares United States staffing patterns for illustration only. The bars describe how shared business hours, written decisions, and named owners affect coordination effort when discovery is still ongoing. The numbers are directional planning context, not the result of empirical research.

Relative coordination overhead for fast-changing projects

Illustrative: written decisions and stable owners reduce friction when discovery is ongoing.

US-based team, shared business hours, documented decisionsLower friction
US-based team, shared business hours, informal handoffs onlyModerate
US-based team, many handoffs, unclear owners for each systemHigher risk of misalignment

Why Corsair stays US-based on purpose

Copied

Corsair keeps every role inside the United States rather than subcontracting internationally. That keeps accountability, day-to-day collaboration, incident escalation, clarity with insurers, and familiarity with domestic labor obligations in the hands of teammates who share overlapping working hours with clients.

We value the role our small business plays in providing employment, and for that reason we keep all of our labor in the United States.

That decision also means Corsair rarely wins on hourly rate auctions in anonymous marketplaces. If a project only works when labor prices fall below sustainable rates, then we recommend reducing the scope together instead of signing a contract that puts every party at risk.

Signs you may need outside support

Copied
  • Multiple departments need different reports from the same data.
  • Compliance or insurance asks for audit trails you do not yet log.
  • Your last launch depended on one developer who became the only person who understood the release.

If that list resembles your operating environment, then you probably need a partner who stays accountable, not a short-term contractor whose involvement ends when the final invoice is paid.

Closing thoughts

Copied

The conclusion returns to where the article started. Clean procurement timelines still meet late requirements that the sponsor never wrote down. Early sketches never become acceptance tests. Billing starts before discovery finishes. Schedule estimates get spoken aloud while a client is on the call. Capability questions get answered on speakerphone instead of after research. Fixed-price language, shifting discovery, unnamed on-call owners, lean bids that assume hidden scope cuts, burnout that gets reported as steady progress, and unrealistic domestic staffing assumptions all add to that pile unless leadership slows the conversation and assigns specific owners.

The practical takeaway is modest. Written requirements and sponsor agreement should come before any substantial build work. Schedule estimates should follow research, written assumptions, and signed scope notes, not improvisation on a call. The contract should acknowledge where learning will change the plan, which is why Corsair prefers cycle-based funding. Production needs named people on call, especially when proximity in the United States, shared labor rules, and insurer questions matter. Staffing realities belong in the same sentence as the promised date so that understaffing cannot hide behind an optimistic number.

Teams that keep budgets, scopes, review practices, on-call rosters, onboarding plans, contingency reserves, and change-control language visible as traffic grows have a better chance than teams that treat a single rushed conference call as sufficient planning. The cost of recovering from a lean bid with hidden assumptions almost always exceeds what honest scoping and a funded discovery cycle would have cost.

Which of the patterns in this article matches the pressure on your roadmap right now? Tell us through our contact page in the next seven days, and we will walk through scope, estimates, staffing, and contract assumptions with you directly.

Corsair Media Group

Need a US-based team that documents and maintains software?

Reach Corsair

If you want a partner who scopes honestly and stays involved after launch, then we would like to talk.

Talk with our team