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!