Hasty Briefsbeta

Bilingual

How to write complex software

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