Book Review: The Mythical Man-Month

Sarah’s parents were kind enough to get me the book The Mythical Man-Month, by Frederick P. Brooks, Jr. for Christmas last year. This is the 20th anniversary edition with an additional forward and four new chapters beyond the original text. The original was published in 1975, the anniversary edition in 1995.

I really enjoyed this book. Sure there were a few sections that discussed obviously outdated issues, but so many of the issues discussed are still relevant that it makes little difference.

“First, my wife, my colleagues, and my editors find me to err far more often in optimism than in pessimism. I am, after all, a programmer by background, and optimism is an occupational disease of our craft.” (page 213)

Multiple times in the book the point is brought up that programmers are optimists by nature. Isn’t that the truth. How many times have you underestimated the scope of a project, or estimated time line? Yeah, we are all guilty of that to some degree.

“In 1975, operating systems abounded: each hardware vendor had at least one proprietary operating system per product line; many had two. How different things are today! Open systems are the watchword, and there are only five significant operating system environments into which people market applications packages (in chronological order):

  • The IBM MVS and VM environments
  • The DEC VMS environment
  • The Unix environment, in one flavor or another
  • The IBM PC environment, whether DOS, OS-2, or Windows
  • The Apple Macintosh environment.

” (pages 283-284)

This list really stood out to me. I’m sure there will be people willing to argue with me on this point, but I’d say that list is now down to just three: Unix, PC and Apple. Those remaining three have evolved over the years. The availability of open source Unix/Unix like systems have grown and prolonged the Unix environment. The PC market really only consists of Microsoft Windows now. And Apple, who has been on something of a come back in recent years with Mac OS X and other products.

There are plenty of other parts that stood out to me, I mention these two because they reflect something of the person of many programmers and appreciation for the history and change of operating systems over the decades.

If you’ve read The Mythical Man-Month I’d appreciate it if you left a comment about something that stood out to you, I’m curious to hear the insights of others about this book.

I've Got a Secret

Some six or seven years ago I caught a few episodes of the old I’ve Got a Secret shows from 1950s and 60s. One episode in-particular has stuck with me, it had Samuel J. Seymour on as a guest. His was a rather unique secret, he was at Ford’s Theatre when Abraham Lincoln was assassinated.

Even though this episode was well before I was born (by some 17 years), it was amazing that someone was still around in 1956 who was there when Lincoln was shot. Then the incredible luck that he was recorded on I’ve Got a Secret. Beyond that the recording was preserved at least long enough for me to watch it more than four decades later on the Game Show Network. I haven’t been able to find this online any where unfortunately.

All of this makes me wonder if we are doing enough to preserve the experiences of our elders. For that matter I need to be better about writing in my journal, or video taping messages so that my kids/grand kids/etc. My blog doesn’t really count for this, in another few decades no one will care what day Yahoo bought Flickr, that the maximum row size of SQL Server 2000 is 8060 bytes or how to use CSS opacity in Internet Explorer.

PostgreSQL Projects at Skype

Skype has been PostgreSQL as their back end database and have made available their database projects as part of the Skype Developer Zone. For background how Skype has made us of PostgreSQL check out the whitepaper.

Skype has made the following projects available:

  • PL/Proxy
  • SkyTools (made up of Londiste, PgQ and WalMgr)
  • PgBouncer
  • Enhancements to PL/Python that are part of PostgreSQL 8.2

Nice to see Skype giving back to the PostgreSQL community.

OpenCoffee In Sacramento

Adam announced a new initiative via SacStarts: OpenCoffee.

The general idea is to provide a consistent time and place for people to come and get some work done with other people around doing the same thing. This will obviously be most attractive to the work from home crowd.

Time: 8am and 11am every Tuesday
Place: Tupelo Coffee Roasting
Address: 5700 Elvas Ave near 56th and H Streets in East Sac

So if your schedule has that kind of flexibility put this in your calendar.

Google Trends Died Back In November 2006

It appears that Google Trends stopped back in November 2006. Did I miss something? The about page doesn’t have any mention of this, only stating that:

We’ll aim to update the information provided by Google Trends monthly.

There has been some discussion about this on the Google Trends group list, but no responses from Google. I’ve emailed labs+trends@google.com asking what happened.

Perhaps Matt Cutts could offer some insight into what is going on.

JavaScript Timing, Nothing Under 10ms

Tobie Langel pulled out an interesting little JavaScript nugget from the recent Background Music post on the Webkit/Safari Blog:

Some Web pages specify repeating timers with an extremely small timeout. In fact they often use the value 0 to mean “Fire as soon as you can.” Safari 2 does not throttle these timeouts, and so a poorly-constructed page that specifies a repeating timer under 10ms will actually hog a lot of CPU. Aggressive timers were actually a problem in Mozilla for a long time before being fixed, and they are currently a problem in Safari 2. WinIE, Firefox, and WebKit nightlies basically error-correct the badly constructed page and ignore timer values of < 10ms by changing them to be 10ms.

So don’t bother using setTimeout or setInterval for something less than 10ms.

Three Ways To Use Draft Emails

I’ve been using email for many years, but it wasn’t until a few years ago that I started making serious use of draft emails. If you’ve completely ignored that save as draft feature in your email client, here’s a few ideas that will help change all that.

  1. Cooling Off Period

    Use email long enough and eventually you’ll get one that just pushes your button. In the heat of the moment it’s easy to respond in haste (flame on!). I’ve even seen some people get so worked up about an email that they’ll spend the next hour composing a small book as a reply to vent their frustrations. If you catch yourself in this mode save the email as a draft. Go take a walk outside and then review what you wrote. You may find that a few edits are in order before finally sending it, or you may find that you don’t need to send a reply at all.

  2. Task List / Status Update Reply

    Working on different projects I occasionally get emails that are basically a to do list, or a status update on several issues. It isn’t very often that I’ll have all the details I need to know for the reply immediately, so I’ll start a reply with the information that I do have, then dig up the rest during the next hour. Sometimes this can be more involved and might take me a whole day or more to finish. By saving the reply as a draft it’s easy for me to come back at different points during the day to add new details.

  3. The Weekly Report

    A couple of years ago I started using draft emails for a weekly update. I’m sure there are some people that are cringing at the thought of doing this and I would have been right there with you at one point, but no more. On Monday morning I send out the email for the previous week and start a new draft email that I update through out the whole week. I start a new section of the email for each work day and keep the formatting pretty loose. Well, except for the subject line. I keep the exact same format for the subject line each week:

    Status Report: YYYY-MM-DD -> YYYY-MM-DD

    The first date is the start of the week, the second day is the last day of the week. I do this for two reasons. One, I CC myself on all of these emails and keep them in one folder to make it easy to go back and quickly find a report for a given week. The second reason is to make it easy for the other people in my group who get these emails to filter it.

    I don’t have any hard and fast rules about the contents of these emails, so sometimes they can seem rather random. I generally don’t include every little thing I did, instead I try to include things that I think would be useful if I had to remember it a month from now. So this will include things like when I took a vacation or sick day, contact information for a vendor or a big ugly SQL query that took me awhile to figure out.

    Then there are the more obvious items, like so and so reports a problem with xyz and John Doe said he’d take care of it. Those are handy because if I’m asked about it a week or two later I don’t always remember the details, but I usually remember that I included it in a weekly status report. At this point I’ve been doing it for so long that even if I don’t remember putting in a status report email I look there any way because I know that is where I dump details during the week.

    Then there are the general ‘things I did this week’ that are also included. This is helpful when the boss wants to know what you’ve been up to.

Out of all of these I find number 3 the most useful, since I use it every week. Number 2 I use occasionally and I’ve mellowed out enough that I don’t have to use number 1 too often. :-)

Seriously though, even if no one else reads my weekly status reports, they’ve been a huge help to me. Now that most email clients have a reasonable built in search feature it makes it pretty painless to go look up history on old items. If you don’t have current method for keeping track of the information that floods in every day, start a draft email and fill it up as the week goes on.