Eduardo Arsand

Custom Software vs Configuring Someone Else’s Vision

26

The Configuration Trap

Most software decisions begin with the same instinct: find a tool that already does the thing.

The reasoning is sound on the surface — someone else has already solved the problem, absorbed the edge cases, and shipped a product. Adopting it feels efficient.

The trap appears later, when the product's assumptions about how work should be done begin to conflict with how work actually gets done in a specific organization.

Configuration is not neutral. Every parameter exposed in a settings panel represents a decision the vendor already made about what matters. The space between those parameters — what cannot be configured — is where a product's vision lives. When I configure someone else's software, I am not shaping a tool to my needs; I am adjusting my needs to fit the shape of the tool.

What Custom Software Actually Buys

Custom software is not primarily about features. It is about fit.

A system built around a specific workflow encodes that workflow directly into its logic, rather than approximating it through a layer of abstraction designed for a general audience. The difference accumulates over time in ways that are hard to measure but easy to feel: fewer workarounds, fewer exports, fewer manual reconciliations between systems that almost talk to each other.

The concrete advantages I associate with custom builds are not glamorous:

  • Domain precision: Data models that reflect actual entities and relationships, not generic approximations.
  • Absence of unused surface: No features that exist for other customers, no permissions model built for a use case that does not apply.
  • Ownership of the change cycle: Modifications happen when the business needs them, not when the vendor's roadmap allows.
  • Integration without compromise: Systems connect on your terms, not through the constraints of an API designed for the median customer.

The Real Cost of Configuration

Vendor platforms externalize development cost visibly and internalize operational cost invisibly.

The subscription fee is legible. The hours spent mapping internal processes to the product's data model are not. Neither are the decisions quietly abandoned because the software made them too difficult, or the institutional knowledge encoded in spreadsheets that exist only because the platform could not accommodate a particular edge case.

There is also a structural cost: dependency. A business that has shaped its processes around a vendor's product has made that vendor a silent co-author of its operations. Migrations become expensive not because data is hard to export, but because the processes themselves were designed inside someone else's constraints.

When Configuration Is Correct

Custom software is not the correct answer by default. There are conditions under which configuring an existing platform is the more disciplined choice:

  • The problem is genuinely generic and the product was built for that generality.
  • The organization lacks the capacity to maintain what it builds.
  • The workflow is exploratory and not yet stable enough to encode.
  • The vendor's opinion about how the work should be done is actually better than the current internal practice.

That last condition is underweighted in most evaluations.

Some platforms encode hard-won operational wisdom. Adopting their structure is not a compromise — it is a form of leverage. The error is failing to distinguish between a vendor's opinion that improves the workflow and one that merely constrains it.

Ownership as a Technical Posture

The decision between custom and configured is ultimately a question about ownership.

A team that builds its own tooling owns its own constraints. It can name them, change them, or eliminate them. A team that lives inside a vendor's product owns only the configuration surface it was given.

Neither posture is inherently superior. Both require maintenance. But they require different kinds of maintenance, and they encode different assumptions about where a business's operational knowledge should live — inside a product built to reflect it, or inside a platform built to serve many.


Comments ({{ modelContent.total_comments }})