Skip to content
LLCSI

Product Engineering

What to Define Before Building a Custom Business Application

Most custom software problems trace back to decisions that were never made explicitly. These are the ones worth settling before development starts, and what each one costs if it is deferred.

Author
LLCSI Editorial
Published
Reading time
10 min read

Software projects rarely fail because a feature was hard to build. They fail because a decision was deferred — usually a decision about data or responsibility — and by the time it surfaced, a great deal of work had already been built on top of the ambiguity.

The items below are the ones that are cheap to settle at the start and expensive to revisit later. None of them requires technical knowledge to answer; they require access to the people who do the work.

1. Who uses it, and what are they responsible for

Not job titles — responsibilities. Who is accountable when a record is wrong? Who is permitted to override a rule? Who needs to see information but never changes it?

This determines the role model, and role models are difficult to change after the fact because permissions get referenced throughout an application. Defining three real roles at the start is far better than adding a fourth once the system is live.

2. What the records are, and how each one is identified

Every operational system is built on a small number of core records: a product, an order, a job, a client, a shipment. Naming them precisely matters more than it sounds, because different departments frequently use the same word for different things.

Identity matters just as much. What makes two records the same record? If the answer is "the name, usually," the system will eventually create duplicates that nobody can safely merge.

3. Which system owns each piece of information

This is the decision most often skipped, and the one that causes the most expensive corrections. For every field that exists in more than one system, someone has to decide which system is authoritative and what happens when the two disagree.

  • Which system may change this field, and which only display a copy?
  • How often is the copy refreshed, and what does the interface show while it is stale?
  • If both changed since the last sync, which wins — and does a person need to be told?
  • When a record is deleted in one system, what happens in the other?

Without these answers, synchronization becomes guesswork, and every future integration inherits the ambiguity.

4. The rules the software must enforce

Write down the rules that currently live in people’s heads: approval thresholds, pricing exceptions, eligibility conditions, sequences that must not be skipped. Then test each one against real historical records, because stated rules and applied rules differ more often than anyone expects.

Pay particular attention to the exceptions. Exceptions are where operational software either earns its place or becomes the thing people work around. A rule that cannot be overridden by anyone will be bypassed outside the system entirely.

5. What it must connect to, and what happens when that fails

List every system the new software must exchange data with, and for each one establish the direction of flow, the trigger, and the failure behavior. The failure behavior is the part usually left undefined, and it is the part that determines whether people trust the system.

  • What should happen if the other service is unavailable for an hour? For a day?
  • Who is told when a sync fails, and how would they know it had failed at all?
  • If the same event is delivered twice, what prevents a duplicate?
  • Who owns the credentials for this connection, and what happens when they expire?

6. Access boundaries and sensitive data

Decide which categories of information are restricted, and to whom, before the schema is designed. Retrofitting access control is one of the more invasive changes possible in an application, because it touches every query rather than every screen.

Equally, decide what should not be stored at all. Data that is never collected cannot be exposed, and it carries no retention obligation. In regulated contexts, that scoping decision belongs at the start and in writing.

7. What must be reportable

Reporting requirements change the data model. If the business needs to know how long something took, the system must record when it started — and that is a schema decision, not a reporting feature.

A useful exercise: list the questions the business will need to answer from this system in a year, then check that each one is answerable from the records being designed.

8. What existing data comes across

Almost every custom system replaces something, even if that something is a spreadsheet. Establish early what will be migrated, what quality it is in, and what will be archived rather than imported.

Legacy data is usually less consistent than expected: duplicates, missing values, and records that the previous system tolerated. Discovering that during migration week is disruptive; discovering it during scoping is just information.

9. What success looks like, stated in operational terms

Not "a better system" — something observable. The order entry step no longer requires re-keying. Stock counts match between two systems without a weekly reconciliation. A status question is answered from a screen instead of an email.

Stated this way, success criteria also become the scope boundary. A feature that does not serve one of them is a candidate for a later phase.

10. Who owns it after launch

Custom software needs an owner in the business: someone who decides priorities, approves changes, and is the point of contact when something is wrong. It also needs a technical continuity plan — documentation, environment configuration, migration history, and code ownership — so the system does not depend on a single relationship.

None of this requires choosing a technology. That decision follows from these answers, which is the right order — technology selected to fit the operation, rather than an operation reshaped to fit a technology someone had already chosen.

  • Operational Software8 min read

    When Your Business Has Outgrown Off-the-Shelf Software

    Generic software is the right answer far more often than not. These are the specific signals that indicate a business has passed the point where configuration and workarounds are cheaper than building.

    Read article
  • Desktop Applications9 min read

    Native Desktop Software or a Web Platform: Which Fits the Workflow?

    The decision is not about technology preference. It comes down to how long people spend in the software, how much data they move through it, and where that data should live.

    Read article

Working Through This Decision Right Now?

If this article describes a question your business is currently facing, we are happy to talk it through. Tell us how the operation works today and what is not working about it.