recurs.es

talking to myself

Easy Things

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.