Guess first

Three clients, three forks, zero upgrades.

Northwind Bank wants its mainframe ledger in the product. Where should that adapter live: inside the product, or beside it?

DevCore productDeltaNorthwind adapterMainframeLedger API
Lesson notesDev or Delta?: the short version+

Week 1 · FDE Mindset & Toolkit · about 3 minutes

What you will be able to do

Decide whether a change belongs in the core product or in one client's integration layer.

The idea

Dev is the product your company ships to every client. Delta is the code you write for one client: the adapter to their mainframe, their login, their odd schema. The words come from Palantir, where they name the people: Devs build the product, and Deltas are the forward deployed engineers who write this client code.

Keep the line hard. Client logic inside Dev turns every engagement into a fork, and forks never get upgrades. Delta talks to Dev only through its public API and configuration.

When you write the same Delta for a third client, that is a product gap. Take it upstream so it becomes a Dev feature.

# Lives outside the product repo.
from forge_sdk import Client, Transaction  # Dev: public API only

def sync_ledger(rows: list[dict], forge: Client) -> int:
    txns = [
        Transaction(account=r["ACCT_NO"], amount=r["AMT_CENTS"] / 100)
        for r in rows
    ]
    return forge.transactions.upsert(txns)

If the product needs a client's name in its code, the code is in the wrong layer.

Key takeaways

  • Dev ships to every client, is configured, and is never forked.
  • Delta holds one client's adapters, auth and pipelines, built on Dev's public API.
  • Writing the same Delta a third time? Take it upstream as a feature.

Part of the Forward Deployed Engineer roadmap. New to the role? Start with what a Forward Deployed Engineer does.