1. Enums or Code Tables? Let the Rate of Change Decide

    Use enums for stable values and focused tables for frequently changing ones without turning one common-code table into a dumping ground.

  2. One Database, Separate Boundaries: Controlling Data Access by Domain

    How separate entity and repository boundaries can protect core rules from integration code even when both areas share one database table.

  3. What a Utility Bill Can Teach Us About Domain Modeling

    How a utility bill revealed a missing delinquency concept in a repayment model and why everyday artifacts can guide software design.

  4. Rank Your Domain Concepts Before You Spend Design Effort

    Identify a small first tier of domain concepts, separate supporting flows, and spend limited design time on the service's center.

  5. Before Fixing Circular Dependencies, Fix the Domain Model

    Resolve confusing ownership and concept boundaries before using interfaces or dependency inversion to treat an apparent circular reference.

  6. Turn Production Incidents into Shared Domain Knowledge

    Use incident reviews, working notes, concept maps, and rotated operations to reduce domain knowledge gaps across a software team.

  7. Measure Before Replacing Outbox Polling

    Evaluate outbox polling with realistic load tests, then consider a simpler application-level delivery path before adopting log tailing.

  8. Publish Events Where the Business Flow Is Visible

    Place event publication in the layer that understands the completed business action, while keeping implementation-specific cases explicit.

  9. Why a My Page Is Not a Domain

    A My Page is a client-facing view, not a business domain. Keep orders, products, and coupons with their real owners and combine them at the boundary.

  10. Give Cross-Domain Behavior to the Domain That Owns It

    Before placing a caller-owned interface across modules, identify which domain owns the action and let callers depend on that capability.

  11. Where Cross-Domain Coordination Code Belongs

    Use business ownership, cohesion, imports, and a package-move experiment to place code that coordinates a primary action with another domain's rule.

  12. Domain Models First: A Conservative Approach to JPA Associations

    A cautious way to map JPA entities: start with IDs, add associations only when lifecycles truly align, and model business concepts independently.

  13. Do Not Split Modules Before the Domain Has Matured

    Domain maturity comes from understanding policy, behavior, and operating reality. Let those lessons reveal module boundaries instead of freezing guesses too early.