This node has nothing to do with Perl or programming directly; it is about my personal epiphany. It is sappy and personal. It is not going to teach you new techniques in Perl or any other language. You have been warned. UPDATE: There is now a section at the end that talks about programming more specifically, though still in philosophical terms.

Bob Geitz is a CS professor at Oberlin College, where I spent 4 glorious years, ending in 1994. Below is the text of an email that I recently sent him. I am posting it here for several reasons:


Bob,

I don't know if you will remember me (David Storrs) from your CS 101 class back in 1993, but you literally changed my life and I wanted to thank you.

I had always been vaguely interested in computers, but had never really pursued them; I wanted to be a writer. I had taken a few computer classes, but they put me to sleep. I admit, the only reason I was in your class was because I desperately needed to fill 3 credits and it was the only thing open.

That attitude changed mighty quick--it might have been the very first class, but it certainly wasn't more than a week. I remember having a literal epiphany; my outlook on the whole universe, my place in it, and my future goals shifted in a single moment, dropping into their new pattern with an almost audible 'click'. Suddenly I felt that the world was just a collection of challenges--interesting challenges, at that--, that all of these challenges could ultimately be resolved through logical analysis and proper application of resources, and that a single person could apply that analysis and make the world change...that maybe I could even be that person. It was incredibly exciting.

I have told this story many times over the years...the way I always explain it to people is to say that I realized "This is the most incredible stuff I've ever seen and I'm going to do it for the rest of my life." So far, that has been a true statement.

When I left Oberlin, I applied for a job in the computer department of a pension firm in Norwalk, CT. Due to a bureaucratic foulup, I got stuck in the Performance Measurement department instead. I stuck that job for 366 days because I wanted to have a full year on my resume. After that, I moved to New York City and got a job writing computer games. Since then, I have written web applications, finance programs, (cheesy) virtual reality, and a lot of back-end code for various companies, including {REDACTED}. Today I am a contractor; I currently pay the bills by writing {REDACTED} code for a company called {REDACTED} while, in my Copious Free Time(tm), I am writing an Open Source medical records product which I intend to turn into a business. I am married and own a house.

I am not being hyperbolic when I say that everything in the preceding paragraph (with the exception of being married) is thanks to you. Your teaching opened me up to something truly amazing that I had never recognized before. I am so very, very glad that nothing else was open when I needed to fill those 3 credits.

Thank you,

David Storrs

Bob's Gift

So, why did Bob's teaching make such an impact? In part, it was Bob himself...he was relaxed, easy to talk to, funny, and had an aura of competence. I have seen (something like) these attributes in most of the really excellent programmers I have known. I suppose it's possible that someone could be a top-drawer guru but have a burr in his boxers 24/7, but I doubt it. The only way to become a real expert in this field (IMHO) is to learn as many different things as possible, internalize as many viewpoints as possible, and find a consistent framework for all of it. It's very hard to do that except by talking to, and working with, other people and, to do that, you need to be the kind of person they want to talk and work with.

Aside from the personal traits, Bob taught me how to think logically and algorithmically. He demonstrated specific ways to deal with problems: either top-down (taking a big problem and breaking it into smaller and smaller chunks until it becomes trivial to solve each chunk) or bottom up (building tiny little pieces that are trivial to write and test, then combining them to do more and more until the problem is solved).

The epiphany, of course, came when I realized that these techniques don't just apply to computer programs, they apply to everything. Need to build a house? I'd start top-down; figure out what all the necessary tasks are, then decompose each task until it's trivial, then execute. Trying to fix a problem in your love-life? I'd start bottom-up; do something small, right now (offer a compliment, spend 30 minutes together, give a card), then do more and more small things until the problem is resolved.

I also learned, perhaps not directly from Bob but certainly because of him, that programming is a lot of fun. Even when the code won't compile and you swear the computer is laughing at you, it's still fun. You get to be creative and logical at the same time and you have the satisfaction of knowing that there is always more to learn, always room to improve, and it's always going to be new. You can top out in a lot of jobs, become as good as it's possible to be--after that, it's just boring. Or you end up doing the same thing, day after day. With programming, that doesn't happen.

The final thing that Bob showed me--and I doubt he remembers this--is the poetry of programming. As I said at the top, before I came to his class I wanted to be a writer. I loved the fact that English has so many nuances, so many connotations, so many shades of meaning. Programming sounded cold and rigid by comparison. And then, one day, Bob casually demonstrated that a for and while loop were interchangeable with just a little revision. I think that was the moment of my epiphany, the moment I said "I'm going to do this for the rest of my life." Such a small thing, to have such an impact; so obvious to me now, after a decade of experience, but fresh and wondrous then. The part I like best about programming is that I keep having those moments--which I guess ties back to that "always more to learn" thing.

The real problem, of course, lies in not expecting the rest of humanity to behave as logically as a computer. I'm still working on that.

Considered: BigLug: Delete. This does not belong on this site.
Unconsidered: ysth: enough keep votes - Keep/Edit/Delete: 37/3/19

Replies are listed 'Best First'.
Re: Thank you, Bob Geitz
by dragonchild (Archbishop) on Mar 11, 2005 at 02:18 UTC
    This is a personal testimony, describing someone who made a difference in his life as a Perl programmer. I know I had a few people like that (tedv, tilly, tye, and many others who aren't on PerlMonks). Keep talking, brother!

    Being right, does not endow the right to be rude; politeness costs nothing.
    Being unknowing, is not the same as being stupid.
    Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
    Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

Re: Thank you, Bob Geitz
by johndageek (Hermit) on Mar 11, 2005 at 13:28 UTC
    Just an opposite

    Almost 25 years ago, an instructor named Fred told me: “John, you won’t last two years in this industry”.

    Just goes to show that you should listen to good advice, the trick is picking out the good advice from the bad advice.

    Enjoy!
    Dageek

Thank you, Whitehawk
by BigLug (Chaplain) on Mar 14, 2005 at 13:59 UTC
    I originally considered this post as I believed it was not the sort of content that was of benefit to the perl community. It made Whitehawke feel like he was giving an old college professor some credit where it was due, but on the whole it was a private affair betweent the two of them.

    After my consideration, Whitehawke came back and has heavily edited his post. No, he didn't delete stuff, just added the non-italicised part at the end. This has changed the feel of the post considerably. While I still feel the post is a little on the sycophantic side, it never-the-less has greater meaning to the community in that Whitehawke now distills some advice he can pass on from his experience.

    Thankyou Whitehawke for sharing this advice, and more so for expanding your post and asking me to re-read it. I appreciate the effort you've gone to, and how you've turned this post into something useful (IM(never)HO) for our community.


    Cheers!
    Rick
    If this is a root node: Before responding, please ensure your clue bit is set.
    If this is a reply: This is a discussion group, not a helpdesk ... If the discussion happens to answer a question you've asked, that's incidental.

      BigLug: You're welcome. I find the word "sycophantic" a little bit of an ouch and I'm sorry you believe it's appropriate here, but I won't waste anyone's time debating.

      Would you find fixing the spelling on my nick in your post? It should match /e$/.

      Thanks,

      Dave Storrs

A reply falls below the community's threshold of quality. You may see it by logging in.
A reply falls below the community's threshold of quality. You may see it by logging in.