Wednesday, March 4, 2009

"There is no teaching if there is no learning."

I've been reading a lot recently. Reading for class, reading for fun, reading for personal enrichment. If the internet has taught me anything, it's that bright, motivated people don't need teachers or encouragement. They'll just learn on their own, societal trappings be damned. MIT OCW will render all universities impotent, and they'll be forced to close their doors because everybody who will ever going to amount to anything can get better content for free. Those who would not have are better off staying home, because their college degree was just a waste of 4 years and $160k anyway.

I can't say this with a straight face.

Now, this isn't to say learning on your own is a myth. I've made a bunch of progress in the last year just reading on my own. At least, I feel like I have. But now that I'm back in a class, where my only job is to learn from somebody explicitly smarter and more knowledgeable than me, the difference is incredible. In only 4 weeks, I've gotten a handle on managing program state, gained intuition on why trees are used, learned a paradigm for thinking about flaky or distributed systems, and been introduced to the denotational semantics of programming languages[1]. In 4 weeks. In 1 class.

It's not like I'm not self-motivated. I've worked on a bunch of side projects, read a couple programming books, and have generally been working diligently on my "known unknowns". But, the difference a teacher makes is night and day. Not only does it keep me focused, they also expose me to the "unknown unknowns": ideas that I hadn't even considered. It keeps me constantly re-evaluating what I know, and what I think I know, and everything gets incorporated into my general model, making it just that much more robust. Sure, reading may occasionally do the same thing, but if I disagree with any part, I can't ask the book for more detail. I certainly can't come to a compromise with it. Reading is a monologue, teaching and learning is a dialogue.

So, want to learn about something? By all means, buy a book, read a paper, and discuss it with your friends. It can't hurt. But if you're truly curious, find a teacher.

---------------------------------------------------------------------------

[1] Basically, the denotational semantics of a language allow you to specify the desired effects of each fragment of code, and, by structural induction, explore all the possible effects of a language in a mathematically correct way, all without a reference implementation. It's powerful stuff, but probably overkill for any project that builds on a solid base (e.g., a pre-existing language). The generalizations you can pull from it, on the other hand, are useful for anybody who needs to design a notation that is self-consistent.

1 comments:

  1. I feel the exact same way. This weekend, during the Harvard visit, I listened to a number of presentations by professors explaining the fundamental physics of their research. Suddenly things clicked a lot quicker in my head, and I experienced the much missed exhilaration of gaining a new level of understanding.

    I wish I were taking a class now.

    ReplyDelete