In my company, there’s a good focus on self-improvement, and that focus often operates at the team level. To this end, the QA group spends an hour a week reading a book on a topic of interest. When it came time to choose our last book, I opted for a tutorial book on Java. There were a few options that made the short list, including:
Though my inner geek wailed and moaned, the consensus was reached to next read Java for Dummies.
Now, maybe I got into this with the wrong mindset. I have read the first two books in the list. I liked them (especially Eckel’s Thinking in Java). Head First Java is more of a beginner’s book, but it’s very interactive and spastic, and even expects the reader to scrawl and doodle on the page. That’s not conducive to a reading group book. Thinking in Java is very cerebral, very comprehensive, and sometimes difficult to follow. It’s not the sort of book you read out load, because that would be far too slow for a nigh-1500 page tome. Since I couldn’t rightly fight for the devils I know, it was with a heavy heart that I gave in to the devil I didn’t.
The author wastes little time buddying up to the reader. The casual language, frequent breaks for anecdotes or *shudder* puns… these can be distracting to a group focused on learning. There are so many elements of the book that are orthogonal to the topic at hand that, were they trimmed from the final copy, we could wind up with less of a book and more of a pamphlet.
Scarcely a page goes by wherein we do not find reference to another chapter, ahead or behind. The need to explicitly refer the reader to previous or future chapters is a bad writing smell, and indicates a need to restructure your book, as well as a lack of faith in the reader to retain the information earlier provided.
Actual, actionable information is thin. Examples are incomplete, often insufficiently explained, and include paradigms not yet (or not EVER) explained to the reader. There are no exercises provided for the “learn by doing” reader. Much of the book is less an exploration of the Java language and its capabilities than a tutorial for operating the included IDE software, JCreator. I was particularly offended by an inset block of text titled: “All about generics”. In Eckel’s book, Java generics are given nearly 200 pages of exploration, and even then with the caveat that the information was not exhaustive, with references to even more complete sources of information at the end of the chapter.
Inheritance is only glanced over, polymorphism is all but ignored, first-class elements of the language like access modifiers and other keywords are completely left out. There is no description of any of the tools included with the JDK. JavaDoc and annotations are avoided like the plague. No mention is made of techniques to test one’s code, nor advice on how to break large problems down into small, reusable units of code.
I can’t recommend this book to anyone. If you’re learning on your own, I recommend Head First Java. If you’re looking to fill in gaps in your knowledge, I recommend Thinking in Java. If you’re leading a class or a reading group, I’d love to hear what book you choose.

This book was an impulse purchase. About a year ago, I was wandering through my local book mega-store with my wife, looking for guides on how to raise a puppy. As I tend to do, I gravitated toward the technical section of the bookstore. I had taken a few classes on Java at my local community college, and wanted to eventually make a living at it, so I scanned the available books on Java. That was when Java Power Tools caught my eye. This book is certainly focused on Java, but it is not a programming manual, not a language specification, not an exam study guide. It is a reference that leads the reader through the extensive world of open-source tools written to make Java software development easier and more fun.
Any organization worth its salt uses at least some of the tools described herein, and many of the larger-scale enterprises will use quite a few, often together in interlocking ways. If you’re serious about Java development, you need to know how to use the available build tools, unit testing frameworks, issue trackers, source control management, continuous integration, code coverage, and profilers. This book answers the vital questions of: ”what is it?”, “where can I find it?”, “how do I use it?”, and “why do I need it?”.
As a young tester peeking my head out of the black box for the first time, I found answers to all the questions that I had stored away in my head about these mysterious terms “Ant”, “CruiseControl“, “JUnit“, and “CVS”. Most importantly, I had finally internalized that there is far more to Java software development than just the programming language chosen. In order to develop and release quality software, an organization must rely upon many tools (power tools) to work with the greatest possible efficiency and focus. In the past year, I’ve used many of these tools myself, either to improve my organization’s build and release process, or to power my own Java-based automation framework. I don’t know that I could’ve progressed with as much confidence and persistence had it not been for this book. I’d recommend it to any blossoming Java developer, quality assurance professional in a Java shop, or project manager looking to improve the release process.

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Back
Void
Life « Default
Earth
Wind
Water
Fire
Light 