Monday, June 30, 2008

Mini-Review: Head First Java, 2nd ed. by Kathy Sierra and Bert Bates

Head First Java by Kathy Sierra and Bert Bates, cover image.
Head First Java, 2nd Edition
Head First Java is a great book for describing many of the confusing aspects of the Java language. It is easy to read, written in a light style, and it uses lots of graphics to break up long runs of text. Many of the graphics in the book illustrate key concepts of Java.

Not For Raw Beginners, But Close to It


For an experienced programmer new to Java, it can be used to learn enough about Java to get a strong basis in the language. It covers a lot of the language, enough to get someone from just starting out to the point where they're capable of carrying on learning with the official documentation or books on specific programming subjects within Java. It starts out at a point that will probably not be basic enough for non-programmers to start learning, but if the non-programmer has a mentor, or another book specifically intended for non-programmers, it will make an excellent supplement.

The Best


The most valuable parts of the book are the places where it takes concepts of object oriented programming, design patterns, and how Java works and breaks them down into bite-size pieces for the reader. It uses a number of different approaches for explaining the concepts it
covers, so the material is varied enough that it doesn't get stale with reading.

Fun Exercises


It also includes a variety of exercises so that the reader can test their knowledge. Since these take the form of puzzles, it makes it easier and more fun to do them than the standard numbered list of exercises at the end of a chapter that you get in most textbooks.

Planned Obsolescence


The book has its shortcomings, of course. One thing that I found annoying was that many of the programming examples started out flawed, purposefully, to illustrate points of features of the language. In some cases this worked, but in others the shortcomings of the initial flawed solution were so obvious at the outset that it was frustrating to keep following along with the text (even for beginners, not just for me.) In other cases, too much space was given to the bad solution before the shortcomings were described and a better approach was taken.

OO Jingoism


Also, the attempts at explaining the advantages of object oriented programming versus procedural programming are strained, and somewhat unclear in the later stages. Realistically, this is a hard argument to make since the difference between good procedural programming and object oriented programming is diminishingly small. Likewise, many procedural languages have many of the features of object-oriented languages. At any rate, the point seems somewhat forced and belabored in this book.

Clarification Unclear


Another fault is that some of the exercises are unclear as to what is expected in the way of answers. The student is left to flounder, and what looks like an attractive and fun puzzle turns into a source of frustration. In these (infrequent) instances it's best to just move on.

Artistic Annoyances


The art also falls short in places. It falls just short of being sufficiently varied. The faux-retro look slips in some places. There are thought balloons in places where speech balloons belong. These are minor niggles, but they add an edge of abrasiveness to the book and its style, particularly in the latter portions of the book.

Final Grade: 93/100, A


The book's flaws are minor in comparison to its strengths. It's a book I can heartily recommend to someone learning Java. It is usable either as a main text, or as a supplemental book where you can read clearer and more verbose descriptions of what's going on when something about Java leaves you wondering what the heck is going on.

Pros:
  • Easy to read.

  • Excellent clarifications of many concepts.

  • Fun exercises.


Cons:
  • Some presentations follow poorly laid 'false trails.'

  • Some exercises unclear.

  • Some art needs a tune-up.


Recommendation:
Buy, either for a main learning book (for experienced programmers), supplemental book (newbies or experienced), or as a backup reference for Java concepts (it's a must-have for this).



2010; Edited to Add:
This book is still one of the best out there. It's starting to get a little outdated. I can only hope that O'Reilly decides to fill a couple of trucks with cash and back them up to the homes of Kathy and Bert to induce them to produce an update for this book. It would be a shame to see such a useful and valuable book be lost due to the ongoing changes in Java.

There are other Java resources that have developed in the meanwhile, but none really take the place of this book.