Credits and Acknowledgements
This project is based on the ideas presented by Hernán Wilkinson (@hernanwilkinson) in his Diseño a la Gorra webinar.
Diseño a la Gorra explores the principles of object-oriented software design, with a focus on practical examples and heuristics for creating high-quality software. The videos are mostly in Spanish, but the code and ideas are universally understandable.
A central theme of Diseño a la Gorra is understanding software as a model of a real-world problem. From this perspective, developing software is fundamentally the act of designing an effective model.
According to this approach:
- A good software model abstracts the relevant aspects of the domain, allowing for clear understanding and effective solutions.
- Software design is a continuous process of learning and refining the model.
- A good model not only works but also teaches how to interact with it through its structure and behavior.
- Objects should represent domain entities, and be created complete and valid from the start, reflecting a coherent state of the real world.
The concepts behind self-assert
were introduced in Episode 2 ("Valid Objects") and further developed in Episode 3 ("Modeling Sets of Objects").
Diseño a la Gorra also encourages a shift in mindset:
- Code is not written for the computer; it's written to model our understanding of the domain.
- Objects are not just data containers; they are collaborators that encapsulate behavior and ensure consistency.
This mindset is what self-assert
aims to support: designing objects that are responsible of protecting their own validity from the very beginning.