My Tweets

  • in Austin, TX for the weekend visiting my in-laws...gotta do some tech support for my FIL as well.
  • @CalebJenkins: I think Trudy's in Austin skews that statistic big time...
  • @dpenton: agreed there's always value as it forces SRP and SoC. Dependencies always get abstracted out when unit testing is enforced too.
  • @dpenton: unit testing has value when reqs come from biz analysts. If devs/former devs are involved, reqs get more attention/thought.
  • @jbogard: Common scenario I've seen is when properties have an Enum that does a straight type mapping to the DB. Not a flexible design.

Xbox Gamer Tag

Review of Dreaming In Code

Wednesday, May 23 2007 No Comments

I generally don't do book reviews as part of my blog, but after finishing reading Scott Rosenberg's Dreaming In Code, I can't resist.  This book is excellent.

I first heard about it from Joel Spolsky and I also heard great things about it from a few attendees at the recent Dallas Code Camp.  So I went over to my nearest bookstore and picked up a copy.  By the way, if you're looking for it in Barnes and Noble, it's in the Science section, not the Computer section. 

Dreaming In Code chronicles the development cycle of the open source Personal Information Manager software known as Chandler.  The vast majority of the book covers the Chandler project as a case study and describes team dynamics and design decisions and how both affected the outcome of the project.  It was interesting to see how even an open-source project completely driven by experienced developers and technical people can still have the same pitfalls of scope creep, fuzzy requirements, and poor design choices.

However, I found the best material in Dreaming in Code to be in the chapters where Rosenberg steps away from Chandler and provides insight on the software industry as a whole.  I wanted to post a couple of the more thought provoking excerpts from the book:

From a panel of experts assembled at a conference on software engineering, here are some comments:

"We build systems like the Wright brothers built airplanes -- build the whole thing, push it off a cliff, let it crash, and start over again."

"The problems of scale would not be so frightening if we could at least place limits beforehand on the effort and cost required to complete a software task.....There is no theory which enables us to calculate limits on the size, performance or complexity of software.  There is, in many instances, no way to even specify in a logically tight way what the software product is supposed to do or how it is supposed to do it."

"Some people opine that any software system that cannot be completed by some four or five people within a year can never be completed."

These grim perspectives sound familiar, but I left out one detail: This wasn't a  recent conference.  Every word I have quoted and thousands more like them, can be found in the proceedings of a 1968 summit on software engineering -- the first event of its kind, organized by NATO as its member nations started into the eyes of what they had just begun to call "the Software Crisis."

I found this section very thought provoking as it makes it seem like we have not definitively solved some of software development's biggest issues despite staring them in the face for almost 40 years.

Despite some of the perceived negativity towards software in the book, Rosenberg says blogging is helping to change things:

And yet something extraordinary happened to the software profession over the last decade: Programmers started writing personally, intently, and voluminously, pouring out their inspirations and frustrations, their insights and tips and fears and dreams, on Web sites and in blogs.  It is a process that began in the earliest days of the Internet, on mailing lists and in newsgroup postings.  But it has steadily accelerated and achieved critical mass only since the turn of the millennium and the bursting of the dot-com bubble when a lot of programmers found themselves with extra free time. Not all of this writing is consequential, and not all programmers read it.  Yet it is changing the field -- creating, if not a canon of great works of software, at least an informal literature around the day-to-day practice of programming...It is also an open forum in which they can continue to ponder, debate, and redefine the nature of the work they do.

I highly recommend that you pick up a copy of Dreaming In Code today!