Thursday, 19 May 2011

Book: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)

The Mythical Man Month comes with a big reputation attached.

The books was originally written in 1975. The author (Frederick P. Brooks, Jr) is a prominent Computer Scientist and software engineer, who most notably managed the development of the IBM OS/360 operating system. To quote Wikipedia, “the book is widely regarded as a classic on the human elements of software engineering”.

Honestly this was, for me, a difficult one to read. It's a little bit like trying to read the Bible in some parts (which personally, I find tough going). But I would say it is well worth it. In reading this book, I can see that Brook's writing has had an influence on almost every other serious piece of literature on the management and practice of software engineering that I have ever encountered.

The book is entitled “Essays on Software Engineering” and that's what it serves up. The chapters of the book are arranged in some sort of order, but really they're fairly distinct. The first few chapters are introductory and the last few tie a conclusion together, however for the most part you could practically select a chapter such as “Hatching a Catastrophe” (deals with software project schedules and the black art of software estimation) and read it stand-alone comprehensibly.

So, all that's left really is to provide a couple of thoughts as to where the book shined, in my opinion. There were many more sections which I thought were enlightening, these are a random few which I noted:

Brooks is strong on specification and design up-front, in the same way that Joel Spolsky is. Chapter 6 “Passing The Word” goes into detail on specification.

On page 155, in the “Hatching a Catastrophe” chapter, Brooks says “A baseball manager recognizes a nonphysical talent, hustle, as an essential gift of great players and great teams. It is the characteristic of running faster than necessary, moving sooner than necessary, trying harder than necessary. It is essential for great programming teams, too. Hustle provides the cushion, the reserve capacity, that enables a team to cope with routine mishaps, to anticipate and forfend minor calamities. The calculated response, the measured effort, are the wet blankets that dampen hustle”...I love it!

In Chapter 1, “The Tar Pit”, there is a section on “The Joys of the Craft” and then one on “The Woes of the Craft”. I find these sections to put into words, my feelings regarding software development. I won't type the sections out (cause they're long!), but if you get the chance, read them. Anyone who's ever known the elation of writing even the tiniest program and watched it bring a machine to life in some way will be able to relate to these passages. The only other way that I could express the feeling is to say that it's something like this (Tom Hanks “creates fire”, in Castaway):

Finally, I think the following excerpt from near the end of the book captures the essence..."[the book] is only incidentally about software but primarily about how people in teams make things".

So that's it. In summary, a difficult read, but well worth the effort in my opinion.

Title: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
Author: Fredrick P. Brooks, Jr
Link: Amazon
Tags: Book, Fredrick P. Brooks, Project Management, Software Development, Software Engineering

Migrating (and Open-Sourcing) an Historical Codebase: SVN-to-Git

I have a SVN repo on my local machine that I have been shoving stuff into since before I knew how to use revision control systems properly (...