Book · 2001
Effective Java
by Joshua Bloch
Joshua Bloch turns fifty-plus Java gotchas into itemized rules, and one of them — favor composition over inheritance — outgrew the book entirely.
What does Reddit think of Effective Java?
Effective Java's fifty-one mentions split almost evenly by intent. r/cscareerquestions treats it as a simple, unqualified rec: "if you're into java then Effective Java by Joshua Bloch" (↑72), while r/ExperiencedDevs engages with what's actually inside it. A 133-upvote comment credits the book with popularizing "favor composition over inheritance," tracing the advice to a concrete failure mode: deep inheritance chains turning into what the commenter calls tight coupling that gets messy fast. That's a rule that escaped the book and became default advice independent of it. On r/learnprogramming it shows up bundled with SICP, Clean Code, and Code Complete (↑169) rather than singled out — one Java-specific title among general-purpose classics. Sentiment runs positive in both cscareerquestions and ExperiencedDevs, though the overall pool stays mixed once r/programming's neutral-scored entries get folded in.
Community feedback & reader fit
Themes
- · Composition-over-inheritance as the book's most successful export
- · Java-specific scope inside general programming-classics lists
- · Item-numbered format built for reference, not cover-to-cover reading
- · Recommended conditionally on the language, never universally
Common praise
- + r/ExperiencedDevs credits it directly with popularizing "favor composition over inheritance," a rule that outlived the book's own shelf life.
- + r/cscareerquestions recommends it without qualifiers the moment someone says they're doing Java — no hedge, no "read this other thing first".
- + It sits comfortably next to SICP and Code Complete on a learnprogramming classics list, not as the token weak entry.
Common criticism
- − Nothing in the displayed excerpts defends the book past the composition-over-inheritance point — the rest of its fifty-plus items go uncited.
- − It only earns a recommendation when someone explicitly says Java; nobody argues for reading it if you work in anything else.
- − r/programming contributes zero scored-positive mentions here — the enthusiasm clusters in career-focused subs, not the technical one.
Who it's for
Reach for this if you're already writing Java and want specific mistakes named instead of general craftsmanship advice. The composition-over-inheritance chapter alone earns its keep by r/ExperiencedDevs' account — treat the rest as reference material to dip into, not a cover-to-cover read. Coming from another language entirely? Nothing here argues you should bother; every recommendation is conditional on the language.
Mentions over time
Which Reddit comments matter for Effective Java?
The most relevant excerpts across the subreddits where this book is mentioned — opinionated, argued takes first, then top-upvoted mentions. Click through to read the full thread.
“As in all things in software, I think the advice in the book is largely situational. Did reading Uncle Bob make me a better programmer? I believe so. Do I dogmatically adhere to all these things in code reviews? No. Because "clean" is subjective and at the intersection of consistency and time spent …
“Here's my list of the classics: **General Computing** * But How Do It Know? - The Basic Principles of Computers for Everyone * The Elements of Computing Systems: Building a Modern Computer from First Principles * […
“SICP, Clean Code, Code Complete, [Effective Java](
“I haven’t read Shapiro, but effective Java popularized the phrase “favor composition over inheritance “. From memory inheritance is just another word for tight coupling which can get messy quick. Once you have legacy code with 3+ levels of inherited stuff it’s a total bear.
“A carpenter doesn't need a deep background in material science and similarly a background in CS theory is not really needed if you work as an application developer. Your database and libraries will take care of implementing most of your algorithms and data structure needs. Where you should be looki…
“This was a limited study of a very narrow slice of what "programming" involves: "We conducted a controlled experiment with 37 participants using electroencephalography (EEG) and eye tracking. We asked participants to comprehend up to 32 Java source- code snippets and observed their eye gaze and neu…
“Clean Code is good. How to Win Friends and Influence people is also good for soft skills. If you write Java I'd also say Effective Java is also great for learning general do's and don'ts
“Clean Code is the most versatile. Effective Java is great for Java devs. Practical Object Oriented Design In Ruby is great for Rubyists(and it just works as a great book imo). Also, I've really been enjoying 'The Rust Programming Language'. It teaches Rust, and Rust has unique attributes to it, but…
“Effective Java is a masterpiece for any Java aspirant.
“You should read Effective Java. It's all about identifying the common anti-patterns, and how to refactor them into cleaner, more maintainable code. As for actually getting to practice it, active reading is the best way. When you get to a new section in the book called "Do X instead of Y", see if yo…
“Effective Java has a good example of the problems that inheritance can cause. The example is: you have a List class. You want to instrument it to know how many items were _ever_ added to the List. So it's not the same as `size`; it's at least as large as `size`. The public API of the List class lo…
“I see *Effective Java* recommended a lot. The latest version is only current through Java 9, but that should be more than enough:)
“The Person/Student/Teacher example is clearly mixing levels of abstraction. The function working with generic Person shouldn't know about Student, nor Teacher. Yes, the syntax allows it, but it isn't a very smart to use it that way. OP, if you want to learn more, I recommend you to read Effective…
“Effective Java by Joshua Bloch. The ideas in that book extend far beyond Java and even object oriented programming in many cases. Much of the advice centers around making the interfaces between components of your program as simple and well documented as possible. With simpler interfaces, tests ar…
“I've also heard effective Java is good for learning more advanced aspects of Java and OOP.
Convinced? Pick up Effective Java
Readers also mention
Books that share discussion threads with Effective Java — counted from the comments, not curated.
Effective Java — frequently asked
Is Effective Java only useful if you write Java professionally?+
That's how Reddit treats it. The recommendation on r/cscareerquestions (↑72) is explicitly conditional — "if you're into java then Effective Java" — not a general programming-books pick. It shows up on broader classics lists too (↑169), but always alongside language-agnostic texts like SICP, never replacing them.
What's the most-cited idea from Effective Java on Reddit?+
Favor composition over inheritance. A 133-upvote r/ExperiencedDevs comment credits the book directly with popularizing the phrase, connecting it to a concrete failure mode: three-plus levels of inherited legacy code becoming, in the commenter's words, "a total bear." No other specific item from the book gets cited in the displayed data.
Does Effective Java hold up next to Clean Code?+
The comparison isn't made directly in the displayed excerpts, but the two keep appearing on the same lists (↑169) without either getting singled out as better. Effective Java's citations lean technical and specific — one rule, one mechanism — where the Clean Code discussion in this dataset runs more general and more argued-over.
Should beginners start with Effective Java?+
Nothing here suggests it. The learnprogramming appearances (↑169, ↑257) place it inside classics lists aimed at people already past fundamentals, and the cscareerquestions recommendation is conditional on already being "into Java." It reads as a second book, not a first one.