How to teach your girlfriend programming?

How to teach your girlfriend programming?

[[146883]]

Ever since I started as a software developer a few years ago, I've always dreamed of having a girlfriend who I could talk to about my work. I wanted to talk to her about what I do. Not in a "yeah, I work in computers" kind of way, but in a really deep way. Like you would with a co-worker. Whenever I discovered something new that excited me, I wanted her to be the first person I'd tell, and who would understand it.

Back when I was a student, college to be specific, I used to say this to my friends. I expected everyone to think like me, but to my surprise, I was the only crazy person in that crazy geek group. They told me that they didn't need programmer girlfriends because they would go crazy. But I thought that was bullshit.

They just don't want to talk about it. What everyone really thinks is, is it possible to find a pretty, smart girl who is interested in programming and will be attracted to you, a socially awkward geek? What are the odds of that happening?

But man, let me tell you a secret: She doesn't need to know this stuff. Everything in life can be learned. Just because some people are more inclined to certain things doesn't mean others can't learn or understand them. We pride ourselves on our profession because we spend years mastering it. But let's be honest, a lot of things that take you a year to understand can be explained in 5 minutes if you know how.

Is pointer arithmetic really that hard, or do we think we've gotten better because we finally understand it? Is it hard to understand polymorphism? Are monads really that hard to understand, or are we approaching it from the wrong angle?

An IQ of 80 is enough.

If you choose the right metaphors, you can explain pointers, manual memory management, stack/heap allocation, garbage collection, and more in a few hours.

Here comes the question. Please explain "pointer", "manual memory management", "stack/heap allocation" and "garbage collection" to laymen in plain language.

Or is the algorithm hard? I bet you don't want someone to wake you up in the middle of the night and ask you to write a quick sort. But what if you have a few knives and want to teach your girlfriend how to sort them (by size, of course)? You might have to show her two or three times to convince her that the algorithm really works, even though the algorithm itself is ridiculously simple.

If you come across a problem that you still can't understand after a few hours, go to your girlfriend and explain it to her. Don't talk to a wall and stop the conversation when you realize what you're doing in the middle of your conversation. Try to explain it to her even if she doesn't understand technology at all. Once you find the right metaphor, it will be easy for her to understand.

Always remember that she needs to be willing to learn, you can't force your knowledge on her. The biggest obstacle here is to break the fear of "I will never understand it."

It's not hard, it just takes some time

About 6 months ago, my girlfriend was studying Political Science for her Masters. Prior to this, she really had no experience in technology.

One day she decided she wanted to learn some cool stuff in JavaScript and made some animations on a personal website I made for her. A week later I was teaching her Ruby on Rails. A few weeks later she was already making her own web apps. A few weeks later she realized she needed more low-level knowledge, so we started learning some basic technologies.

We started learning things like how computers work, how to allocate memory manually, the difference between the stack and the heap, how to do reference counting in Objective-C, how garbage collection works, functional programming (I mean Haskell), network protocols, etc. She even knew things that I didn't know a year ago.

Basically, I was able to pick and choose the important things from my knowledge and throw away the 99.5% of time I wasted trying to figure out what was most important, so that I could teach her only what she needed to know.

Is this enough to make someone a programmer? No. She still has to go through the hard parts and understand a lot of things, but after just 6 months she already knows more than most students who study software engineering in college.

You are a professional teacher

Being a professional developer means that you are also a professional teacher in a way, because our job forces us to constantly explain things to others. We have to stand in the reader's perspective to make our code readable. We have to explain what we did when it seems that what we did does not make sense. We have to teach interns and make them better.

At work, we do a lot of complicated things and make them look simple (hopefully some people like to do the opposite). One reason it takes so long to learn something is that you keep getting lost. You may have a teacher who explains things to you once in a while, but you only get to listen once a week.

On the other hand, if you are teaching someone you live with, she will have first-hand access to you and be able to get immediate answers to any questions she has.

Developers are great at Google because we're always lost. We're always searching for answers. But what happens to your productivity if you have someone in the same room who knows all the answers?

<<:  Summary of various sorting algorithms

>>:  Digium Open Source Real-Time Audio and Video Communications SDKs

Recommend

Is "Silicone-free Shampoo" worth buying? You will understand after reading this!

Recently, a certain brand has caused heated discu...

APP user growth: How to use data analysis to improve user growth?

How can we make our APP stand out among a large n...

Hawking passed away. How do brands use copywriting to commemorate his greatness?

When I was very young, I learned about the scient...

Producing 400 liters of milk a day? Why don’t we drink whale milk?

Note: The cover image is from Xinhua News Agency...

Community operation from 0 to 1500+, the 5 key words I summarized

Some people say that a community is a net woven b...

Why do high-end Internet giants fall in love with low-end wall painting?

Jingdong wall painting Taobao wall painting As a ...

Analysis of Tik Tok’s refined operation and promotion techniques!

The author of this article analyzes Douyin’s pers...