Relevance Craftsman Swap Day 2

Today was my second at Relevance for our craftsmanship swap. Chris and I continued work on the project we began to work on yesterday.

I was glad to have a chance to continue the story work we’d started, and see it through to completion by this afternoon, eliminating a few timezone bugs along the way, which is an issue I’ explain further below.

We started the morning off with the company wide stand up meeting again, followed by a retrospective for the project I was pairing on. Chris explained that every iteration on a given project, Relevance does either a retrospective or a risk assessment meeting.

After some scheduling and telephone difficulties on the client’s side were mostly sorted out, Jason kicked us off as the retrospective facilitator. I haven’t been on a project that held retrospectives on a regular basis before (though we’ve certainly done them at times), so it was interesting to see the very structured approach Relevance takes.

As a brief outline, the team began by outlining their expectations and hopes for the retrospective, followed by ratings of how several areas of the project were going, and finally a review and a set of action items with due dates attached.

Chris, Jason, Don Mullen, and Michael Parenteau were all excellent at interacting with the customers. I like to think that I’m pretty good at that kind of interaction, but there’s a lot I picked up in a short time on that conference call.

I heard a lot of rephrasing the customer’s concerns to verify that the team always had the correct interpretation, and I’m sure the customer came away feeling like their needs were really being addressed, especially with the clear action items to address any issues that came up.

Michael’s design work on this project, incidentally, is pretty killer and got rave reviews from both of the client representatives.

In yesterday’s installment, I neglected to mention the project management tool the teams use, Mingle. It’s a very nice tool, which looks to have a ton of features but manages to keep the interface very clean and simple.

I’m not sure in what situations I’d feel compelled to switch to it over something nice free like Pivotal Tracker or Agile Zen, but it is an impressive piece of software that I’m glad to have had a chance to take a look at.

So… time zones. Every time I deal with them it’s a mind-bending struggle to keep all the concerns in their proper place, and today was no exception. We had Time.zone in Rails set to UTC, but were still getting EST times.

It turns out things like Date.today.beginning_of_day don’t respect that setting and use whatever the default system time zone is. After about an hour of investigations and pondering, we eventually decided to replace most uses of Date with the Rails TimeWithZone object, allowing some mildly unsavory naming with the understanding that the decision is going to need to be revisited to account for various user time zones anyway.

It seems to me that this is a universal problem for apps that might be used in different time zones. Chris suggested that this might add to the often-quoted-but-rarely-sourced list of hard problems in computer science: cache invalidation and naming (and off-by-one errors?).

So henceforth, time zones are in there too. That’s right, you heard it here first: it’s three hard problems: cache invalidation, naming, and time zones.

After work Aaron Bedra, Alex Warr, Stuart Halloway, and Stuart Sierra introduced me to my first draft-style game of Magic the Gathering.

Yes, that’s right, I spent the evening with three of the Clojure guys and learned a ton… about Magic. It was fun—I got a ton of help from everybody, especially Alex and with a lot of help I actually won a few rounds.

We played duels, best-of-3, and I went 2-2 overall in games. And by “I”, I mostly mean “the people who told me what I should put down.” I heard a rumor on one end of the table that Relevance prefers to hire Magic players over non-players as programmers, so applicants should take note.

I don’t know that I’ll run out and buy a deck, but it’s always fun to learn a new game, especially when the cards are named things like “Lord of Shatterskull Pass.”

Sounds like I’ll be sitting in with Alan Dipert ’s team tomorrow on some Clojure work, which I’m very much looking forward to.

Colin Jones, Software Craftsman

Colin Jones is particularly interested in web security and functional programming, using languages like Clojure.