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.
I arrived this morning to find that the Martins are back in town. Bob seems like a good guy. I didn’t talk to him much, but working next to someone all day can give you a good impression of a person and Bob seemed easygoing and fun. He also was trying to quote some obscure line from a classic Star Trek episode (you know the one where the crew of the Enterprise have been captured by an alien being (again) who wants to learn about humanity (as always) by having them play out some bit of 19th or 20th century history (this time it was the shootout at the OK coral)? Well, I do.) so that gets put in the plus column. Micah took a look at our project. Then he asked us what we thought the project was.
Uh oh.
‘Er, to change the OMwiki python code so that it operates more like the FitNess wiki?’ Well, not really, as it turns out. What he really wanted was for us to translate the OMwiki pages into FitNess wiki pages so they could kill off the old OMwiki and have it be re-born with all the added features of the FitNess wiki. ‘Oh.’ We said.
So we start over.
One very cool thing about today is that Micah offered to let me sit in on the C# course that he’s teaching next week. I was worried that I might slow the class down because I’m an absolute beginner (I know it’s a Java knock-off, and that’s about it), but that’s who the class is for. Excellent.
Paul and I started writing the wiki conversion program – TDD style of course. There will be no coding without a failing test. After a few days of Python’s super easy file writing techniques, we had to stumble around with Java’s roll your own types. Basically, Python is a higher level language than Java so it does a lot more for you. Yes, I grudgingly admit that Python has advantages over Java – There, I’ve said it.
When I first started re-reading these blogs post I thought to myself: “Funny, I don’t remember that we spent a lot of time fixing up the old Python wiki…” Yeah, that’s because we didn’t – We burned a week working on the wrong project. I felt so stupid. However, it’s an important point that when XPer’s start going on and on about having an onsite (or highly available) customer you should probably listen. I’ve seen this situation many times since: Only person who knows what they want is totally unavailable and so the developers work on their own only to realize that they totally misunderstood the requirements. The awesome thing is that Object Mentor makes its living teaching people how to be Agile/XP and they still made the classic off-site customer mistake. This isn’t to bash on them, but merely to say that when the major stakeholders are unavailable (or perceived to be so) then you’re going to waste a lot of development time.
Also, Uncle Bob is a nerd’s nerd. One time someone was using an old-school dial up modem in the office while he was around. Just from listening to the “scree scraa scraa” noises it made, which he casually heard from across the room while working on something else, he diagnosed some problem or other.