My Apprenticeship - Monday, June 14, 2004
This summer I'm revisiting my short apprenticeship at Object Mentor. I'll be posting commentary on all my posts from the summer of 2004 exactly 5 years later to the day.
Today I took the train to Waukegan, and then unfolded my bike and rode the last five miles to OM.
An hour to do some work on the train.
10 miles per day should help me lose some weight.
My commute now takes about 2 hours.
There's a lot of hills.
Now that I'm using Python, I tend to indent everything.
Speaking of Python, I spent some time this weekend translating my Tic Tac Toe program into python. Most of the stuff is pretty easy. But it still took a fair part of today to complete the translation. And when I say complete, I mean it compiles, not that it runs. I'm having trouble printing out the board (my toString method won't cooperate) and I haven't quite got the hang of making complicated calls in python.
This morning I met Paul, the other apprentice. He's been working with OM for about 3? years now. He's finishing up a Computer Science degree at DePaul. During lunch I asked him what he though about apprenticeship vs. college and he had this to say: 'Computer Science' what a joke of a degree.' Hmm. How so? 'I learned more from watching Micah program in a day than I learned in my first year.' Strong words. When I pressed him as to why he feels that academia can't teach CS, he had two points: One, CS is so new and evolving that how to teach it is continually way behind the curve. Two, it just doesn't work unless you have someone right there to help you. As a teacher, I can agree with the second statement. One of the reasons home schooling routinely kicks public school's ass is because you just can't compete with the Teacher/Student Ratio. I'm a way better teacher than just about every home-schooler, but who cares when I'm divided by 30 or even 20.
For awhile Paul and I did some pair programming (my first pair programming experience, aww), sorta. He's way farther along than me so I was only able to contribute a few things, but even so I feel reasonably good that I could do something besides sit there. Unfortunately, we ran into a pretty sticky problem just about right away. While looking at the OM wiki code(written in Python) we found that none of the tests would pass. This is a huge problem because the whole TDD thing requires that you keep checking if the code works. Well it doesn't. Except it does: The Object Mentor wiki is alive and well as we speak. So something's wrong with the tests. It seems that the tests create some temporary files when they start and then delete them after a given test is run. Problem is that the files it creates are read-only, so it can't delete them. We spent a few hours trying to figure out how this could be so, but we were flummoxed. Unfortunately nobody was around who had ever worked with the code (David just started, Lowell is on the business side of things, and others were involved in teaching a class). So we spun our wheels for awhile. At first it was kinda cool asking Paul what various code was for, but after a time he and I were getting more and more frustrated looking at code that really should work. And when you can't test, you can't do TDD. Eventually Paul started coding 'blind' -- as he put it. But by then the day was over and I had to get back on my bike. Man my ass hurts.
This was the first of 3 different summers that I rode my bike excessively to work. Every summer I was convinced the extra exercise would help me lose weight and yet it never did. I guess I ate exactly the right amount of extra calories to keep the weight on. Awesome.
Paul, in the above post, is Paul Pagel. He later went on to co-found 8th Light with Micah Martin. We spent a lot of time that summer pairing, but he was so far beyond my abilities at the time that I felt bad about holding him back. I spent a lot of my days with him thinking "Well, I have no idea what he's doing right know but I just made him stop 10 minutes ago and explain everything so I can't really do that again... Can I?" It's tough when wildly dissimilar levels pair -- in an ideal environment you should try to avoid complete mis-matches but that's easier said than done. One of the nice things about Obtiva is that we often have more than one apprentice at a time and there's always someone who just graduated from an apprenticeship so our apprentices get some exposure to pairing with someone close to their level.
I still have the foldable train-friendly bike, but I probably haven't ridden it since that summer. Wanna buy it?