Software Engineering

Practical Object Oriented Design: An Agile Primer Using Ruby

Book Link

DO NOT LET THE TITLE THROW YOU OFF. Sorry for yelling, but this book is almost certainly worth checking out, even if you hate Agile and never plan to touch Ruby.

This book is the resource that I was hoping I would find every time I went through a Udemy course, or watched a YouTube video, or read an article on OOP.

The book covers all of the topics that you seen before - design patterns, principles, objects, and methods - but does it better. Ideas are built incrementally, with concrete examples of how each newly introduced concept improves your code. The examples also build on each other, so that there is a sense of continuity, and you can see how they interact. The result is that you leave the book knowing not just the techniques, but exactly where they should be applied.

If you’re already extremely very strong at OOP, with a principled approach that you can comfortably explain, you may not get much out of the book. If you’re simply decent, or good but not principled, POOD may be valuable to you for its ability to help make explicit your gut intuitions. If you feel like you never quite got your footing with object oriented design, this book is a game changer.

Notes

  • You genuinely need to know nothing about Ruby for this book to be useful.
  • You will not learn Ruby by reading this book.
  • You’ll get much more out of this book if you’ve got some code that you can apply it to. Read the book slowly, and try to incorportate each chapter into your own work before moving on to the next one.

Prereqs

  • You’ll want to have at least an understanding of the basics of OOP in your language of choice.

Supplemental Resources

  • TODO

Computer Science

Computer Systems: A Programmer’s Perspective, 3rd Edition

Book link

An excellent textbook that covers how computers actually compute. This includes explanations for how a CPU makes its calculations, how registers work, how memory works, etc. It lives up to “A Programmer’s Perspective” by skipping material that is unlikely to be relevant to a software engineer, allowing it to go deeper into the ideas that you’re likely to encounter.

Notes

  • Make sure that you do NOT purchase the cheaper international edition, which is plagued with errors.

Prereqs

  • You’ll want to understand C going into this book

Supplemental Resources

  • TODO