> For the complete documentation index, see [llms.txt](https://hanfak.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanfak.gitbook.io/workspace/general-paradigms/programming-types/oop-design/outside-in-programming.md).

# Outside in programming

* Design features from the consumer's perspective
* The service is designed based on the needs of the clients of the service
* Name things after what the service does
* Hides how the service works
* Creates strong contracts between services that decouple componets
* Work with the big picture first
* Start with the what and why first
* Much of software comes down to how you thik about the domain youre working in and how you represent it in the software you write
  * The domain model should be understandable to the domain expert
