Something clicked recently and somehow made me enjoy the process of Java development a lot more than I have in the few years that I've actually been doing it professionally. With this comes a desire to actually engage in it a bit more academically and be more design-conscious of the decisions I am making on a day-to-day basis.

I am also tired of learning from tutorials and articles, and want to have a deeper engagement with the work I do.

This is a list of books on Java people online seem to value, and I intend to read them sometime in the near future.

  1. Test-Driven Development, by Kent Beck
  2. Java Concurrency in Practice, by Brian Goetz
  3. Working Effectively with Legacy Code, by Michael Feathers
  4. Refactoring: Improving the Design of Existing Code, by Martin Fowler
  5. Design Patterns, by Erich Gamma et al
  6. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions, by Gregor Hohpe and Bobby Woolf
  7. Code Complete, by Steve McConnell
  8. A Philosophy of Software Design, by John Ousterhout
  9. Clean Code, by Robert C Martin
  10. Effective Java, by Joshua Bloch
  11. Modern Java in Action: Lambdas, streams, functional and reactive programming, Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft
  12. The Phoenix Project: A Novel about It, Devops, and Helping Your Business Win by Gene Kim
  13. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, by Martin Kleppmann
  14. Security Engineerin- Ross Anderson
  15. Threat Modelling: Designing for Security, by Adam Shostack
  16. The Pragmatic Programmer by Andy Hunt and Dave Thomas
  17. Extreme Programming Explained, by Kent Beck
  18. The Mythical Man Month by Fred Brooks
  19. Peopleware, by Tom DeMarco and Tim Lister
  20. The Tao of Programming, by Geoffrey James
  21. The C2 Wikis