How I did Hacker School: ignoring things I understand and doing the impossible
Hacker School is a 12 week workshop where you work on becoming a better programmer. But when you have 12 weeks of uninterrupted time to spend on whatever you want, what do you actually do? I wrote down what I worked on every day of Hacker School, but I always have trouble articulating advice about what to work on. So this isn’t advice, it’s what I did.
One huge part of the way I ended up approaching Hacker School was to ignore a ton of stuff that goes on there. For example! I find all these things kind of interesting:
- machine learning
- web development
- hardware projects
- games
- new programming languages
But I’d been working as a web developer / in machine learning for a couple of years, and I wasn’t scared by them. I don’t feel right now like learning more programming languages is going to make me a better programmer.
And there were tons of interesting-sounding workshops where Mary would live code a space invaders game in Javascript (!!!), or Zach would give an intermediate Clojure workshop, or people would work together on a fun hardware project. People were building neural networks, which looked fun!
I mostly did not go to these workshops. It turned out that I was interested in all those things, but more interested in learning:
- systems programming (linkers! strace!)
- networking (ARP!, writing a TCP stack!)
- how to write an operating system (why is my operating system being erased?!)
- security (what actually is a buffer overflow? how do I make one?)
- how gzip works
- how to write a shell
- how floating point numbers work! Stefan Karpinski gave an amazing talk about this.
I wanted to work on things that seemed impossible to me, and writing an operating system seemed impossible. I didn’t know anything about operating systems. This was amazing.
This meant sometimes saying no to requests to pair on things that weren’t on my roadmap, even if they seemed super interesting! I also learned that if I wanted something to exist, I could just make it.
I ran a kernel development workshop for a while in my first two weeks. Jari and Pierre and Brian came, and they answered “what is a kernel? what are its responsibilities?”. This was hugely helpful to me, and I learned a ton of the basics of kernel programming. Nobody I talked to had built an operating system from scratch, so I learned how! Filippo answered a lot of my security questions and helped when I was confused about assembly. Daphne was working on a shell and I paired with her and learned a ton.
People at Hacker School know an amazing amount of stuff. There is so much to learn from them.
So I don’t have advice, but for me one some the most important things to remember about Hacker School were that other people have different interests than me, and that’s okay, and I can make Hacker School what I want it to be.