Good learning material – JAVA, Spring
Thanks :)
Thanks :)
The things you've listed sort of split into two separate categories: Paradigms/Architectures, and specific tools.
I'd focus on the Paradigms and Architectures first - those are the skills that will be portable across tech stacks and will be useful for a longer period of time.
For OOP, I actually enjoyed Head First Object Oriented Analysis and Design [1]. The Head First books aren't for everyone, but I like they way they encourage you to do exercises to help reinforce what you've learned.
For RESTful services, I found Roy Fielding's original PhD dissertation on REST[2] to be quite helpful for a conceptual overview. It's a long read, but I enjoyed it.
For Spring and Spring Boot, I've found the official Spring guides[3] to be better than any of the books I've read. So many Spring books seem to go out of their way to try to be as long as possible. The guides, on the other hand, tend to be short and to the point.
As for general books...the one I always circle back to is Structure and Interpretation of Computer Programs[4]. I found that once you've worked through it, so many aspects of programming just make more sense. Lots of people find it a difficult book to work through, but I've found that the more times I revisit the book over the course of my career, the more helpful it is. Every time I read it I seem to have an 'aha!' moment I hadn't experienced previously.
[1] https://www.amazon.com/Head-First-Object-Oriented-Analysis-D...
[2] https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding...
Yes the two categories were intentional, because i want to build up a strong base, as well as get better at what i am already doing.
* How To Design A Good API and Why it Matters https://www.youtube.com/watch?v=aAb7hSCtvGw
b.) General code structure - dont to read it cover to cover unless you like to, you will die of boredom, but definitely have a look in library. It will help you to think about code structure right way.
* Refactoring: Improving the Design of Existing Code * Code Complete
c.) Object Oriented Programming
* Design Patterns: Elements of Reusable Object-Oriented
The three books I recommended are older, but not much changed in basics of object oriented programming. They are well readable. I would also recommend to read something on functional programming, mostly so that you see another approach too and thus wont go too far with object design where it does not suits.
d.) 8.) I read awesome book on estimations, I really really hope it is this one:
* Software Estimation: Demystifying the Black Art
tldr: There is difference between negotiation and estimation, make sure you know which you are doing. Split it into smaller tasks and then estimate minimum, maximum and most likely. Then calculate (min+4*likely+max)/6. Surprisingly, it works and is faster then do one estimate. It is also more precise then anything else I tried. I really hope I shown you right book.
e.) On Spring and rest, I would recommend to read documentation and write own code. I don't recall a book that would blow my mind, so I guess any will do.
f.) For general "latest tech" learning, I like https://dzone.com/ site. There are mostly techie tech articles - they are not news site like hacker news or arstechnica. They have "zones" for different interests, java zone is here: https://dzone.com/java-jdk-development-tutorials-tools-news . Pick up zones and make a habit of reading one article a week or something like that.
It doesn't has lots of stuff on Spring boot/Microservices but that can be updated later on. For MongoDB you should check Mongo's free online course for Java developers.
Effective Java by Joshua Bloch.
For Spring:
Pro Spring 3 by Harrop and Ho was useful to me in getting a basic CRUD application running.