HACKER Q&A
📣 akiselev

What are some good books on creating abstractions?


Does anyone have any recommendations for books or journals/papers to read to improve my ability to write useful and maintainable abstractions? Ideally I'd like to find a more formalized treatment of "abstracting" in the vein of the GoF's Design Patterns or a survey of the field like the excellent Designing Data Intensive Applications but I'm guessing that's kind of like asking for a map to the Holy Grail.



👤 gitgud
> Ideally I'd like to find a more formalized treatment of "abstracting" in the vein of the GoF's Design Patterns.

Well [1] that book you're referring to, has changed my perspective on abstractions and how to communicate them to other people. There's probably no "Holy Grail" of abstraction guides better than that IMHO.

Designing and implementing useful and maintainable abstractions comes from experience in both consuming and designing abstractions for API's. Having empathy for both the consumers and future developer's of the API gives you a good perspective on how to structure the abstraction.

The best abstractions are from people who have used bad abstractions, and are usually incrementally developed over time...

[1] https://www.amazon.com.au/Design-Patterns-Elements-Reusable-...


👤 austincheney
Here are mine:

* XML Schema - https://www.amazon.com/Definitive-XML-Schema-Priscilla-Walms...

* DOM - https://www.amazon.com/DOM-Scripting-Design-JavaScript-Docum...

* I don’t have a book for this, but learn data structures instead of algorithms. If you can learn to think in data structures the concepts of algorithms will come to you naturally like dreaming or thinking about driving directions.

* I also don’t have a book for this but the relationships between data is more important than the data itself. This is realized by how you express your abstraction.


👤 afarrell
A Philosophy of Software Design by John Osterhout: https://www.amazon.co.uk/dp/B07N1XLQ7D/ref=dp-kindle-redirec...

Concise, readable, and highly applicable.