The following is a piece I wrote for the ACCU’s CVu magazine in April 2010 as part of the Desert Island Books series. The ACCU is an organisation that promotes a professional approach to programming and the brief was to write about the books that have had the biggest impact on me as a jobbing programmer – the ones I’d take to a suitably equipped desert island. It was also suggested that mentioning a novel and a couple of CDs would throw some light on the person now at the computer keyboard. So, I chose five books (four related to programming and one novel) and two CDs and wove this little story around them.
Attention All Passengers …
The ship is sinking. Three days into a round-the-world cruise and this happens. It was going to be the trip of a lifetime, an adventure, something to look back on in my retirement. I can’t believe it.
There’s a rumour we hit an iceberg. This far south? A certain amount of panic is forgiveable, but that’s insane. Of course, we couldn’t get anything sensible out of the crew. “There’s a technical problem”, they said, yesterday. “There’s no need to worry. We’re going to stop off at the next port for some minor repairs.” Apparently it was a problem with the engine or the navigation systems or the heating/ventilation; everyone had a different story.
But the captain has just announced that the ship is taking on water and that we won’t reach port in time. All passengers are to transfer to the lifeboats. There’s an island on the horizon; we’ll set up camp there until we can be rescued. Unfortunately, both the communications and navigation systems are severely damaged. We have only a rough idea of where we are and we haven’t been able to radio for help. We may be marooned for some time.
Heroes and Aspirations
We can take some clothes and a single piece of hand luggage with us. I have quite a few books and CDs in the cabin – it was supposed to be a three month voyage – and I can’t bear to see them all go to the bottom of the sea. Which ones shall I choose?
As I started to pack my bag I remembered a conversation I had at dinner on our first night on board. There was a teacher at our table with a passing interest in psychology. She asked me, “If you were a book title, which would you be?” Strange question, I thought. The sort of question you might hear at a speed-dating session. I wondered, briefly, if she was evaluating me for a holiday romance, but no, that was just my ego talking. Then it struck me that if any book title summed up who I am it was probably “Gödel, Escher, Bach: An Eternal Golden Braid”.
To me Gödel’s mathematical theorems, Bach’s music and Escher’s drawings are works of astonishing originality and beauty. I’m a ‘vertical’, straight-line thinker and I simply can’t imagine where they got their ideas. I think that is why Gödel, Escher and Bach all have a place in my personal catalogue of great men alongside the likes of Newton, Einstein, Babbage and Darwin.
I grabbed “Gödel, Escher, Bach” and thrust it into the bag. It was a book I’d been meaning to get for years, but have never read. I’d bought it specially for the voyage and it must be saved at all costs!
A Few Objects More
I suppose a man is defined to a large extent by what he does for a living. I’ve been a programmer for all my adult life and no book collection of mine would be complete without one or two books on the noble art of computer programming. Knuth, however, is not in the cabin and I wouldn’t take him to a desert island if he was. I’m going to enjoy my stay on that rock out there if I can and I need something lighter than that.
The first book that taught me something about program design was Michael A Jackson’s “Principles of Program Design”. I remember the idea that the structure of the code should follow naturally from the structure of its inputs and outputs, which made sense in the days when batch processing was the norm. Later I read some books on structured design by Tom De Marco, Ed Yourdon and others. I learnt about data flow diagrams and, perhaps the most important lesson of all, that we should strive to minimise coupling and maximise cohesion. Although these taught me many things no one book from this period stands out in my memory.
Then came object-oriented design, a new paradigm that spawned a plethora of books. In spite of that embarrassment of riches there is one OO book that had a significant impact on my approach to software development: Bertrand Meyer’s “Object-Oriented Software Construction”. It starts by considering what ‘quality’ means when applied to software, lists some criteria by which we can judge the quality of our code and states some principles that must be adhered to in order to build good quality software. It then describes a programming language designed to support those principles. That language is Eiffel.
Eiffel is both an object-oriented language and a programming environment. The language has classes, parameterised types, exceptions and support for preconditions, postconditions and invariants. The environment provides a garbage collector, compiler/linker/dependency manager and several other tools to aid the Eiffel programmer. In short, it has pretty much everything today’s programmers have come to expect. It’s a bit too object-oriented for my taste and has a number of features that I don’t like, but I think it deserves to have a much larger following. I’ve never used Eiffel, Java or C# (no, really!), but given a choice from those three I’d try Eiffel first simply because of the clarity of the reasoning in Meyer’s book.
“Object-Oriented Construction” goes into the bag.
The tannoy blares out again. “Will all passengers, please, assemble on the sun deck for evacuation.” I have just a few minutes to choose what else to pack.
Instinctively, I reach for “Design Patterns – Elements of Reusable Object-Oriented Software”. With an Escher print on the cover and a foreword by Grady Booch (one of the foremost proponents of object-oriented programming) it sits very comfortably alongside my earlier choices. But, more than that, it is the book that has had the greatest influence on my approach to programming.
By the time “Design Patterns” was published I had been programming for 20 years and, although I wasn’t consciously aware of it, I had built up a small catalogue of tricks and techniques that could be applied to a wide range of programs. As I read each chapter I kept coming across problems I’d wrestled with in the past and solutions that I recognised from my own accumulated experience. This book brought them all together, gave them names, clearly defined the problems and explained when and why a particular solution works. It was a revelation.
Man and Machine
There is no clock in the cabin, nothing to measure the passage of time, but I can feel the seconds ticking by as I scan the bookshelf. It’s getting hard to make decisions.
“No more technical books”, I tell myself. There won’t be any opportunity to write software where we’re going now. That narrows down the choice enough for me to pick “Alan Turing – The Enigma”, a biography by Andrew Hodges.
It’s quite a few years since I read Hodges’ account of the life and work of Alan Turing, so my recollection is rather hazy. It does include some technical information, including a concise description of Turing machines, but it is mainly a sympathetic exploration of Alan Turing himself. As Douglas Hofstadter said in an early review, “… it is hard to imagine a more thoughtful and warm biography than this one”. The title, of course, simultaneously refers to Turing’s work on the German Enigma machines, to the necessarily secretive nature of a gay man working for the government in the 1940s and to the uncertainty surrounding Turing’s suicide.
Glancing through the port hole I can see a calm blue sea, the sun glinting off the gentle waves. For a moment a profound sense of peace and tranquillity pervades my thoughts. But something about that view through the window isn’t right. There’s no horizon! With the cold logic of Sherlock Holmes I deduce that the ship is listing noticeably now.
For the first time the full implications of our predicament sink in. It could be hell on that island and I’m going to need something that will transport me, metaphorically speaking, to a better place. Jasper Fforde’s “The Eyre Affair” comes to mind immediately, I search for it’s bright red cover and shove it hastily into the bulging bag.
“The Eyre Affair” is set in an alternative universe in which literary debate is so fierce that it leads to gang wars and murder. In this world “Jane Eyre” ends (lamely) with Jane accompanying her cousin to India to help with his missionary work. The villain of “The Eyre Affair”, Acheron Hades, uses a Prose Portal to enter works of fiction, threatening to kidnap their characters as a form of blackmail. It falls to literary detective, Thursday Next, to pursue Hades into “Jane Eyre” and stop him. Eventually she succeeds, but in the process the ending is changed so that Thornfield Hall burns down, Rochester’s mad wife dies and Rochester himself is badly injured. Returning to her real world Thursday Next discovers that public reaction to the new ending is positive, but her employers are not best pleased with her efforts and the book ends with Thursday facing an uncertain future.
“The Eyre Affair” is a wild, wacky, witty and extremely funny book in the style of Terry Pratchett. Indeed, Pratchett himself commented, “Ingenious – I shall watch Jasper Fforde nervously”.
Watching the Birds
The engines have stopped. There’s just time to grab a couple of CDs and then I must go. Apart from a fascination with science in all its forms, my other passion is music. My CD collection covers a fairly broad spectrum; there are rock, pop, folk, jazz and classical albums that I really treasure. Leaving them behind will be heart-breaking but, strangely, it’s not too hard to select just two to preserve my sanity on the island.
A sea bird flies past the porthole as I pull “Through the Window Pane” by Guillemots from the rack. For those who don’t know Fyfe Dangerfield’s compositions they’re hard to describe because they don’t fit into any well-defined category. Many of the tracks would make excellent film soundtrack material, but that’s not what they are. On my web site I say: “This has everything: memorable melodies, irresistible rhythms, sweet harmonies, epic arrangements; sometimes all in the same song”. Every one of the 12 tracks seems to be a window into Fyfe’s varied emotions. There’s wistfulness, sadness, anger, despair, joy, love, playfulness and even a touch of humour. Very few artists have that wide a repertoire and very few bands can provide a vehicle for expressing it as well as Guillemots.
There’s a knock on the door. A middle-aged man in a smart nautical uniform politely tells me I must vacate the room and join the other passengers on deck. With trembling fingers I pick out “Light Flight: The Anthology” by Pentangle and stow it hastily in my sanity bag.
Quoting from my web site again, “Light Flight” contains “some of the most beautiful folk songs performed by the most accomplished folk/jazz group there’s ever been”. By adding this album to “Window Pane” I can cover a reasonably large subset of musical styles and, at the same time, have songs whose poignant and exquisite beauty never fails to move me.
Back in the 70s when I was a student I went to see Pentangle at the New Theatre, Oxford. It was a disappointing performance and they split up shortly afterwards. The following year (I think) a friend of a friend invited me to a private gig at St. Catherine’s college where John Renbourn and Jacqui McShee (both ex-Pentangle) were to play. It was an intimate setting, ideally suited to John’s fine acoustic guitar playing and Jacqui’s clear, mellow voice. It was a magical evening and my Pentangle CD reminds me of that night, too.
Regrets – Too Few to Mention
As I lower myself down into the lifeboat I can’t help thinking about the books and CDs I left behind, either on the ship or back at home.
There are many programming books that have been invaluable to me in my career. The single most important book for me as a C++ programmer is, of course, “The C++ Programming Language” by Bjarne Stroustrup. Scott Meyers’ “Effective C++” and “More Effective C++”, Herb Sutter’s “Exceptional C++”, Andrei Alexandrescu’s “Modern C++ Design” and Vandevoorde & Josuttis’ “C++ Templates” have all been of direct practical use in my professional work. “Generative Programming” by Czarnecki and Eisenecker has broadened my programming horizons. I might have chosen any of those for a desert island with all mod cons including an internet connection, but I’m not going to need them on that God-forsaken rock in the distance.
I would have liked to have brought some old favourites for bedtime reading. Something by John Wyndham, Arthur C Clarke, Ray Bradbury or Iain Banks, perhaps. “Alice in Wonderland” or “The World of Pooh” would add variety. Then there are the epic stories of Tolkein or Stephen Donaldson. Sandi Toksvig writes entertaining novels. And there are more Jasper Fforde books, not to mention lots of Terry Pratchet.
I shall sorely miss listening to Elbow performing “The Seldom Seen Kid”. I’ve played albums by Genesis, Yes, King Crimson and Soft Machine so often that they will never be forgotten, but I shall pine for them just the same. Of the jazzier CDs in my collection remembering those by Back Door, Weather Report and Brand X brings a tinge of regret. Then there are odd ones like Tom Griesgraber’s “A Whisper in the Thunder” (atmospheric Chapman Stick music), Gorillaz “Demon Days” and the free folk song downloads from Kray Van Kirk. I could go on, but I’m getting a lump in my throat.
No, I wouldn’t swap any of those for the five books and 2 CDs in the little bag I’m carrying. As I hand the bag to the lifeboat crew for safe keeping I hear myself saying, “Careful with that, mate; it’s precious.”
- Gödel, Escher, Bach: An Eternal Golden Braid, Douglas Hofstadter.
- Object-Oriented Software Construction, Bertrand Meyer.
- Design Patterns – Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.
- Alan Turing – The Enigma, Andrew Hodges.
- The Eyre Affair, Jasper Fforde.
- Through the Window Pane, Guillemots.
- Light Flight: The Anthology, Pentangle.