A Unit Test Success Story

I spent the past few days closing out PurpleWiki bugs in preparation for our impending v0.9 release. And once again, unit tests saved my butt.    (3I)

Automated unit tests are like programming with a net. You invest a little bit of time up-front writing the test, and then you save a ton of time later. Most importantly, unit tests give you confidence to experiment. You can dramatically refactor your code without worrying about unknowingly breaking something.    (3J)

I’ve used unit tests on a number of small projects, and have been pleased, but not overwhelmed with the results. However, my experiences with unit tests and PurpleWiki have been extremely gratifying. Our unit tests have consistently caught bugs that might otherwise have stayed hidden for months, even years.    (3K)

Extreme Programming (XP) advocates writing tests before writing code. I cheat a bit here. I usually write a few test cases, write the code, then write the automated unit test. Same goes for bug fixes. More importantly, we mandate a unit test for every bug fix. If changes to the source code revive an old bug, the corresponding test will catch it immediately.    (3L)

On a related note, I ran into Chris Sepulveda, an old college acquaintance, last week. He’s been an XP consultant for several years, and he recently moved from NYC to the Bay Area. We had an excellent discussion about XP patterns and adoption. In particular, he bemoaned how narrow thinking about the methodology prevented many people from incorporating it into their processes effectively. XP is as much about philosophy as it is about methodology.    (3M)

Chris is loaded with good thoughts, and is slowly but surely sharing them with the rest of the world on his blog.    (3N)

CSS Stylesheets for EEK Speaks

I got an e-mail from Steve Iman, who had downloaded my blosxom flavours files for this blog. He said that it took him a while before he realized he needed my CSS stylesheet to make the flavour files work.    (3E)

I didn’t include any CSS files in the package, because they are publicly available from my web site. However, you will definitely need them if you want to play with my flavour files. Here are the direct links:    (3F)

Heavenly Brisket at Flint’s

This blog is supposed to be a work journal, and it is. But the temptation to write about other things is strong, and I am weak. I am especially weak for good barbecue.    (38)

In the summer of 1997, my then-boss, Jon Erickson, took me to Rickey’s Pit in Kansas City, supposedly one of Bill Clinton’s favorite meat joints. To this day, I have not had better smoked catfish. At the end of that trip, I almost missed my plane back to California in order to sample the succulent offerings at the Great Lenexa Barbecue Battle.    (39)

I’ve had decent barbecue in the Bay Area, but nothing that matched my Missouri/ Kansas experience. (The closest was at Big Nate’s in San Francisco, but having former NBA great Nate Thurmond take my order might have affected my judgement.) Until yesterday.    (3A)

Last night, I went to the original Flint’s Barbecue in Oakland. It’s located in a nondescript building in a nondescript neighborhood on the corner of San Pablo Avenue and Market. The place is old school and no frills. There are no tables or plates, and the menu covers the basics: brisket, ribs, chicken, links, and of course, the requisite slices of Wonderbread. If you want soda or silverware, you will have to go elsewhere.    (3B)

I had the brisket and ribs combo. The ribs were good, but the brisket was unbelievable. Just watching the friendly woman at the counter hack up slices of beef made my mouth water, and the meat tasted even better than it looked: tender, moist, and smoky, perfect with the hot barbecue sauce.    (3C)

Flint’s has been around for 55 years. I plan on doing my part to keep it open for a long time to come.    (3D)

David Perkins on Organizational Intelligence

David Perkins, a professor at the Harvard Graduate School of Education, just published a new book on organizational intelligence: King Arthur’s Round Table: How Collaborative Conversations Create Smart Organizations (John Wiley & Sons, 2003). See Harvard Gazette‘s review of the book and of Perkins’s work.    (37)

E-mail as a Synchronous Collaboration Tool

I just got back from dinner with a friend in Berkeley. (Wow! Details about my life! Not just more boring thoughts about collaboration! Whoops, spoke to soon. Here it comes.) I spent most of the car ride back thinking about Leaping the Abyss and the inherent advantages that synchronous collaboration has over asynchronous collaboration.    (2T)

I then started thinking about my own experience with asynchronous collaboration, and also my observations of various open source communities. I realized something important: E-mail is technically an asynchronous collaborative tool (different time, different place), but it can also be used synchronously (same time, even same place). Some of my best experiences working with people over e-mail have occurred when we were all online at the same time, and we were responding almost in real-time to messages. One of us would receive an e-mail, do some work in response, and send out another e-mail. Momentum would build, and a chain reaction ensued.    (2U)

Many open source communities work in similar fashion. In fact, it’s common among open source developers to follow both e-mail and IRC as they code.    (2V)

Earlier today, I polled the Collaboration Collaboratory about e-mail usage. Dorai Thodla said something interesting in response:    (2W)

Mostly I read the posts in the evenings or over weekends. Sometimes I respond but most of the time I don’t since I look at these responses a bit late. [emphasis added]    (2X)

If e-mail is asynchronous, then how can you look at responses late? Well, you can. There’s a feeling of active inclusion if you’re participating in a conversation as messages are coming in. Following a fairly complete thread after the fact can feel more like reading than collaborating.    (2Y)

There are several potential metrics we can use to study this phenomenon:    (2Z)

  • Average response time in a thread.    (30)
  • Each participant’s average time-of-response.    (31)
  • Average time span of threads.    (32)
  • Correlation between depth of thread and average response time?    (33)
  • Correlation between number of participants in a thread and average response time?    (34)
  • Other possible correlations?    (35)

Using e-mail synchronously may be one effective way to use it, but it may not be the most effective way. One downside is that it excludes people who are unable to participate synchronously, such as people living on the opposite side of the world. Another possible downside is that it encourages superficial thinking at the expense of deeper, more rational discussion. A third possible downside is that it facilitates emotional conflicts (i.e. flames) while impeding resolution of these conflicts.    (36)