The Pragmatic Craftsman         :: Simplicity from complexity :: | About Me |

You are here: The Pragmatic Craftsman > Books

Book Review: stylin' with CSS May 16, 2008
Book Review: Spring in Action February 17, 2008
Book Review: Test Driven January 2, 2008
Object-Oriented Analysis and Design with Applications October 5, 2007
Ajax on Java October 4, 2007
JBoss At Work May 2, 2007
Java Concurrency in Practice March 8, 2007
Enterprise Integration Patterns January 12, 2007
Java Servlet Programming January 12, 2007
The Timeless Way of Building November 7, 2006
Design Patterns (GoF) October 20, 2006
Pattern-Oriented Software Architecture, Volume 1: A System of Patterns October 4, 2006
Patterns of Enterprise Application Architecture by Fowler August 15, 2006
Programming Pearls by Bentley August 15, 2006
Object Solutions -- Grady Booch July 13, 2006
Teach Yourself Regular Expressions in 10 Minutes July 13, 2006
Programming on Purpose -- P.J. Plauger May 5, 2006
Beyond Code April 23, 2006
My Job Went To India April 23, 2006
XP Explained April 5, 2006
Non-Designers Design Book March 29, 2006
Don't Make Me Think March 14, 2006
Surviving Object-Oriented Projects March 14, 2006
JUnit in Action February 23, 2006
Becoming a Technical Leader by Weinberg February 22, 2006
10 Books Every Java Software Engineer Must Own February 8, 2006
Hibernate Quickly December 1, 2005
Spring In Action November 7, 2005
The Best Software Writing I September 18, 2005
Rapid J2EE Development by Monnox June 21, 2005
My Book List May 26, 2005
Refactoring To Patterns by Kerievsky May 25, 2005
Professional Software Development by McConnell May 15, 2005
Software Craftsmanship by McBreen April 26, 2005
Programmers at Work: Interviews February 10, 2005
Holub on Patterns by Holub January 30, 2005
Effective Java by Bloch January 25, 2005
Dynamics of Software Development by McCarthy November 26, 2004
Developing Enterprise Java Applications with J2EE and UML by Ahmed, Umrysh November 10, 2004
J2EE Design and Development by Johnson October 28, 2004
The Psychology of Computer Programming by Weinberg August 20, 2004
Facts and Fallacies of Software Engineering by Glass August 10, 2004
Applying Uml and Patterns by Larman October 26, 2003

Book Review: stylin' with CSS


stylin' with CSS
by Charles Wyke-Smith
ISBN 0321525566
Date Read 5/2008

My Rating

I looked at this book over at B&N and it got me hooked. Especially the chapter on how to do some basic page layout. I could not believe how simple it could be! The author really got me very interested and that eventually led to me buying this book. I'm glad I did. :-)

If you're a Java developer like me or a CSS beginner, this is a great book to get you started. It's really easy to read. Complex concepts are explained in an easy to understand fashion. And the author follows and breeds best practices. These and many others, make this book excellent.

The book is broken in 7 chapters.

The 1st chapter explains the basics of HTML, the different standards and how the page is structured. Simple chapter, but it's important to understand the basics.

The 2nd chapter, How CSS Works, is really a CSS 101. Basic stuff as well, but as in the first chapter, this is a fundamental knowledge.

Chapter 3 is more of a reference guide on how to style fonts and text. Some very useful info.

Chapter 4 is where the interesting stuff starts: positioning elements. An excellent overview of the box model and some good information about floating and clearing.

Chapter 5 is the best chapter in the book. It goes over several ways to create page layouts. Want to create a 2-column layout? A simple example is shown. How about a 3-column layout? 3-column liquid layout? With the techniques presented by Charles, you can create any type of a layout and you will actually understand what's going on. Really neat stuff.

In chapter 6, focus is on styling tables, forms, and menus. The author basically presents some techniques on how to style tables for tabular data, and explains the technique on how to create CSS menus. Good chapter to dive in when you're involved with these.

Chapter 7 summarizes the overall process of building a real site.

I learned several new techniques and tips from this book. I love how the book makes complicated things simple: this is my type of a book. Also, Charles has a good way of making sure these things come across and stay in your head. Not a simple thing to do, but he did a great job.


Book Review: Spring in Action


Spring in Action
by Craig Walls, Ryan Breidenbach
ISBN 1933988134
Date Read 1/2008

My Rating

One Minute Review
Positives
* Excellent overview of Spring (good coverage)
* Not too detailed; not too light
* Excellent writing style

Negatives
* Feels lengthy
* Too pro-spring

Positives
What's not to like? I think this is an excellent resource for the Spring Framework. I liked it as a refresher for some of the Spring 2.0 features, but I'm also going to use it as a reference.

This book is easy to read. It has a clear writing style. The author focuses on the important parts, and the subject changes quickly, as Spring's coverage area is huge.

One of the chapters I really liked (based on my previous experiences), is the web services chapter. Nice and simple. Easy to get it working locally. The Spring/Xfire combination is the best and easiest web services configuration I've seen: inject web services beans into the class and your class is not even aware it's using web services! Very powerful abstraction.

Negatives
I read the first edition of the book and I remember it as a quick read. No longer. This edition is over 700 pages! (On the other hand, this is a much better edition in terms of content.)

No mention of Java Config! As far as I know, you can now configure Spring in Java, no XML. It might be Spring 2.5 (I thought it was 2.0).

I think the author could be a little more bold. Yes, Spring is great, but it has some negatives. I did not learn about them in this book. The author has a very "neutral" position. I guess this is my personal desire to see a book that would tell me how to use Spring effectively, some anti-patterns, ie. Effective Spring (if you read Effective Java, you know what I mean).

Summary
Excellent overview of Spring. Good coverage on almost all Spring features. Could be more detailed at times, but overall it does an excellent job introducing the different parts of Spring. I recommend this book to anyone who is using/considering Spring.


Book Review: Test Driven


Test Driven
by Lasse Koskela
ISBN 1932394850
Date Read 12/2007

My Rating

One Minute Review
Positives
* Excellent coverage of Test Driven development
* Covers many development best practices
* Excellent writing style

Negatives
* Could be more concise

Summary
This is an excellent book on TDD -- I think it's the best book on the subject. At first, I thought this book is going to be just a review of the commonly known practices: test-code-refactor. Not true! In this book, I learned a lot more about this practice (of course), but also about how to do other types of testing (servlet, db, jsp, swing, and more), and also about the different tools available for the task. I really liked the author's open, direct style of writing. Makes it an interesting and a worthwhile read.


Object-Oriented Analysis and Design with Applications


Object-Oriented Analysis and Design with Applications
by Grady Booch and others
ISBN 020189551X
Date Read 9/2007

My Rating

I am part of a book review team at Javalobby. I get a chance to get a free book, write a review, and get published. Not a bad deal. :-) I am not the biggest fan of the long review template that we use, but I have to follow what the team leader decided. :-(

This is a second book I reviewed for Javalobby. You can read the review at Javalobby.org here. Enjoy it.

One Minute Review
Positives
* Great use of abstraction
* Excellent (concise) UML 2.0 tutorial
* Filled with lots of useful ideas

Negatives
* Reads dry at times
* Too academic, too much theory

Summary
The information contained in this book is excellent. It has everything that you will if you want to adapt the Unified Process, learn UML 2.0, and do object oriented analysis and design. However, it is a very theoretical book, which makes it hard to read – hard to stay focused at times. Nonetheless, it is a very important book.

Resources
Applying UML and Patterns - in my opinion, the best book on OOAD

UML Distilled - the most popular UML book


Ajax on Java


Ajax on Java
by Steven Olson
ISBN 0596101872
Date Read 8/2007

My Rating

I'm published outside of my website! Hooraah!! :-) I reviewed this book as part of a Javalobby.org book-review team. I get a chance to get a free book, write a review, and get published. Not a bad deal. :-) You can read the full review at Javalobby.org here. Enjoy it.

One Minute Review
Positives
* Covers AJAX: a new way to do web applications
* Simple examples


Negatives
* Does not show best-practice implementations
* Very light introduction
* Only simple examples

Summary
This is a decent introduction to the Ajax world and how it pertains to Java development. It's just an introduction: a light treatment of the subject. If you're new to the subject, and would like to find out what Ajax is and what types of Ajax frameworks exist, this book gives you a good starting point.

However, if you would like get a more detailed/complete information on Ajax, this book does not suit your need. What are the advantages/disadvantages of each framework, how should you use each framework? You are not going to find that information in this book.

In my opinion, this book falls short on teaching and aiding the reader what the right choice in the vast Ajax world is. The author falls short on presenting a well researched approach to the frameworks. The examples are too simplistic to fully get a good grasp on the frameworks. Also, the constant usage of bad practices made this book hard to read for me (see my Ch.7 review).

All in all, a good overview of Ajax on Java, but not much more.

Resources
List of Java Frameworks


JBoss At Work


JBoss at Work: A Practical Guide
by Tom Marrs & Scott Davis
ISBN 0596007345
Date Read 4/2007

My Rating


Good overall book on how to deploy J2EE apps to JBoss. It follows a step-by-step approach (which at times might be annoying, but it does the job). Not much theory, though. If you want to learn how to deploy to JBoss, then this is a good book. Otherwise, a good overview of J2EE and Hibernate, but the examples are very basic. The advanced topics like clustering and session management are missing. So, if you are new to JBoss, and are looking to deploy a J2EE app, then this book will help you. For a more detailed treatment of JBoss and J2EE, look elsewhere.


Java Concurrency in Practice


Java Concurrency in Practice
by Brian Goetz
ISBN 0321349601
Date Read 3/2007

My Rating

Want to learn about synchronization in Java? Do you know what's new in concurrency in Java 5/6? Not sure? Then this is the book for you.

This book introduces many new concurrency concepts introduced in the new versions of Java: Locks, BlockingQueues, Semaphores, Executors, Concurrent data structures and more (much more). There is a lot of new material, a lot of new topics. It's actually a major overhaul. The authors do a very good job introducing them.

It's not the most exciting subject, but the authors have tried to keep it interesting. This book has clear writing, simple examples, and good coverage on variety of topics. What else can you ask in a book on threads?

All in all, an excellent book: the best book on the threads in Java 5/6.

If you want to call yourself a well-rounded Java programmer, read this book.


Enterprise Integration Patterns


Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
by Gregor Hohpe, Bobby Woolf
ISBN 0321200683
Date Read 12/2006

My Rating

This is probably the best book on Enterprise Java Messaging. If that is what you desire.

This is not an easy book. I read it all, but I think to actually start implementing based on the patterns, I would have to reread portions of it. This book is loaded with patterns, some small, some larger. And it is a lot to absorb.

The only downside, for me at least, is that I have not worked on a messaging system before. It's hard to put the information from this book into context.

If you're working with JMS and Java messaging, you must read this book. On the other hand, if you're just looking for enterprise patterns, like I was, I think there are other, more applicable books.


Java Servlet Programming


Java Servlet Programming, 2nd Edition
by Jason Hunter
ISBN 0596000405
Date Read 1/2007

My Rating

I should have read this book years ago. It's an excellent book on Java servlets -- a servlets bible. But it shows its age now. But even so, it's still worth a read (while skipping some sections): it contains detailed knowledge about how the servlets work -- information not found anywhere else.

Discussion about session management, servlet codes, servlet lifecycle, environment variables, and more: you can all find it in this book. To add, this book is written in a very good, easy to read style.


The Timeless Way of Building


The Timeless Way of Building
by Christopher Alexander
ISBN 0195024028
Date Read 10/2006

My Rating

Excellent architecture book. From the pure architectural point of view, though. I was looking for more of a software design point of view. I did not find too much of it in this book. It was, nonetheless, a valuable read. Hey, I got to see what 'normal' architects go through, and what makes buildings live -- you can find a lot of that in this book.

Few interesting points. All patterns have to work together to form a whole, to make the structure uniform. One bad pattern will start destroying it, and eventually it will.

This book is all about thinking in general terms -- high level thinking. It's very important when architecting -- same is true when building software.

I also found something else interesting. In the last chapter of the book, the author says that you should throw away your ego. Once you "get" the pattern language, you should throw it away. When starting a new project, always start from scratch -- blank piece of paper -- and forget about all of the projects you did before. Only then you will create truly 'live' structures. Is this possible in software? In the age of frameworks, language dependencies, probably not.

Overall, a great architecture book; but not the software architecture book that I was looking for. (From what I find now, the second book in the series is more applicable to building software.)


Design Patterns (GoF)


Design Patterns (GoF)
by Ralph Johnson, Richard Helm, Erich Gamma, John Vlissides
ISBN 0201633612
Date Read 10/2006

My Rating

A classic.

I have read several books on patterns. This is the best. You'll get sound design principles as well. You will become a better designer if you read this book. If you can finish it -- you might want to take it slow...

This is not an easy book. I had tried reading it couple times but could never finish it. It was boring to me. I was getting distracted by the C++ code that this book has as sample code. But now, after finally reading it from start to finish, I can see that this book has great value.

This book is the definite guide to the most important patterns, the GoF patterns. These guys invented -- or first reported -- these patterns. Other books, which claim to simplify them and make them easier to remember (ie. Head First Design Patterns), don't come close to this book. Some of them are helpful, though, and you might want to start with them before you read this book -- learning patterns is hard.

There are several approaches in how you can read this book. The authors say you can just select a pattern you are interested in and just read it. I think the best way to read this book is to start with the indroductory chapter, which contains a lot of great advice on design in general; get to know the patterns referenced in these chapters; and then read one of the three major sections: creational, structural, or behavioral. The author refer to patterns in each section, so I think it's good to read the whole section. It is also good to have other examples of the patterns to look at -- you can find many by searching the web.

The GoF patterns are the most important and most widely used patterns. Every architect/senior developer needs to know them. This book is a must have.


Pattern-Oriented Software Architecture, Volume 1: A System of Patterns


Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal
ISBN 0471958697
Date Read 9/2006

My Rating

This is one of the best design patterns books. I am not the only person that's saying that. Check out Amazon.com reviews, check out recomendations from Martin Fowler. If you're into architecture, this is a must read. (As a side benefit, you'll enjoy reading it.)

By reading this book, you'll not only gain design patterns knowledge, you'll get an excellent discussion about architecture in general, and a great OO design discussion.

This book is broken up into eight different sections. The three sections that I enjoyed the most (major part of the book) are architectural patterns, design patterns, and patterns and software architecture discussion.

In the architecture patterns section, the authors have an excellent discussion about the Layers pattern, the Broker pattern, MVC, and Presentation Abstraction Control. I especially enjoyed the Layers and the Broker pattern. (My understanding of the Layers pattern was a little different before reading this book.)

In the design section, I found the following especially valuable Whole-Part, Master-Slave, Forwarder-Receiver, and Client-Dispatcher.

The discussion about software architecture in general and about object-oriented design in chapter 6 is one of the best. It's always good to refresh your mind how your project should be structured, the qualities it should have. Always valuable.

This is a must read if you're into architecture and design. You will become better at it by reading (and implementing) the patterns cointained in this book. One of my most valuable books.


Patterns of Enterprise Application Architecture by Fowler


Patterns of Enterprise Application Architecture
by Martin Fowler
ISBN 0321127420
Date Read 8/2006

My Rating

Excellent patterns book. Written in a pragmatic language.

Fowler talks about patterns that relate to domain logic, remote services, data source and more. Even though you probably heard a lot of the patterns discussed in this book (if you've been following patterns), you will learn from this book.

Fowler presents the patterns in an interesting way. He tells you how he used it, what worked and did not work for him. He gives you a lot of insight, which in the pattern world, is very important I think as it gives you the context you can use the pattern. It's good to see what problems he went through, the issues with the potential solution. This book gives you exactly that.

The book has two sections, the first, around 100 pages, is where he discusses the patterns and tells you when to use it. The section about layering the architecture is excellent. The overall section is quick to read. After reading this section, you basically read the whole book.

The second section is the pattern reference where all of the patterns are listed.

The best thing in the book is the author's pragmatic language and very good, simple examples

This is an important book in my architecture/design library. I plan to re-read this book every year or so, in addition to having it on a side as a reference.


Programming Pearls by Bentley


Programming Pearls
by Jon Bentley
ISBN 0201657880
Date Read 7/2006

My Rating

This is an important book, no doubt about that. For me, however, this was not an easy read. I never got into the book. Maybe my approach was wrong, maybe if the examples were written in a different language than C, maybe... I don't know.

What I liked about the book is the principles that usually followed at the end of chapters. Those had the most value for me and those alone are worth reading the book.

Why do others give this book such a high rating? I think the real benefit is in trying to actually do the problems at the end of each chapter. I did not do them (and thus I probably did not gain too much out of it). Personally, I think they're a little bit too low level. They're very good if you're trying to learn data structures and algorithms.


Object Solutions -- Grady Booch


Object Solutions : Managing the Object-Oriented Project
by Grady Booch
ISBN 0805305947
Date Read 6/2006

My Rating

I love reading what Grady Booch has to say. He's an authority to me. In this book, he gives a lot of good advice. He gives a lot of good information what OO should be like, not just projects but advice on how to do better OO design. That's good stuff. This book, however, shows its age. The good stuff is mixed with at times "dry" information, boring at times. A better format of the book would help as well. Nonetheless, a valuable book to read.


Teach Yourself Regular Expressions in 10 Minutes


Sams Teach Yourself Regular Expressions in 10 Minutes
by Ben Forta
ISBN 0672325667
Date Read 5/2006

My Rating


This is a great intro book to regular expressions. The best, I would say. This is the first book I read on regular expressions. I loved the short-chapter style; I loved the examples and the referenced program to run them (though now I can run RE in Eclipse). Like I said, this is the best intro to RE, a valuable tool in your toolbox. For a more advanced book, Mastering Regular Expressions is considered a bible.


Programming on Purpose -- P.J. Plauger


Programming on Purpose
by P.J. Plauger
ISBN 0137213743
Date Read 5/2006

My Rating


This book is dated, no question about it. However, it contains several excellent essays that are as relevant today as they were decades ago.

A lot of the techniques discussed in the book are no longer used. This was a book written in the days of structured programming. Those days are over. Thus, I found several of the essays boring. I could not put my full attention into them. They seemed dry.

Several essays in this collection were priceless, though. Worth buying the book just for those. Which Tool Is Next (Ch.7) is an excellent intro to software engineering. It contains several excellent analogies and definitions of software engineering. I think the best essays in the book are the last 5: the author talks about OO Principles and Software Engineering in general. The chapter on Encapsulation (Chp 21) is the best I've read. The chapters Heresies of Software Design (Ch 23) and Remedial Software Engineering (Ch 24) are just so "capturing." They explain what works and do not work in software engineering. They define the whole software engineering industry.

Like I said, this book is dated. But because of the several excellent essays, this book is a keeper. Those essays are worth re-reading. The author is a great teacher, good writer. Most of all, the author speaks from his own experience (years of it).


Beyond Code


Beyond Code: Learn to Distinguish Yourself in 9 Simple Steps!
by Rajesh Setty
ISBN 1590791029
Date Read 4/2006

My Rating

This book is similar to My Job Went To India. However, it's shorter and reads smoother. It focuses mostly how to improve yourself; how to distinguish yourself. The author has been there, and he tells interesting stories. He has excellent quotes in each chapter. Excellent book recommendations on the back.

Even though a lot of the information can be found elsewhere, the author presents it in an interesting way.


My Job Went To India


My Job Went To India
by Chad Fowler
ISBN 0976694018
Date Read 4/2006

My Rating


When I first looked at the book, I judged it by the title. I thought, what a stupid title. I did not even look into it. But then I saw recommendations from some people and overall good reviews. I jumped in, bought it, and read it.

If you are scared that your job might go to India, this is a required book for you. Otherwise, you will find a lot of good tips and valuable information that will help you become a better developer.

This book is a quick read. It cointains short 1-2 page chapters -- 52 of them. Or you can call them "short lessons." As I read, I kept telling myself: I need to do that, or I need to do that more often. Some info is common sense, but it serves as a good reminder.


XP Explained


Extreme Programming Explained (E-book from ACM)
by Kent Beck
ISBN 0201616416
Date Read 3/2006

My Rating


Extreme Programming is a good, agile process. It is a disruptive force in the software community. Some XP practices are really good and worth adopting, and some are not so good, I think.

This is a well written overview of XP. If you just want to see what XP is all about, then this book is for you. It is a general overview of XP. For that purpose, the author does an excellent job. However, it's just an overview, and if you're looking for a lot of details, you might be dissapointed.

There is not enough detail. I want to see examples of the stories, I want to see the whole process actually work in a example from start to finish. I was not able to find that in this book. There is not enough detail for me.

If you want an overview of XP, this book is for you. If you want a lot of details so you can actually implement XP, look elsewhere. Overall, a good book on a software development process, and might help you improve your process.


Non-Designers Design Book


The Non-Designer's Design Book
by Robin Williams
ISBN 0321193857
Date Read 3/2006

My Rating


It's a great little book for people like me: I have no clue about design. I am not going to become a designer after reading this book, that's for sure. But I liked the book. I gained some "design" knowledge. I know -- by name -- the different aspects of design now: proximity, alignment, repetition, and contrast. I've also validated some of my thoughts on design. A good, handy book. It's an easy and a quick read.


Don't Make Me Think


Don't Make Me Think
by Steve Krug
ISBN 0321344758
Date Read 3/2006

My Rating

This is a required reading for UI designers, web developers, and very useful for web users. That covers almost anybody, right? Written in a style that is accessible to anybody, so why not? Anywhere you fit in that group, you will benefit.

Think about yourself as a web user. When you visit a new site, what happens? Do you spend a lot of time figuring out where everything is, or do you quickly scan it then if you find you're looking for, you click on it. I certainly follow the latter. And I've gotten frustrated a lot of times when a site is making it hard for me to see where I am, what the site is all about. I give up a lot of times. But I know, now, because of the book, that the site is badly designed. On the other hand, I appreciate the sites that just seem right instantly.

This book is very valuable. I learned how users browse (they scan). I learned what users don't like (they don't like fancy stuff). I learned what users like (standard, intuitive interfaces). I became a better user because I see this when I browse. I became a better developer, because I know that users don't think and I try to make it as easy as possible for them. I think about that when I design an interface.

This is an excellent book. It is a quick read (you can even read it in a bookstore in one or two sittings). I bought the second edition, but it doesn't differer too much from the first. This is the best, most intutive, and the shortest book on UI I've read.


Surviving Object-Oriented Projects


Surviving Object-Oriented Projects
by Alistair Cockburn
ISBN 0201498340
Date Read 2/2006

My Rating


It is a decent book, and the author has a good writing style, but I think this book is more geared towards project managers than software developers. I enjoyed it, it was a quick read, but never really "got into it."


JUnit in Action


JUnit in Action
by Ted Husted, Vincent Massol
ISBN 1930110995
Date Read 2/2006

My Rating

This is a very good JUnit book, and a good programming book. There were a lot of things I liked, and some things I did not.

What I liked. This is the best JUnit book out there. It contains a lot of good advice. The author explains a lot of the best practices that every developer should be following. That's good stuff. It is a very well written, easy to read. The examples in the book are very good as well.

What I think is missing. This is a comprehensive JUnit book. And it covers most of the topics that will be of interst to a tester. However, it does not cover HttpUnit (not that I would use it, but still). Plus, its coverage of Mock objects could be improved. This is a very important topic that should have its own chapter and be clearly explained. The book contains pieces of it, but not enough for me.

If you're looking for a JUnit book, this is the book for you. (I want to get JUnit Recepies, but the book just looks and feels too big.)


Becoming a Technical Leader by Weinberg


Becoming a Technical Leader
by Gerald M. Weinberg
ISBN 0932633021
Date Read 1/2006

My Rating


Even though I'm not the prime target of this book, I really liked it. Weinberg explains the different leadership styles with good detail, and with a pragmatic style. I learned a lot of what a good leader should be. This book made me better, as well. I started writing a 5-minute a day journal. I'm enjoying doing it. It helps me to learn of who I am, and what I want to become.

But who is the prime target of this book? I would say that if you have been managing a group of people, this is a must read for you. I am not a manager, but I would like to become one eventually, and this was a good book for me (not required, though). You would benefit the most from this book if you have had some experience leading. I plan to re-read it down the road.


10 Books Every Java Software Engineer Must Own

I came across a list of Five books every Java developer must own by Rob Sanheim. I commented on the list. But the list got me thinking. What are the books that I consider the "must have" books? Today's Javalobby newsletter just added to the fire. I had to create the list. So here it is.

1) Effective Java, Joshua Bloch
A lot of people just code in Java, without being aware of the implications. This book clears out those implications.

2) Code Complete 2, Steve McConnell
This book will make you a better programmer. Enough said. My favorite.

3) Refactoring, Martin Fowler
It is getting a little old, but it contains invaluable information on good design, code smells, and more.

4) Design Patterns, GoF
The best book on patterns, though not an easy one. Might want to get the Head First Design Patterns to help you.

5) Core J2EE Patterns, Deepak Alur, Dan Malks, John Crupi
You have to know GoF patterns if you call yourself a good programmer. You have to know Core J2EE patterns if you want to be a good Java programmer.

6) Agile Software Development: Principles, Patterns, and Practices, Robert Martin
Not an easy book, but a best book on Agile, good Object Oriented programming, and patterns.

7) Applying UML and Patterns, Craig Larman
Java is an Object Oriented language, but a lot of people still treat classes as data structures. Learn what an object, and OO programming is all about.

8) Pragmatic Programmer, Andrew Hunt, David Thomas
Contains sound practices, good advice. It will make you a better programmer.

9) Facts and Fallacies of Software Engineering, Bob Glass
See what works in software engineering, and what doesn't. Bob Glass explains it best.

10) Don't Make Me Think, Steve Krug
A great little book, great when you're involved in UI.

Wait List
I have not read these, and that's why I have not put them in my original list, but the books below should be on your must-read list.

Peopleware, Tom Demarco, Timothy Lister

Domain Driven Design, Eric Evans

The Timeless Way of Building, Christopher Alexander

Patterns of Enterprise Application Architecture, Martin Fowler

Rerefence
Five books every Java developer must own, Panasonic Youth blog
Javalobby discussion, my list on the bottom
Javalobby Newsletter: archives (great newsletter, btw)


Hibernate Quickly


Hibernate Quickly
by Patrick Peak, Nick Heudecker
ISBN 1932394419
Date Read 10/2005

My Rating

A quick book to read. A book written quickly. Good intro and overall a good book, but I expected something better.

The book left a "I need more info" feeling. I know this is supposed to be a "quick" book and not totally comprehensive, but still, any book has to do that. There is just not enough details to understand Hibernate totally. There is enough to get you started, but not enough to get a comprehensive understanding.

Throughout the book, I was thinking "I"m not sure if I believe that" or "that's not correct." For instance, in the chapter on testing, the author explains the different test strategies. First of all, none of the strategies explained were really unit tests, and the author does not mention that. Second of all, the author does not explain how you can test using mock objects. That's just an example, but there were more points like that in the book.

You can read the book quickly (which is good), gain some knowledge, and move on to a more detailed reference book. A decent book.


Spring In Action


Spring In Action
by Craig Walls, Ryan Breidenbach
ISBN 1932394354
Date Read 8/2005

My Rating

Spring in Action is a well written overview book on the Spring Framework. It could have been better, though. Key words: well written overview.

It is an overview. This book covers the different areas of the Spring Framework. The authors do an excellent job there. However, they don't go into too much detail about any particular topic. They show you a simple example of each part, talk how you can use it, etc. Not too much details.

It is well written. Spring in Action is one of these books that you enjoy reading. It is a technical book but almost reads as a general book. Very good style. Authors did a good job in that regard.

This book tells you a great deal about best practices. It does a good job in that regard as well. However, this book does not cover testing, which is considered a big thing in developement, and Spring makes that easy (supposedly; I'd like to see that in action). How come I can't find that in the book? Examples are short and in snippets. I like to see full examples, though, as it is easier to see the context.

Overall, a good book on Spring. A great intro to Spring. If you're new to Spring, this is the book to start with. If you need a reference, this book is not optimal. You might want to look into Pro Spring, which is a much more detailed book.


The Best Software Writing I


The Best Software Writing I
by Joel Spolsky
ISBN 1590595009
Date Read 7/2005

My Rating

If you have been active in the software world, you probably have read most of the articles that are in this book (I had read around 40-50% before reading this book). In that case, this book will not be as beneficial to you, but you'll enjoy it.

On the other hand, if you don't know who Joel Spolsky is, or Eric Sink, or Paul Graham -- this is a must read for you! You will get introduced to some of the finest writers in the software domain. This book will help get on track.

The one essay that I had not read before, and that left the most lasting impression on me is the EA: The Human Story, which talks about the horrible working requirements in the EA -- the computer gaming company. Wow.

The article on outsourcing is great. Most of the articles are high quality. Most are worth reading.

It's a weekend book. It's a book that you take with you to the beach. I read the whole book while on vacation in Spain -- it's not technical, easy to read.

Great stuff, Joel.

If you don't feel like buying the book, you can find the whole list with the links to all of the articles here.

Reference
Links to essays in Best Software Writing I


Rapid J2EE Development by Monnox


Rapid J2EE Development
by Alan Monnox
ISBN 0131472208
Date Read 6/2005

My Rating

In one sentence, this book is an overview of Java open-source projects that complement the development cycle. It is a very good overview, actually. Alan Mannox packs a lot of good advice on good development techniques. He mixes it up with a good pragmatic approach.

The author has a very good way of writing. He's very pragmatic. The book is easy to read. He tells you why you should use a tool or technology, how to use it (by giving a short example), and why you should not use it.

I got a feeling that the author is a detail oriented, good-practices driven developer. I got that feeling throughout the book.

What are the areas covered in the book? Overview of development processes, modeling, code generation, MDA, scripting, AOP, builds, testing, and quality assurance. As you can see, the spectrum is fairly broad, and that's why I think he did not go into too much detail -- it would have been a huge book.

Should you get it? If you're a senior Java programmer, or if you just not sure what the hype about open-source projects is, or if you are like me, who wants to know the whole development scoop, then you'll like this book. Just remember (how many times am I saying that?), this is just an overview. I don't think this is a good book for starters (less than 3 years of experience). A very good book for managers, though. Overall, a good J2EE book. A good reference to open-source projects.


My Book List

I modified my book lists a little...

First, I created a new category: Book List. I'll post each book that I finished reading in there. If it is a book I recommend, I'll post it in both categories.

My Book List

The books that I recommend, a subset of this list, are located here.

In addition, I buy (and read) books off of my Wish list at Amazon.com. The list is sorted by priority - how bad I want them. You can have a peek. (Books read do not appear on the list by default, you have to change the view.)

My Wish List at Amazon.com


Refactoring To Patterns by Kerievsky


Refactoring to Patterns
by Joshua Kerievsky
ISBN 0321213351
Date Read 5/2005

My Rating

This book had such a potential...

I thought this was going to be another classic (check Amazon.com reviews). But because of the flows it contains, it is just an OK book. The over-complicated code just ruins this superb piece of work (as another Amazon.com reviewer puts it).

This book is a lot better than Holub on Patterns, which is in the same category: learn patterns by looking at code. However, it has the same type of problems. Mainly, the author wants to illustrate how he is refactoring to patterns using real-life examples. But the examples are not easy to understand! I don't like that approach. If I cannot understand the code easily (without too much effort), then I get lost, lose interest in the refactoring, and the potential benefit is lost.

This book is not in the same league as Core J2EE Patterns, Refactoring, Agile Software Development, and Design Patterns (GoF). (If you haven't read them, read them before this one.) First, as I said, the code is out of context (too hard; what's with the obsession with XML/HTML parsing?). The code is a lot simpler in Refactoring, Core J2EE Patterns, Agile Software Development. Second, the UML diagrams are not that easy to understand (you'll find clear diagrams in Core J2EE Patterns, Agile Software Development, GoF). Third, the style of writing is OK, but not catchy. So, this book is far away from being a classic...

But this is not a bad book. You'll get the most value out of it if you have other pattern books by your side, and if you are willing to jump into them while you are reading this one. I did that, and my knowledge about patterns deepened as a result. This book actually forces you to do that. :-) Yeah, really. You cannot learn patterns from this book. So if you want to make sense out of what he's saying through his code, you have to look at the other books. What other books? Other pattern books, as well as Refactoring (those mentioned above).

This book has some good advice, though. The first couple of chapters are classic. There he explains refactoring, patterns, and code smells. Just excellent. He puts a lot of good advice in the motivation section of each refactoring. We can learn a lot from them. If only the code was easy...

Overall, a decent book, filled with good advice. Based on good practices, good designs. Could have been a classic! But the flaws I mentioned take away too much out of it. There is not much this book needs to get there: leave the comments, replace the code and the UML. Maybe somebody else will do it.


Professional Software Development by McConnell


Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers
by Steve McConnell
ISBN 0321193679
Date Read 5/2005

My Rating

Steve McConnell is one of my favorite writers. He writes in an interesting and easy to follow way. There is only a few (that I know of) in the software industry that do it as good as him. This book is a general overview of the whole software industry. It's general, but contains some good advice. The chapter on Construx's professional ladder is very good (you can find it on the web, though). Overall, a good book. Not a required reading, but you'll enjoy it.


Software Craftsmanship by McBreen


Software Craftsmanship: The New Imperative
by Pete McBreen
ISBN 0201733862
Date Read 4/2005

My Rating

I'm disappointed. I expected more from this book. Being that I want to become a software craftsman, I thought this book is going to give me a fairly clear direction on how to get there. There are some bits and pieces of it, but not very convincing.

What I did not like about this book, is that the author is a craftsman himself, but he wrote in 3rd person. If this was based on his experiences, if this book was more personal, it would have been more convincing. It would have been a lot more interesting. Even though I believe in software craftsmanship, I don't necessarily agree with bashing software engineering in favor of craftsmanship. I belive both fit together well.

Don't get me wrong, you'll find some useful information in this book (that's why I gave it 3.5 stars), but overall it is just a light treatment of Software Craftsmanship.


Programmers at Work: Interviews


Programmers at Work: Interviews
by Susan Summers
ISBN 0914845713
Date Read 2/2005

My Rating

It's an important book, recommended by a lot of people. I bought it mainly because Steve McConnell recommended it. Is it good? Yeah, it's good. Is it great? No. It's not great because it's been published in the 1980's. When you read some of the interviews, you sense that. On the other hand, it is good because you get to see how great programmers think. I especially liked the interviews with the following four great minds: Butler Lampson, John Warnock, Bill Gates, and John Page. I recommend reading them. (I wrote it for myself on the back of the book to re-read those four interviews.)


Holub on Patterns by Holub


Holub on Patterns: Learning Design Patterns by Looking at Code
by Allen Holub
ISBN 159059388X
Date Read 1/2005

My Rating

It's OK, not great (My review at Amazon.com -- 3/5 stars)

I looked at one other book before purchasing this one, Refactoring to Patterns, but I picked this one because this one had 5/5 average review. I should have picked the other one, though. :-(

This book starts out great, the first 2 chapters (out of 4) give you quite a few tips and rules of thumb. However, once you get to chapters 3 and 4, the chapters on patterns, the author does a so-so job. Quite frankly, I had hard time reading those chapters. I thought that by looking at code you might learn more about patterns. Not true. Especially, when you have to look at GUI code, as is the case with this book. I did not like that. :-(

Maybe that's only me, but I would recommend the Joshua Kerievsky's book, Refactoring to Patterns, instead (at least look into it).


Effective Java by Bloch


Effective Java
by Joshua Bloch
ISBN 0201310058
Date Read 4/2005

My Rating



Let me ask you a simple question? Have you programmed in Java for more than a year or two? If no, than this book might not be for you. On the other hand, if you've been programming in Java, why haven't you read this book? Seriously. Why haven't you? How about you, Stas. I know. I know. I've been programming in Java for 5+ years and I read this book last month. I should have read it sooner. Much sooner. Anyway, I read it, so I'll tell you why you should read it as well.

The Foreword of the book sums up the book very nicely:


If you have ever studied a second language yourself and then tried to use it outside the classroom, you know that there are three things you must master: how the language is structured (grammar), how to name things you want to talk about (vocabulary), and the customary and effective ways to say everyday things (usage). ... This book addresses the third need: customary and effective usage. Joshua Bloch offers good advice, systematically organized, on how to structure your code so that it works well, so that other people can understand it, so that future modifications and improvements are less likely to cause headaches -- so that your programs will be pleasant, elegant, and graceful.

Nice job, Mr. Bloch. Very nice work. I rate it 5 stars.

Like I said, I've had decent exposure to Java over the years, but when I was reading this book, I was constantly telling myself: Wow. This is cool. This is a neat way of doing things. How come I did not come across this earlier.

Mr. Bloch shows you how you can effectively use Java. He does not cover everything, but the areas he covers are really helpful. Plus, he writes good English: easy to read and down to earth (I wish more authors were writing like that).

    The following topics are covered in the book:
  • Creating and Destroying Objects
  • Methods Common to All Objects
  • Classes and Interfaces
  • Methods
  • General Programming
  • Exceptions
  • Threads
  • Serialization

Read it and you will be a better Java programmer.


Dynamics of Software Development by McCarthy


Dynamics of Software Development
by Jim McCarthy
ISBN 159059388X
Date Read 11/2004

My Rating

A great book for project managers! Unfortunately, I'm not there yet. :-( A great list of good practices and softaware development tips. What I also liked, besides the tips, was the author's style of writing. It's great. Simple sentences, a lot of energy. I plan to re-read this book in a year or two.


Developing Enterprise Java Applications with J2EE and UML by Ahmed, Umrysh


Developing Enterprise Java Applications with J2EE and UML
by Khawar Zaman Ahmed, Cary E. Umrysh
ISBN 0201738295
Date Read 11/2004

My Rating

Excellent title! But that's about the only thing that's excellent, the content is so so. There are better books that cover J2EE in more detail.


J2EE Design and Development by Johnson


J2EE Design and Development
by Rod Johnson
ISBN 0764543857
Date Read 10/2004

My Rating

I really liked this book, but after two months of reading it (700 pages), I'm happy to be finished. That's my general feeling now. But I can tell you one thing, Rod Johnson's book is the best book on J2EE I have read.

If you are a J2EE/Java developer, then this book is a must read for you. This book is loaded with practical issues. Rod doesn't only talk about good features of J2EE, he tells you what the bad ones are and why you should not use them (i.e., EJB).

Rod Johnson is a true J2EE guru. He's also a good OO developer/architect. You know why I know that? Because he stresses that in this book. He's a proponent of flexible, maintainable, testable, least-complex, and robust designs. He gives you couple examples of design patterns. All of this in a very convincing, argumentative manner. It almost seems like talking to another person.

I really liked the first five chapters, where he talks about designing J2EE projects and concepts behind it. He has one chapter just devoted to testing, which he's a big proponent of. He talks about different risks and choices, about different OO design issues, and coding standards. Very useful and practical information. He then, beyond chapter five, talks about different beans, DAOs, MVC design, and profiling. The two chapters on MVC are great as well.

As you can see, I liked this book. However, like any book, this book is not perfect. The one thing I think could have been improved is the use of examples. I like to learn by examples. Rod, though, he showed examples, they were taken out of context -- they weren't the full listings. That's confusing to me. Makes it harder to read. One other thing, the author's writing style is not that catchy, if boring at times. At times, because other times, it's very good. Practical.

Overall, I'd give this book 4.5 / 5 stars. I highly recommend it if you are a Java developer. If you want to increase your developemnt toolbox and knowledge, read it.


The Psychology of Computer Programming by Weinberg


The Psychology of Computer Programming
by Gerald M. Weinberg
ISBN 0932633420
Date Read 8/2004

My Rating

A classic book. I'm going to have to re-read it, and maybe provide a more thorough review then. :-(


Facts and Fallacies of Software Engineering by Glass


Facts and Fallacies of Software Engineering
by Robert L. Glass
ISBN 0321117425
Date Read 2004

My Rating

Want a quick overview of what software engineering is? Want a short book that will tell you what works and what doesn't work in software engineering? Want a book that's written by one of the best IT writers?

Look no further: you've got it all in this concise, 220-pages book that will become a software-engineering classic. Yes, this book will join the ranks of Mythical Man-Month, Peopleware, and others. This is not a how-to book, but rather factual information about the state of software-engineering. You'll get 50 facts from areas like management, quality, life-cycle, and more; plus you'll get 10 fallacies about pretty much the same areas.

Robert Glass created a masterpiece. This book will open your eyes. It should be a required reading by every software engineer. We could all benefit from Glass's extensive research.

One thing I found very interesting. You've all heard that a best programmer is 10 times as productive as the worse one. Glass, in his Fact #2, says that "The best programmers are up to 28 times better than the worst programmers." How about that?

All in all, a must read. I loved those small, 2-3 pages long chapters with resources listed at the end of each one.


Applying Uml and Patterns by Larman


Applying Uml and Patterns
by Craig Larman
ISBN 0130925691
Date Read 2002

My Rating

One of my favorite books. It is just filled with excellent information. Larman is an excellent teacher. You'll learn about good design, development processes, UML, and more. I have to re-ead this title soon (the second edition came out recently), as I read this book a long time ago....


© getCopyDate() ?>

Random Quote

Search

 

Topics

Architecture & Design :12
Better Coder :30
Books :43
Books Recommended :18
Buzzwords :5
Career :25
Craftsmanship :15
Java :15
Quotes :25
Recommended :9
Software Engineering :3
Uncategorized :33
Web Development :1

Archive

May 2008 (1)
April 2008 (2)
March 2008 (1)
February 2008 (1)
January 2008 (2)
November 2007 (1)
October 2007 (3)
August 2007 (3)

...since January 2002

Currently Reading


:: See list of books I finished reading

Info

© 2001-2008 Stanley Kubasek About me :: Contact me