Hackerschool --- the First Two Weeks
I have learned a tremendous amount in the first two weeks of Hackerschool. I've had my "I know macro fu" moment (think the Matrix). I've realized how SICP's Yin Yang of the Metacircular Evaluator is really just an elaborate example of mutual recursion. And I've learned what it takes to write A* in Clojure (think Rodin, the work of art is the art in process. I learned something like that in art history class once). But, in this post I want to focus on some of the emotions that I've experienced.
First, it is exhilarating to be the definer of your own work. Exhilarating in
the terrifying, flying the seat of your pants kind of way. I've been using two
things to guide me: the joy of programming, and the pain of confusion. The
process of going from "I am going to write a compiler" to "I am going to write
an interpreter for Scheme in Clojure" to "I am going to write a meta-circular
evaluator for Scheme in Clojure" to "This meta-circular stuff is nonsense ---
meta-circular Scheme evaluator" and so on, has been tremendously
rewarding. I'm no weight lifter, but I think this compares to lifting free
weights versus using weight machines. In school or at work people give some
definition to your work. Somewhere a line is drawn separating from what is to
be done and what is not to be done (and there was morning and there was evening
--- the first day). At Hackerschool you draw this line for yourself.
Second, working with people who are happy is true joy. Everyone is ready at all times to explain what they're up to with great enthusiasm no matter where you fall on the 10,000 hour journey to programming mastery. And here's something special: everyone understands that you too are enthusiastic about your work so no problems when you want to get back to it.
Third, relish the details. A detail isn't just some artifact of some piece of
software. It's something interesting to explore. Yes, understanding the
difference between python's list.append(x)
and list.insert(0,x)
is
interesting. No, it's not "good to know" (though it is that too), nor is it
just "useful." It is interesting. Fun! At Hackerschool, everyone seems to
feel this way. No one is going to say "So what?" I literally feel like a child
playing.
Fourth, you can understand all those things that you are interested in. Pairing with a few of the facilitators has driven this point home. Take a problem and let your personal sense of justice in understanding reign free. What I mean is: go through every single little detail until you have that drunken feeling of having understood everything about the problem. Do it just to feel that way. It's great.