In the summer of 2009 I revisited my 2004 summer apprenticeship at Object Mentor. What follows is the original 2004 post and then some 2009 commentary.
Got up late, hustled downstairs to get some breakfast, only too discover that I didn’t care much for either of the Keynotes that morning. Some Microsoft guy was gonna talk about Visual Studio and M.S. agility. Hmm. I had already chatted with the guys at the Microsoft booth about the new Visual Studio and here’s the scoop: The will be unit testing integrated, but it will be Microsoft’s own version. They did say that V.S. will let other products add on and integrate on their own – but they couldn’t show me that. I will be interested to see if they will allow Nunit to integrate as seamlessly as IntelliJ and Eclipse do. So I wasn’t real interested in that. The other talk was about the future of C++. I’m still trying to avoid C++ until I have to acknowledge its presence, so I avoided that talk and hung out in the FitFest room. And had a good time writing some tests/code/test/code with a Swedish? guy named Carsten. When you carry a torch you can see the Wumpus for many rooms away, but he can see you. He will wake from his slumber and chase you until you are gone from his line of sight. The big problem was that ‘moveWumpus’ was private and only accessed from a method that had to do with arrows. So it took us a while to figure out why this was – the Wumpus wakes up when you shoot an arrow and miss. He then moves to a random room. So we stumbled around with various means of integrating this, but eventually ended up following the already established pattern of having a Boolean variable that is checked by the ‘evaluate’ function. So we checked ‘hasTorch’ in the evaluate method and then wrote an algorithm that looked along the lines of sight. It worked, but it is es muy crappisimo. First the line of sight business is duplicated in the shoot arrow function so we really should pull it out and abstract it. And the WumpusGame class has way too much going on in it. And the commands really suck (the are methods that shoot arrows, and magic arrows, but no way to access those command while playing the game). Unfortunately, both Carsten and I had to go before we could do this refactoring.
I talked to Micah about this latter and he had an interesting point. Even though the code was ugly, we had added way more functionality than last year (where the code size tripled and no new acceptance tests passed). And also the ugly code emphasized the need for sharing knowledge of the system by pairing and switching pairs. Carsten and I sat down and had no idea how anything worked. In order to add some functionality we had to poke around the code for 45 minutes. And then, because we had to leave and couldn’t work with other people, our knowledge of what needs to be fixed and how to fix it walked out the door with us. When we came back later, things had sufficiently changed so that we couldn’t be sure that our refactoring was valid anymore.
Later I sat in on a panel called ‘Is XP relevant?’ Which was mostly an excuse to start a fight. Bob started one by claiming that XP was irrelevant. Lots of people objected to the name ‘Extreme Programming’ because it scares people and others objected to getting rid of it because they think the agile is too watered down a concept too support. There was the same general disagreement about how much it is our job as developers to be polite and sell XP or Agile or whatever. I don’t like selling, but I don’t want to code in a waterfall company.
The big end of the Conference banquette was probably more loud music and dancing than most programmers are comfortable with, so when that started up most heading for the door. Before we cleared the room, there was the announcement of the next year’s conference name: ‘Agile United’ I guess XP is too scary to have in the title. The counter argument is that Scrum and RUP aren’t in the title so why should XP be privileged? Bob has worries that somebody might start up a conference with XPish title and all the unification we’re seeking will be lost.
Bob’s after dinner talk had to do with astronomy – surprise! He talked about how Kepler had a beautiful theory regarding the motion of the planets, but when he looked at the data he found his theory was wrong. So Kepler adapted. His idea was that XP is a beautiful idea, but we must keep looking at the data to weed out the bad parts.
For those who didn’t want to dance, there was charity poker. 10 bucks Canadian gets you $10,000 funny moneys. Then you could play blackjack or poker and for every $10,000 you turned in you go a raffle ticket. I ended up playing pretty well, got lots of raffle tickets, then Micah’s mom gave me her raffle tickets so I won two books. One was a Microsoft ASP book which I gave away, the other was ‘User Stories Applied’ by Mike Cohn. I saw mike Cohen speak on the Managing Agile Projects panel, and he seemed pretty cool (and like he might be able to break me in two) so I’m gonna read it. Not just because I fear for my safety, but also because a number of people said it was good stuff.
Bob is famous for sticking astronomy into any and all talks he gives. At this year’s Rails Conf he didn’t even try to integrate it into the talk. 10 minutes of entertaining stuff about the age of the solar system and then a bit about Smalltalk.
At some point this evening I talked to a bunch of people from ThoughtWorks, including my recruiter Sonia. I had met her though a reader of this here blog a week or 2 back but I hadn’t mentioned it because nothing was for sure. The ThoughtWorks people seemed pretty cool and everyone at Object Mentor said it was a good place to work. I think at some point this evening I made my pitch to Micah for a job at Object Mentor saying that I could be the IT guy for OM while I learned more and could slowly work my way into real work. Ultimately they declined my offer but were very nice about it and said that they just were not hiring at that moment but maybe in 6 months or so we could talk again. I was a bit crushed as I thought working at ThoughtWorks was a bit of a long shot. I had done a few other interviews and most companies were pretty put off by my lack of experience. So with XPAU just about over and my apprenticeship done it was looking like I’d have to teach another year of high school physics. Maybe this was all just a fun/stressful summer adventure.