a day ago
- Start by writing toy driver programs to discover physical constraints of the solution space
- Begin implementation at the top of the stack (UI or API) and work downward
- Implement software in layers where each layer peels off minimal logic and delegates complexity
- When coding a layer, define the next layer's API as the perfect domain-specific language for the current layer
- Stub out the lower layer as you code the current layer, then recursively implement it for real
- Only use mockable abstract interfaces for IO parts; all else should be concrete
- This method enables early semi-working software and natural delegation among engineers
- If a layer's API is impossible to implement, backtrack and redesign the layer above