Jakub Arnold

How to Teach Your Girlfriend ProgrammingSep 23, 2013

Ever since I was a little software developer not so many years ago, I’ve dreamed of having a girl who I could talk to about the things I like. I wanted to talk to her about what I do. Not in a sense of yeah I do computer stuff, but in a real and deep way. The kind of conversation you would have with a coworker. I wanted my girl to be the person I go to whenever I find something new that excites me, and I wanted her to understand it.

Back when I was still in school days, university to be specific, I used to talk about this with my friends. I expected everyone to want the same as I did, but to my surprise I was the only crazy person in a group of already crazy geeks. Every one of them told me they don’t want a programmer girl, they said they would go crazy. But I call that bullshit.

It was just their fear talking. What’s really everyone thinking is that it is impossible to find a girl who would be good looking, intelligent, interested in programming, and above all else, interested in you, the socially awkward geek. What are the odds of getting all of that?

But let me tell you a secret brother, she doesn’t need to know all of this stuff. Everything in life can be learned. Some people might have predispositions for certain things, but that doesn’t mean other people can’t learn and understand them. We carry a great pride in what we do, because it took us many years to master the profession. But truth to be told, many of the things that took you a year to understand can be explained in 5 minutes if you know how.

Is pointer arithmetic really difficult, or are we just telling that to ourselves to boost our ego, because we finally understand how it works? Is understanding polymorphism difficult? Are monads really that hard to understand, or are we just looking at it from the wrong point of view?

A perspective is worth 80 IQ points.

You can explain pointers, manual memory management, stack & heap allocation, garbage collection and much more in just a couple of hours if you chose the right metaphors.

Or maybe algorithms are difficult? I bet you wouldn’t want someone to wake you up in the middle of the night and have you write a quicksort. But what if you had knives and wanted to teach your girl how to sort them (obviously by size)? You might have to do it two or three times for her to really believe you that it works, but the algorithm itself is stupidly simple.

If you have a problem that you don’t understand even after a few hours, go ahead and explain it to your girlfriend. I don’t mean the usual talk to a wall kind of thing, when you realize in the middle of the sentence what you wanted to do and abandon the conversation. Try to really explain it to her, even if she isn’t technical at all. It will be easy for her to understand once you find the right metaphor.

Just keep in mind that she has to be willing to learn these things, you can’t force your knowledge into her, she has to be the one who wants to learn. The biggest obstacle here I would say is breaking the I would never understand that fear.

It isn’t hard, it just takes time

About 6 months ago my girlfriend was studying political sciences for her masters degree. She didn’t really have any technical experience up until this point.

One day she decided she wants to learn some cool things in JavaScript to make some animations on her personal website that I made. A week later and I was teaching her Ruby on Rails. A couple of weeks after that she was already building her own web app. A couple more weeks after that she realized that she needs more in depth knowledge, so we started learning more basic things.

We’ve learned things like how computers work, how to manually allocate memory, differences between stack and heap allocation, how to do properly reference counting in Objective-C, how garbage collectors work, functional programming (yes I mean Haskell), networking protocols and much more. She even knows things that I didn’t know just a year ago.

Basically I’m able to take what I know, extract the important things, throw away the 99.5% of wasted time on figuring out what is important and just teach her what she needs to know.

Is this enough to make someone a programmer? No. She will have to go through the hard parts as well, figure a lot of things out, but she already knows more than most people who go study software engineering on a technical university, just after 6 months.

You are a professional teacher

Being a professional developer also means that you’re a professional teacher to some extent, since our job forces us to constantly explain things to other people. We have to put ourselves into the role of the reader and make our code understandable. We have to explain what we did when it doesn’t make sense, and we have to coach our interns on their path to greatness.

All we do in our jobs is take complicated things and make them simple (hopefully, some people like to do the exact opposite). One of the reasons why it takes so long to learn something is that you get lost all the time. You might have a professor who will occasionally explain something, but you still only have about one lecture per week.

On the other hand, if you’re teaching the person you live with, she’ll have unlimited access to you, the person who can answer any question, immediately.

Developers are so good at googling because we get lost all the time. We’re constantly looking for answers. But how productive would you be if you had someone with all the answers sitting in the same room?

Discuss this post on HackerNews

Want to hear about my upcoming book,
Haskell by Example?

Haskell by Example Book

Subscribe to receive updates and free content from the book. You'll also get a discount when the final version of the book is released.