Thanks to long weekend and more quiet time in last couple of days (Happy 140th Birthday, Canada!), I managed to read something else than Ruby-ism/Rail-ism. Among others, I finished the Dreaming in Code by Scott Rosenberg, a book promising to explain why software is hard.
It is pretty tough question to answer. The way this books tries to address it is following the story not very well known open source project named Chandler through it’s beginning over period of 3 years. Chandler was – and still is – developed by the OSAF – Open Source Application’s Foundation, founded (and financed) by Mitch Kapor, who was before the founder of Lotus Development Corporation and designer of the “Ur-spreadsheet” Lotus 1-2-3.
The Chandler project – unlike most opensource projects was blessed – or cursed – by very solid financial backing, which allowed to hire fairly large team for fairly long time, without worrying too much about running out of time or out of money. It also contributed to quite ambitious goals (“Outlook killer”) and to lot of time being allocated and spent on design and research projects (known also as BDUF – Big Design Up Front antipattern).
For me personally the most interesting discovery from reading the book was how similar can be the issues in two completely different projects that lacks clearly defined goal and requirements. In Chandlers case, the basic design questions were open for unhealthy long time: what is the platform for the repository ? Is it going to be peer-to-peer system or using centralized server ? What is the proper set of features ? How the user interface would look like ? I found these questions so familiar and reminded me of one other (non-opensource) project …
Throughout the book, you can find lots of quotations, observations and pieces of wisdom related to our profession collected from variety of sources – books, interviews, Web. For illustration few of them:
“Joy is an asset. It may well turn out that one of the most important effects of open source’s success will be to teach us that play is the most efficient mode of creative work” Eric Raymond
“In science, the whole system builds on people looking on other people’s results and building on top of them. In witchcraft, somebody had a small secret and guarded it … Traditional software is like witchcraft …” Linus Torvalds
“In any project that is introducing new technology or design … plan to throw one away, because you almost certainly won’t get it right for the first time” Frederick Brooks
“… we should train developers the way we train creative people like poets or artists…. They study great works of poetry. Do we do that in our software engineering disciplines ? No. You do not look at the source code for great piece of software. Or look at the architecture of great pieces of software. You do not look at their design …” Richard Gabriel
Conclusion: Maybe not as easy read as originally expected – mostly because of the length and level of details related to Chandler, but nevertheless worth reading by all means. If you are professionally involved in building software for living, this books outlines many issues of the field. You may even have feeling terribly strong deja-vu (if you are around for couple of years/decades). Or – if you are younger – it can be a great example of things to avoid 🙂