hacker-school-saturday-june-14th-2014

After five days of blah blah blah-gging, I am jonesing to write something more coherent. The checkin posts are raw and vulnerable for me: it can be uncomfortable to post ideas in progress, let alone snapshots of my learning processes that may divulge mistakes and naïveté. And yet, all my ideas are in progress in some sense. So, this practice is helping me lighten up a bit, and not take myself so seriously.


There has been discussion on the internal chat about the merits of pair programming, and, to my relief, some recognition that it is not always the best way to learn. While I don't want to use that knowledge as an excuse not to seek out pairing, I've been deeply enjoying working solo, and I guess I've been harbouring a bit of guilt about that. A large part of this desire to work on my own is that at home I get very little time to focus. I've been self-exploring in a very productive way here.

On the other hand, I pair-interviewed with Allison Kaptur refactoring some code of mine that I knew had obvious redundancies, but I wasn't sure how best to factor out. I learned more in 15 minutes working with Allison than I would normally have learned in weeks. I felt like I levelled up. Also, that little piece of code is so sweet and compact, that my husband promptly borrowed it into his own OS project. I'm very proud of it, even though it is only a 10-line function that does nothing particularly profound! (It is the open_with_unicode function in my recluse package. Here is how it looked when I first wrote it.) I'm proud of it because it is elegant and clear, and because of the feelings associated with achieving that elegance and clarity. I'm not sure I can articulate that feeling very well.

(Note: posting that diff with all its prior ugliness was hard for me! Posting feelings of pride toward an arguably trivial achievement was hard for me.)

The components that might have contributed to making that pairing such a great experience for me include:

  • I am clearly the less skilled programmer, and so the benefit was imbalanced in my favour: my boundaries were pushed, but Allison's were probably not.
  • The problem we were solving was one where the behaviour was already clearly defined, and all we had to do was make it do what it already did better.

I haven't yet experienced much pairing with another person at the same level of expertise as my own on a given thing. Nor have I paired much on design. I think these would have their own merits. The closest I've come to this is pair-learning Rust, which I've been doing with Zooko on our dates. We plan to implement red-black trees after we get through the tutorial.

But another kind of pairing I'd also like to do more is to take the role of the more experienced programmer. It might not help me much directly, although teaching does tend to bring our gaps into sharp, painful focus, and that's Good. But if I can do for someone else what Allison did for me, then that benefits the group as a whole, and thus me indirectly. It's like a win/win with mirrors facing each other so that the win-trail echoes off into infinity. Not only that, it has high total utility in terms of time. If someone is stuck on something, they could spend hours or even days banging their heads against it, and not find the right path. Asking someone in the know to donate 15 minutes to explain it saves the collective immensely.

I appreciate the willingness of people to ask questions and help each other here. I've been asked "What is X?" more here than I normally expect in other contexts, and I see people helping each other every day. I think that's because we are developing a feeling of safety that is reinforced by the friendly responses to such questions.


I had one revelation about the culture here last night, while talking to some fellow students who were expressing their gratitude toward the treating people like adults atmosphere. This prompted me to remember the following incident.

Friday night I had agreed to meet a friend for dinner, and so when it began to pour rain outside, I didn't have the choice to wait it out, without disrupting my plans. I was concerned about the contents of my backpack getting soaked, and so I asked Sonali: "Would it be okay if I took a garbage bag to put over my backpack in the rain?" Sonali did not respond with the language of a supervisor giving permission. She simply said "That sounds like a good idea." I felt entrusted and empowered to be responsible to the space in a way I never would have had she said "Sure, go ahead."