Start flapping…
People have this notion – if you want to be good at something, you should study
how to do that thing. This, in-and-of-itself is not so much ‘wrong’, as it is
itself misunderstood or misinterpreted. When I told my parents I was going to
study Math, my Dad scoffed at the thought. “What are you going to do for work,
Joe? How are you going to support a family?” Implicitly, I think, he was saying,
“It’s nice you like your airy-fairy mathematics, but you should do something
practical, like computer science, so you can get a job.”
Bullshit.
Mathematics has made me ten-times the programmer I would have ever been if I’d
studied Computer Science directly. When I got to school, I looked at the course
requirements for a CS degree, all I saw was tedium. I didn’t see anything that
would challenge me, anything I couldn’t learn on my own. I was already pretty
good at CS – certainly not great, but I understood the basics. I’d read the GoF
and DDD, I’d tried writing a few compilers, I’d messed around in Scheme and
tried to write some Python[1]. The courseload didn’t match my skill, and I sure
as shit wasn’t going to pay them to teach me nothing for two years while they
caught up.
Compare Math. Out of the gate, I jumped into Multivariable Calculus, I did
Linear Algebra and The next semester, Differential Equations.
Holy shit.
My brain couldn’t keep up, I couldn’t absorb the knowledge I needed fast enough.
It was like someone grabbed me and threw me off a cliff and screamed, “Start
flapping, asshole, it’s a long way down.” Towards the middle of my sophmore
year, I hit a stride with mathematics, but it never stopped being hard, it never
stopped making my brain hurt.
DIY
So what the hell does that have to do with making me a better hacker? Well, in
short, it made me a hacker period. When you’re falling down the side of an
intellectual cliff, the first thing you need to do is figure out where the
instructions are for the DIY parachute. So too, in studying math, it was a
frantic scramble to ply any advantage I could find – same with my classmates.
Some of my peers used the fact that they were organized to take copius notes to
preserve the knowledge they couldn’t otherwise absorb. Some used their social
abilities to tap the resources of others. Some – like me – made use of
technology, especially the internet, to glean the information from the ether.
Using the internet to learn is like holding your to a firehose.
But – that’s what made me good at things. I learned, in fact, not how to do
math. Indeed, that ability came for free with learning how to learn from the
internet. My professors, I realized, weren’t the ones with the ripest knowledge
to give, but rather, they were the ones who could be help me learn how to
delineate the intellectual chaff from the wheat. I did not need someone to teach
me Group Theory, I needed someone to tell me that, “Gallian’s book for that is
great, but here, try Hungerford, he’s a bit higher level, but the proof is more
clear his way.” Something that could never occur to me, something that isn’t
really “learning math” but more “learning how to math.”
Jim and Jane
Learning mathematics made me good at learning things, sure. Everyone has heard
that cliché more times than they care to count. Consider, however, what the
consequence of that is. Does learning how to learn mean that you are stuck
learning only about the thing you went to study? Of course not, I know how to
learn, therefore, I can learn anything. So then why is it that, oftentimes,
people who study Computer Science (ostensibly, in the process, learning how to
learn), continue to only really learn computer science (if they continue to
learn anything)? I cannot describe the number of people I know who studied CS,
got a Bachelors, when to work at some corporate waterfall company, and remain
there, churning out ten-penny code when they could be writing practical poetry
in another context, working for people who care about being craftspeople.
Now, while my knowledge of many people who coordinate with my claim is by no
means proof, it is an interesting sort of anecdote. It is reasonable to consider
why – certainly, one hypothesis is that it’s my fault. After all, I am one
thing they all must have in common (or else I wouldn’t be considering them)!
However, I have another hypothesis which I think is more likely. That those
people chose to study something that was not challenging, and thus, they never
learned how to learn.
Take, for instance, Jim. Jim is not his name, but it is his moniker for our
purposes. Jim studied CS at UMass, a certainly not terrible school. He learned
his GoF, he studied how to drive design based on the domain, he learned a little
Lisp and a little C and a little Java and a little bit of everything. He was a
fairly reasonable Computer Scientist.
Then he started to work writing C# at a company that didn’t have a great set of
standards, they didn’t have a passion for code-poetry, they didn’t feel like
craftspeople – they felt like code monkeys.
So whats Jim to do? Jim stagnated. He became a code monkey, he churned out his
requsite KLoCs and never wrote tests and fixed bugs and generally proceeded to
be a just another drop in the waterfall. Jim got stuck, Jim stopped learning.
Compare now, Jane. Jane was a classmate of mine who studied CS. She’d
never touched a computer (at least, inasmuch to program it) before. She started
her program with an old windows machine which she, “Was gonna put Linux on, once
[she] figure[d] out what Linux is.” She didn’t know about OOP, she’d never
touched Scheme, she had, seriously, no clue what she was getting into.
But Jane sat down in her first programming class, and studied her ass off to do
well. She learned mountains of material. She wrote code all day.
She also failed.
This served mostly to infuriate her. So when she took the class again, she
redoubled her efforts, she was in every day for office hours. Hacking away,
building her knowledge and her toolset. She was a permanent fixture in the CS
lounge. She was a permanent open IM window on my desktop. She had more questions
than Columbo, but that was because I had some answers, and she needed them.
Jane took what she needed.
Jane works for a Financial firm now as a Quant. She ended up picking up a double
major in Math and CS (focused on stats), and graduated top of her class. She’s
not a code monkey. She’s an innovator, she loves her job. She programs all the
time, she (finally) got Linux on her laptop.
The fact that Jane has a “better” job is not the moral, the “betterness” here is
merely a metric – I think that, Jane likes her job more than Jim. Jane talks
about her job, the challenges she faces, the problems she wrestles with. In much
the same way as when she was in school, she still is the girl who failed her
first class because it was hard, and who aced the rest of them because she
wasn’t one to back down.
Jim doesn’t care anymore. He works for a paycheck, not pride. He doesn’t talk
about the new problem he has to solve, there aren’t any. He writes a little
glue, surfs the net, writes a little more. There is no concern for quality –
it’s not like the project is going to go through anyway. It’ll just be another
cancelled plan from upper management. He’ll get reassigned.
Whats the moral here? The moral is that Jim studied something he knew, and so he
never needed to learn, and so he never had to learn how to learn. Jane, on the
other hand, had no clue going in, she chose a path that would challenge her, and
make her get creative in solving her own difficulties with CS.
It’s the challenge – or moreso, the desire to overcome adversity that drives
Jane. It’s lizardbrain the whole way down.
Creativity, Elegance, and Craftsmanship
My larger point is simple, it is less important to study something you ‘need’ to
know, and more important to study what is hard to learn. If you can read a
book, and understand it completely without having to really sit and think about
it, you should find a better book. This (for me) roughly boils down to
hacker-culture. Hacker-culture (or at least, my definition of it[2]) strives for
creativity in solutions, elegance in implementations, and craftsmanship
above all. Hacker’s aren’t made by taking the easy path, they aren’t found in
the Jim’s of the world – who study only what they know. Hacker’s are the
Jane’s, the people who challenge draw inspiration from fields which no one else
would think to combine. They’re the musicians-turned-mathematician, the
philosopher-hacker-kings, they’re the people who chart the edge of the world and
shout, “No dragons here. Keep sailing!”
Maybe you charge my view of these hacker-heroes is pure romance, if so, then I
am a romantic. I call them as I see them.
[1] The former of which I love; the latter of which I emphatically do not.
[2] A definition which is principally derived from the definitions found in the
Jargon File and similar.