This is a collection of software engineering and productivity books that I have read and would highly recommend to others.


  • Functional Programming in Java by Venkat Subramaniam showcases how functional programming improves code quality, readability, and performance using Java 8 features like lambdas and streams, promoting immutability and easier concurrency.

  • Practical Object-Oriented Design by Sandi Metz teaches how to write maintainable and flexible code using powerful OO design techniques. With clear Ruby examples, it helps developers create adaptable applications and improve existing ones. Key topics include class responsibilities, object separation, flexible interfaces, duck typing, inheritance, and composition,

  • Structure and Interpretation of Computer Programs is a classic book that has the potential to alter your fundamental beliefs about computers and programming. While not everyone will have this experience, some might dislike the book or struggle to get past the first few pages, the potential rewards make it worth trying.