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.
Last day in Gurnee. The Object Mentors decided that pizza wasn’t enough for my birthday, so they took me out to one of those fancy Japanese steakhouses. Ya know, I’ve never actually been to one of those knife-flying, death-defying, make-it-all-on-a-grill-while-you-watch restaurants. A good time was had by all.
It’s been a good summer. I’ve learned tons about class design principles, patterns, pair programming, test driven design, and a whole bunch of intangibles. Without a doubt the coolest thing about working at OM was being able to lean over and ask David, or Micah, or Paul, or James, or – Look, everybody sitting next to me had great ideas about programming and, as cool as all their classes are, working with great programmers is a much better way to learn.
Speaking of Object Mentor’s classes, I’ve been meaning offer up my critique – from a teacher’s point of view. What I like, and what most non-teachers usually screw up, is the commitment to lab work. If there’s a lot of material to cover you can seem to cover it quicker with more lecture and less lab, but that’s a big mistake. Just because you throw a slide up on the screen and yap about it does not mean that anybody had any idea what’s going on. In my experience, 40-50% of the class are thinking about something besides what I’m talking about at any given moment. So it’s crucial to have the students work out the presented ideas in the lab. First, because it forces them to talk to each other and fill in the gaps where somebody was distracted by thoughts of girls, or candy, or shiny objects. And second, because if a student knows they’re probably going to put the presented ideas into action they pay just a bit closer attention. The lab, in this case, is writing some code. Because OM is XP, they do all code writing in pairs. Which is very cool. One person can get stuck, but two can tackle ideas that would confound either individually. So the classes don’t bog down when a few people are way behind and others have zoomed ahead. The groups tend to keep everybody moving along at the same pace (well not exactly, but it’s much better). Which is probably a good argument for pair programming in the non-classroom: Nobody gets lost. I tell ya, I miss it when I have to work by myself. There’s nobody there to keep me from doing something stupid so I waste lots of time running down a blind alley when a pair would look over my shoulder and say ‘What the hell are you doing that for?’
Well I gotta pack for XPAU – next post will be from Canada!
There are many times in life where you can go faster short term but you have to pay more on the back end. Sometimes it’s worth it (startups coming to mind), but I worry that once you’ve compromised your ideals once it’s hard to know where to stop.