Hacker News new | ask | show | jobs
Good learning material – JAVA, Spring
30 points by siropa 3066 days ago
Hi! I graduated college and am two years into Software development and would like to keep up with the latest technologies/ hone my skills. What books/learning materials do you guys suggest for following topics: 1. Spring 2. Springboot 3. JAVA 4. Object Oriented programming 5. Mongodb 6. Microservices 7. RESTful webservices 8. Any general books all programmers must own

Thanks :)

9 comments

Oh wow - this is actually a really big and important question.

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...

[3] https://spring.io/guides

[4] https://mitpress.mit.edu/sicp/full-text/book/book.html

Wow! Will definitely look into those! thankyou!

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.

a.) On java - one hour talk but good:

* 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.

Bookmarked :) Thankyou!
Apart from the resources already mentioned (the official Spring guide in particular alongside the tutorials) Mkyong.com is a terrific tutorial site for everything Java and Spring Boot: https://www.mkyong.com/
Jhipster is a great tool for generating starter Spring Boot projects. Here is a recent Pluralsight course that will walk you through using it https://www.pluralsight.com/courses/scaffolding-spring-boot-...
Awesome thanks!
https://github.com/Developer-Y/all-things-java

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.

For Java:

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.

Keep in mind too that Effective Java was recently updated/rewritten a long time after the second edition was printed. So to the OP make sure you look at the third edition and not the more linked to/blogged about/higher visibility in google second edition.
That depends, are you interested in a particular technology or skill? Please be more specific.
Thanks! I updated my question
Lesson 0: It's "Java", not "JAVA".
I use baeldung.com for spring tutorials a lot