Skip to content

Engineering Manifesto #12

Description

@noelsaw1

Engineering Philosophy

Model non-trivial stateful behavior as explicit FSMs — undefined transitions are bugs waiting to happen.
Apply DRY and SOLID to create components with single responsibilities, stable interfaces, and
no duplicated logic; if you're writing it twice, extract it. Design observability in from the
start: every state transition, boundary crossing, and failure mode should emit structured,
queryable signals — instrumentation is not optional cleanup, it's part of the architecture.
If you can't observe it, you can't trust it.

Testing Philosophy

Build the test harness and production instrumentation together before implementation — the
harness validates simulated states, observability confirms real ones; both are architecture,
neither is optional. At every external boundary, add contract assertions that validate mocks
against real interface shapes, schemas, and error states — mocks rot silently without them.
For any component with invariants — FSM transitions, thresholds, batch boundaries — write
property-based tests that define what must always be true and let tooling generate adversarial
inputs. Handwritten cases test what you imagined; property-based tests find what you didn't.

Pragmatic Exceptions

Treat these principles as the uncompromising baseline, but recognize that strict dogma must
occasionally yield to extreme performance constraints or domain-specific realities — if a rule
must be broken, it must be broken intentionally. When a bottleneck demands bypassing an
abstraction or flattening a state machine, contain the blast radius and document the deviation
explicitly so the compromise remains a trackable decision rather than an accidental shortcut.
Ship a darn good v1.0 to earn real-world feedback first — long-term maintainability applied
to the wrong thing is waste; applied to the right thing, it's the whole point.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions