For what its worth, here are the books I have read the first half of 2009 and my humble opinions on their content:
- SQL Server 2005: Unleashed
- Overcoming the Five Dysfunctions of a Team
- Elements of Friendly Software Design
- Getting Things Done
- Data Modeling Made Simple
SQL Server 2005: Unleashed
Ray Rankins, Paul Bertucci, Chris Gallelli, Alext T. Silverstein
I have found that technical books are hard to review for me. If I am not already knowledgeable on the subject then I don’t often know how thorough they are. They also tend to be somewhat dry, not too easy to read for long periods of time. However, they must contain explanations as to why things exist and why features are useful, and why things are arranged the way they are, etc. I also prefer a little opinion with my facts. This book does a good job at this for the most part. Since there are 4 authors it makes sense that some sections did a better job than others in providing real life examples and real-life issues to think about. Technically I am not done reading the book since as of this review I am on page 1116 of 1659. However, I have read enough to know I am generally happy with it and expect to finish it.
It might also seem strange that I am reading a technical book that is 4 years old. However, it had been quite awhile since I have read a pure technical book (as opposed to theory) on databases and at my office we are still on SQL server 2005, furthermore a coworker already owned the book. I’m cheap. For a solid intro to what’s going on in and behind the scenes of SQL Server I think it does a fine job.
Overcoming the Five Dysfunctions of a Team
Patrick Lencioni
Most software developers I know of are part of a team, even if it is a new team every year. I am aware that the team I am on does an adequate job but does not operate as well as I am sure it could. We are definitely not efficient and probably lack definition of common goals among other things. I read this book in an effort to get a better grasp of what those other things might be, and what we as a team could do about it. I did not necessarily find anything revolutionary for me in the book, but I enjoyed reading it and found myself continually nodding in agreement. I am pretty sure there was nothing in the book I disagreed with, but I am clearly more pessimistic than the author about getting teams to work as smooth as he describes in the corporate environment. Right off the bat the author suggests that the team needs to put personal egos and agendas aside and trust our peers enough to be vulnerable and admit our mistakes, etc, etc. Many coworkers I have known cannot even do this with their spouses for Pete’s sake. For my own part, the book is a good reminder of what it means to have a good team and how to be a good team member. I think I’m better for reading the book.
The Elements of Friendly Software Design
Paul Heckel
This book reads like a precursor to About Face. The book has a lot of the same ideas like knowing the user, metaphors, and mental models. It was an easy read, including the author’s thinly-related essay on getting his patents recognized by large corporations that were infringing. The author’s main focus in regards to design was all about communication. I agree 100%. In my own studies and writings I have come to the same conclusion and the book just felt like more validation. Effective communication is what makes things work. Whether it is advertising, movies, books, user interfaces, written code, or team dynamics, communicating clearly allows everything else to happen naturally and with less friction. The book does not offer direct examples of how to use radio buttons or when to use a drop down list versus a list box, etc. That’s not the point. Rather the book really is just essay after essay covering 25+ elements of design. Regardless of whether you are developing a user interface, coding a method, or designing the handle of a car door, the elements should be understood.
Getting Things Done
David Allen
I really liked this book and the nuances the author points out about how we deal with all the tasks on our plate. For example he suggests we need to be able to use our mind to think about things rather than think of them. We need a formal list that holds all the things going on in our lives that tend to clutter our mind and distract us when we are trying to think. Having this list that is always accessible to us allows us to make the transition to thinking about things. Once we have clarified our commitment to each and every task we then need to define doable tasks for each item. In other words we have to define the next step for each item instead of just listing the item somewhere. Our Blackberry calendar should not say Babysitter for Tuesday Night, it should say Call Maureen about babysitting, or clarify with wife about exact time. In other words, it needs to document the next actionable item. Knowing that these things have been thought of frees our mind to focus on whichever tasks we are currently working on. This list also lets us know what tasks could be accomplished when…like waiting for the dentist or with 2 hours of unexpected time at home alone, etc. I liked his ideas so much I decided to implement his basic methods. Although I have not followed his system religiously, what I have changed about my organization of things is working pretty well. I recommend this book to someone who feels like they have too many plates spinning in the air and a few more that they wish were spinning.
Data Modeling Made Simple
Steve Hoberman
Data Modeling Made Simple comes in at a lean 132 pages that effectively provides clear understanding of high-level concepts involved in data modeling while holding off on the low-level details to be covered by other books.
As a developer who approaches a database as just a backend to my business application, I gained further respect for data modeling, even as a parallel process to object modeling. Most of the author's statements of purpose and benefits of the data model match the purpose and benefits of an object model. I believe that doing both only gains me more insight into the business which is of course invaluable.
On more than one occasion after the author suggested something, I found myself thinking, "I hope he explains other situations where you would not want to do that!" And almost without fail two sentences or a paragraph later he explained the alternatives or downsides to the suggestion. To me this is a hallmark of any good book on technology and methods. In fact, just to be picky, I only recall one time he did not do this.
The book is definitely an introduction book and never claims to be more than that. The title even states it is just a simple, practical guide. The chapters are laid out as common questions someone might have about data modeling which makes it an easy read and an easy reference. I will recommend this book to new developers as a quick intro to data modeling and to help arm them with good definitions of terms and high-level explanations of common concepts that they need to understand. I will also recommend this to mid-level and senior developers who still seem to have no basic grasp of data modeling concerns and methods. And lastly I will recommend it to those who seem to think there is a huge gap between object modeling and data modeling in the common business application.