Create Simulator Tests

Apply the Hexagonal Architecture Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #9 — Ease Integration with Hexagonal Architecture to understand the specific problem we are solving and the solution approach. This recipe helps you verify that your code uses its dependencies correctly, without running any integration tests. Create a Simulator Stub that Ignores Contract Tests Use Simulator Stub to Write a Failing Boundary Code Test Write Enough Simulator […]

Verify Integrations Without Integration Tests

Contract Test Your Port and Adapters Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #8 – Find Integration Bugs without Integration Tests to understand the specific problem we are solving and the solution approach. This recipe helps you verify that your dependencies will integrate correctly with your component, without running any integration tests. Identify one behavior. Create a contract test for that behavior. Encapsulate the behavior into the Port. […]

Isolate Component Integration Complexity

Create a Port and Adapter Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #7 – Isolate Integration Complexity to understand the specific problem we are solving and the solution approach. These recipes help you isolate the complexity involved in integrating with your component, even if your component uses high variable-point designs. There are two recipes. Choose which to use based on whether you extracted your component from this client […]

Create a Forward-compatible API

Minimize Fixed Points Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #6 – Compile Independently With a Forward-compatible Component to understand the specific problem we are solving and the solution approach. These recipes help you compile your component separately from the monolith in a way that minimizes design ripples across the component boundary. First are the four recipes that isolate code from API changes: Isolate client from API class […]

Gathering Scattered Code

This page describes four related strategies. The main article describes how to compose them to Gather a Scattered Component. The strategies on this page are: Remodeling Code, Not Refactoring: The difference between them and how to use them together. Overall Sequence: What execution order we will create, why, and the strategy we’ll use to get there. Where to Start: Why we gather before de-isolating, even though it seems like the cross-module scattering is more valuable to fix first. The Process: […]

Gather a Scattered Component

Find, Gather, Merge, and De-Isolate Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #5 – Gather a Scattered Component to understand the specific problem we are solving and the solution approach. This recipe helps you collect the scattered code that belongs in your single-purpose component so that you can edit independently from other teams. Find Gather Merge – Pick Your Approach Merge – Eliminate Sequence Concerns Prepare by Inlining […]

Extract Your Code So You Can Edit Independently

Extract a Single-purpose Component Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #4 – Edit Independently to understand the specific problem we are solving and the solution approach. This recipe helps you extract your code to a single-purpose component that you can edit independently from other teams. Extract Data Complication: Half a Class Belongs With My Entity Extract Code Complication: My Code Calls Their Code Complication: My Code is […]

Roadmap from Monolith to Services

Create a Roadmap Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #3 – Roadmap to Escape the Monolith to understand the specific problem we are solving and the solution approach. This recipe helps you define a technical roadmap to free your team from the monolith. Align on Goals, Obstacles, and Sequence Agree on Phases Use a Variable-Scope Experiment Identify Visible Work for Phase 1 Agree on Experiment Budget Agree […]

Enable Unit Testing

Make the Code Testable Before Testing It Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #2 – Enable Unit Testing to understand the specific problem we are solving and the solution approach. This page contains the recipes for the 5 most test-blocking design flaws. Recipe 1: Solving Poor ParametersPeel Poor Parameters Recipe 2: Solving Large PrivatesExtract Large Privates Recipe 3: Solving Method CallsSignal Event Instead of Method Call Recipe […]

Discover and Automate Manual Processes

Automating Yourself with Checklists Problem and Solution Overview This recipe just states how to execute a solution. Read our Legacy Newsletter blog post: DevOps #1 – Automating Manual Processes to understand the specific problem we are solving and the solution approach. This recipe helps you automate one manual process of any size. You can also execute it recursively on sub-processes. Observe and Record Checklist The next time someone performs the process The second time When things go horribly wrong Automate Running […]