Having just finished this book that somehow appeared in the Atlassian developer library, I thought I’d review it and comment on some of the issues it raises from my perspective as a software developer.
Software is Hard in the words of legendary computer scientist Donald Knuth. Scott Rosenberg’s Dreaming in Code is an insightful exploration of why.
Following old school software mogul Mitch Kapor and his band of merry developers, Rosenberg lives in the muddy trenches of a real software project. His idea was to bring a greater awareness of the unique difficulties the process of making software has amongst people who all increasingly depend on it.
The book is very well written, avoiding the hyperbole and overburdened metaphor common to the genre of pop technology business tales. Rosenberg manages to weave into the story enough of the lore and hard won wisdom (such as it is) from the past five decades of computer programming to make the book into a primer for managers, stakeholders and newbies. Returning again and again to the tale and its changing characters and the comparatively unchanging issues of the project, he rescues what would have possibly been a boring story by blending it into part field manual and turning it into a useful and also readable book.
For experienced developers, Dreaming in Code could be fun or painful. What reaction does the title give you? If you can’t bear to open the laptop on the weekend then stay away, it will be like work. If you feel lucky to be paid doing something you’d happily do for free then give it a try.
The more experienced developers will no doubt cringe at some of the debates and opinions exposed in the story – beware if you still bear scars from battles with people suffering from “not invented here” syndrome or from projects to build “a generic framework” and when projects spend a long time without demonstrating some running code.
Perhaps at this point I should come clean and admit that I can’t really get enough of these kinds of books. It defies explanation. I loved Nudist On The Late Shift, Geeks and Close to the Machine to name a few. So I’m probably a little forgiving when the story enters the third round of the-developers-have-another-architectural-meeting-and-decide-to-readjust-their-three-month-goal.
It’s because of the broad catalogue of lessons learned and current thinking in the fledgling profession that is sometimes called software engineering that I would recommend the book to anyone interested in getting a handle on the industry. Rosenberg deftly explains Brooks’ law and Moore’s Law, Watts Humphrey and the birth of CMM, high ceremony software process, agile and iterative development, open source idealism and reality, object technologies, design patterns and he explores the limits and failures of software projects in recent times.
I’ve often found myself in a professional setting needing to explain these things to people. Sometimes it’s junior developers, other times it’s a manager or customer or some other stakeholder. Often these people are really interested to learn more and I try to point them in the right direction to avoid the noise of the galaxy of cowboy operations and thinking this industry is plagued with. Rather than spending many conversations recommending different things to these people, I can now recommend they read this book and get a single high concentration dose of useful insight.

Dreaming in Code – Book Review