61

My wife studied basic-to-midlevel (by school standards) programming in upper secondary school, but then she didn't go further than that, and slowly lost the grip of it and didn't think about it for years. A few months after we started dating, she said she would like me to teach her (I'm a professional developer), and I was happy to say yes.

A bit of background: I have a Master's Degree in Electronic Engineering, and I'm used to studying and learning things in a variety of fields. I'm far from what you would call a workaholic ("study-holic", maybe?), as my will is not strong enough to make me study and work to the point of fatigue; but I've always made up for it with the natural gift of curiosity. If something is interesting or intrigues me, then I get absorbed into it, and I won't stop it working on it (or thinking about it) until I'm satisfied with my results.

On the other hand, my wife pretty much stopped studying after upper secondary school. She started university, then switched to another one the next year, but dropped out of both. She had a very unsupportive boyfriend at the time, who kept telling her that she wouldn't make it and that it wasn't important anyway (he also had some very retrograde ideas about the role of women in the family), which, together with similar discouragement from some of her school teachers, led her to serious confidence issues. I worked hard to help her overcome it in the four years we've been together, and the results definitely show up, but she's not what you would call a strong and confident woman yet. She definitely has great qualities, but she can't fully accept the idea that "she can do it".

Further background info: I've always been a quick learner, and I've often been the one who "tutored" his schoolmates when studying together. This went on through university, even officially for a short time (I've been a teacher's assistant for a course after getting my bachelor), and when I started working (never in the academy) I've been occasionally tutoring university students. I've had decent-to-great results with my "pupils"; however, I've never received formal training in education, and the only reason I would say I'm a teacher (which I'm really not) is because I "taught people" in the past.

Now to the main issue. Our home-made programming course isn't really going great. My wife definitely made progress, and managed to grasp fairly advanced concepts, but she has a very hard time putting them into practice. She is weak even in basic code-writing skills, which makes it ultimately pointless that she understands more advanced concepts. What bugs me is that what she easily accomplishes today, she may completely screw up tomorrow, for no apparent reasons. Moreover, she is not used any more to studying (we're both 34 and we've been out of school/university for more then ten years), and when difficulty arises her lack of self-confidence shows up and drives her into a downward spiral.

I realized more than once that I was making mistakes in my teaching. I'm a fairly advanced developer and I always try to learn new techniques, which means I'm used to overcoming learning curves; however, this also means that I had become fairly disconnected from the reality of a beginner, who may find it difficult to work with concepts that I would call extremely basic. I've done my best to "reset" a few times, to start back from the basics, to not give anything for granted, and to let her take her time to take concepts in.

However, things are not really going as expected. For example, we've had good "lessons" in the last two weeks, she seemed to really move forward, I decided not to advance and to suggest exercises that are a bit of "more of the same", in order to help her build confidence. Last night, she got stuck, so I guided her for a short while, but she quickly lost it, said she wasn't understanding, she kept interrupting my explanations and she concluded "you could just write it yourself then".

My biggest problem is that I don't know how to handle such a situation. She kind of panics, she reverts back to her "I can't understand" self-blaming and self-despising self, which in turn makes me nervous and gradually angrier, to the point where I lose it too and we end up fighting. I'm aware it's a personal issue for me: I've tutored both guys and girls that occasionally went down that same road, but I always stopped that before it reached a critical point. I can't manage to do that with my wife: I take it personally, both because she can't stop panicking and let her mind take control again, and because she isn't listening to me (or, to put it another way, I am ineffective in helping her).

When that happens, especially when it's something like "you did it yesterday, why you can't do it now?", I end up saying that she's not being committed, that maybe that night is not a good night for her, that she should stop and pick it up when she feels more willing to put efforts into it; she replies that I'm being harsh, that I was teaching badly that night, and that I've been scolding her too much "for every mistake".

To clarify: I love her a lot, she loves me a lot: we fight, but we never question our feelings for each other. I know this sounds cliché, but I get angry because I love her, and I only wish to see her happy with herself, to show her she can do way more than she thinks.

So, to sum a very long post (sorry about that, but I thought the situation needed thorough explaining): what can I do to handle a situation where she apparently refuses to listen while I try to teach her and help her?

Please, don't suggest things like "you should be more patient", "she should be more committed". We know it's true: we're trying to, but it's not working. I would greatly appreciate actionable advice, like "try to do this" or "avoid doing that". Thank you for your understanding.

UPDATE

Many thanks to all of you. I got a lot of helpful advice; my wife and I haven't had another lesson yet, but we talked about it and we're willing to pick it up again next week with new energy and better understanding. You gave me great tips in many different regards: teaching in general, teaching programming in particular, and a bit of much-needed psychology (and reality checks, too). I'll do my best to put it all to good use.

I'm not sure how to handle the SE side of this question, though. I probably upvoted a dozen answers, because they're insightful and helpful, but I cannot pick one for the coveted green tick. I'll be in meta to check out what to do :)

  • 1
    Related – JAD Mar 7 '18 at 9:30
  • 36
    Is she actually interested and motivated in learning programming? Or is she only doing it because you insisted she should? What are her goals? Is she sure this is the career path she wants, or is she considering other options? – peufeu Mar 7 '18 at 10:56
  • 5
    @AndreiROM Why do people work out, if they're never going to climb a mountain? :) It's not that she's not going to "use" it. She doesn't feel like she will be ever able to make a career out of it, but she wants to learn. She has projects. Besides, she enjoyed programming years ago, and she wants to pick it up again. – Simone Mar 7 '18 at 14:14
  • 8
    Well, why do you work out? If you're motivated to get in shape, going to the gym is fun. If you're being dragged by your friend, and you're not committed then it's a drag, and a lot of what you're describing happens. To me it doesn't sound like your wife really has a good motivation to learn, and so why keep this up and upset each other if there are no clearly defined goals? What sort of projects does she have on her hands? Is she learning things that apply directly to those projects, or are simply tangentially related? – AndreiROM Mar 7 '18 at 14:17
  • 23
    Toooooo much background information. Focus on the problem at hand. – paparazzo Mar 7 '18 at 19:26

19 Answers 19

60

You're forgetting what made you love programming in the first place.

(hint: it wasn't "getting yelled at").

Learning cannot happen without both wanting and ability. You must admit there's a certain wonderment at how the things worked and how you could have so much effect with just a few commands (letting the computer iterate instead of you). That wonderment is essential.

You may also be forgetting the speed at which you learned. Did you learn that fast? Don't count in months, count in hours-on-task. If you're tutoring her for 30 minutes a day, you can't expect her to absorb in that 30-minute window concepts that took you a week to ruminate and fully understand.

What's her core motivation for wanting to learn?

Very often, the default reason is "to spend time with you". It's about human bonding, and this motivation often blindsides geeks. (if you want to see somebody who Does Not Get It, watch Doc Martin.) That reason aside...

Obviously, yelling and fighting totally defeats that value. I hope we can establish that any sort of tension utterly destroys all inspiration, and so any further friction is simply out of the question.

A programmer with no reason to program will never engage. The missing piece here is a reason to do it:

  • wanting to set up "scenes" in your smart-lighting system (Insteon, WeMo etc.)
  • wanting to do macros in MMO gaming (e.g. LUA in World of Warcraft)
  • wanting to play with consumer-tier robotics
  • wanting software-driven fashion with Arduino, Raspberry Pi, etc.

Part of the strategy here may be to introduce the reasons into the home. So if she's an MMO gamer, use that. If you've been wobbling about going with smart-home gadgets, choose one with programming opportunities. If you've thought about mutually playing with tech gadgets, go for it.

You super, super suck at teaching

Or maybe not, but I'm saying that not to be mean, but to re-frame your relationship with the task of teaching. Why are you yelling? Because it's frustrating. Why is it frustrating? Because it feels like failing. Why does it feel like failing? Because you feel like you ought to be a good teacher, and it's not working.

Get over that. This is your weak point. (maybe it's only your weak point with her - and her lack of confidence is a factor.) And I don't mean to undercut your own confidence in teaching, but I do want you to pause constantly to think about the approach you are taking.

Treat teaching itself as an actual craft that is a new craft for you. And explore teaching with the same innocence and wonderment you originally brought to programming. It's not a failure when they don't get it, it's a victory when they do.

44

Self-taught programmer here.

From the sounds of things you're both getting frustrated as you're at different points in your coding career. Also, from the phrases you've wrote like:

you did it yesterday, why you can't do it now?

It sounds like your language is more accusatory than helpful.

You understand how to implement most things and she does not, so (from experience) it's easy to get frustrated with people at the early stage not understanding what are simple tasks for us.

Not saying your wife isn't partially to blame for the argument (as you probably bounce off of each other) but it only takes one person to try to diffuse one.

Temperament

Here's a few things I'd try in order to stop an argument from escalating.

  • Take a step back when you feel yourself getting angry, remember where she is in her career and try not to say what's on your mind.
  • Remember times when you struggled with coding tasks and how you overcame them, do any apply here? Perhaps try telling her this story.
  • If things get really heated, just saying something like "I think things are getting heated, let's take five and come back to this". Then actually do take a five minute break and come back to it. Even when doing this with work it helps you come back to the task with a clear mind and a new outlook most of the time.
  • If none of this is helping, call it quits for the night. Just make sure to tell your wife in advance that if things get too heated, you'd like to avoid an argument by stopping.

Teaching method

From a comment you've made it sounds like this is so she can accomplish a task as-well as improve at coding:

She has a long-ish-term goal to revamp the website of her mother's shop

I'd try and do the tutoring less like a teacher-student relationship and more like you're consulting for her.

I've learned coding in several languages by myself and the best way to learn was on the job via practical application. Reading through theory is quite easy but implementing code cleanly (and knowing when to) can only be gained via experience..

Let her build her applications and programs on her own, then afterwards let her explain how the code works and give her pointers on how she could optimize/improve what she has done. Give here a basic explanation and where to look but let her do it on her own.

Also be handy to assist with certain aspects of code, do things she finds difficult in a rough fashion then let her tidy it up and integrate it.

This approach might work better as you're not in close proximity to each other but you're still there to help and guide her through the process.

It also defines an end goal for these concepts which helps her visualize it in an application that makes sense to her.

  • 1
    I'm awful at diffusing arguments :) But I have to try the best I can. As to practical advice, I'm puzzled by her inconsistence with the basics. She might correctly design a polymorphic class hierarchy right now, and then get stuck with writing a while loop tomorrow. – Simone Mar 7 '18 at 14:19
  • 2
    @simone it's probably just that she has a more theoretical brain then practical. Being able to write something down on paper is far easier than it is to actually implement it (from personal experience) – Connor Mar 7 '18 at 14:42
18

Preamble:

You, my friend, are a very brave man. In trying to teach your wife how to program, you are taking on two roles. One as a husband, which is an equal partner relationship. The other as a teacher, which is an unequal mentor-pupil relationship.

Trying to take on both relationships at once complicates them greatly. For starters, your wife is not going to like feeling inferior to you when you are teaching her. This is normal in a mentor-pupil relationship, but not healthy at all in a marriage relationship. This is most likely a major underlying (subconscious) cause to her getting angry with you when things are not going well, especially when combined with her other insecurities that you describe.

I assume you realize that it is natural to have negative feelings (such as frustration) when your progress towards a goal is being blocked. In most cases (excluding things like PTSD and Clinical depression) it's not the negative feelings that are the problem, it's our behavior and how we choose to deal with those feelings.

As a developer who went back to community school at age 28 to learn to program, and as I'm sure you can attest to as well, getting stumped by a bug or some other problem I can't figure out is frustrating. And I express my frustration, frequently out loud.

The key to expressing that frustration without damaging your relationship is to never direct your frustration at the other person. This means that, when you are feeling frustrated, no complaining about the other person. In fact, when expressing frustration you probably shouldn't mention the other person at all.

Answer:

You ask:

what can I do to handle a situation where she apparently refuses to listen while I try to teach her and help her?

  1. Try to avoid the escalating feelings. Pause before talking to take a deep breath. Let your muscles relax, this will help keep you calm. When you feel yourself starting to use a more "passionate" (loud, angry, frustrated) tone, lower your void instead.

  2. No accusations. It puts people on the defensive, and when people are defensive performance drops. This is true when she accuses (directly or implied) you of not being a good or patient teacher.

  3. Express your confidence in her. So instead of saying "this isn't that hard" or "it's simple", you could say "You can do it love" or "I know you can figure this out, I've seen you figure out hard things before". Having someone who truly believes in you is way more powerful then I think most of us realize.

  4. Compliment her when you're not doing programming. Make sure the compliments are genuine and specific, i.e. "Your dresser is always so neat and organized. I like that about you". Your goal with this one is to help her gain confidence in herself in general.

  5. Jesus said "cast not your pearls before swine, lest they turn again and rend you" (paraphrased). I'm not calling names here, I've certainly been the one rejecting pearls of wisdom before. When either of you get to that angry place, just stop teaching. Say something like "I love you and I don't want to have these hard feelings between us. Let's take a break for an hour (or the day), and try again then."

Good luck!

13

I can very closely relate to you. I've learned programming by myself, out of passion, and learned a lot more a lot quicker than most courses would handle. That's not bragging, it's just, as you put it, me being fully immersed in it, letting myself get lost in every new concept I picked up. I have, however, slowly come to realize that is not the case for everyone. While I've never tutored in programming, I have done so for a couple other subjects, though it was short-lived. It could be a bit frustrating at times because, obviously, not everyone had the background that I had, or the knowledge I had, or even the same learning abilities. Some people learn differently, and that's just how it goes. Some are really good at going through long books, some learn better by trying and failing, and some by poking at examples.

Overall, I think you could try changing your teaching method/approach.

Personally, I advise for the "experimental" approach first (in case you weren't trying it already). Give her a concept - or set of concepts - and tell her the basics of it. For instance:

This is a for loop. It runs this block of code as many times as you define.

But from there, try to cement the new knowledge with letting her tell you what she thinks can be done with the new knowledge. In fact, if you have some of her previous "homeworks" saved, it might be even better to revise them, and perhaps find a new way to improve it or implement something in it, such that it includes the newly-learned skill. Let her do some "outside-the-box" thinking, guiding her with anything she needs and still instructing her, but mostly letting her have a play, hands-on. Instead of asking her:

Do you remember how to write the syntax for this particular for loop case?

Try asking her:

What do you think can be done with a for loop? In what scenarios do you think it'd be beneficial?

If she can't think of many scenarios, do think up some of your own, but don't tell her. Instead, poke around them and see if she can assimilate the newly-learned concept on her own. This is a personal opinion, but I find learning concepts much more important than learning rules or applications for a concept. Suggest that she thinks up some approach to a problem you came up with. You don't have to tell her to use the newly-taught concept either. If she comes up with a different approach, don't reprimand her for it. Instead, congratulate her on assimilating that concept, while still pushing the new one:

That's actually an interesting and applicable approach! But don't you think it could have been achieved differently? Maybe there's an easier way to print numbers 1 through 50 that doesn't require 50 "print" lines of code? What if we had a way to count numbers like that, step by step, while still executing the same type of code?

If she goes the usual "I can't do it" or "I don't know" way, don't try pushing it. Instead, simplify it further, preferably comparing to a previously-learned concept. Giving practical examples also help. I tutored a kid on some basic algebra, where I had to compare it constantly to regular calculations before introducing the unknown variables. When he claimed it was too hard to understand, I applied practical, real life-based examples where it is used, and tried helping him reach that approach.

If those approaches don't work, you can try others such as an exercise-based one, where the repetition cements the knowledge, or a book-based one, where the reading and re-reading helps her understand the concept. You can try some more visual examples, where you can - even literally - draw her some examples of the concept in practice. The key here is that your approach doesn't seem to be working, so exploring other venues might be a change for good.


Ultimately, the above is more of a practical approach than an interpersonal approach. Time to get back on track: you need to have a talk to her. Don't do it while teaching, immediately before, or after it. Pick a time where both of you are calm and can sit down to discuss. Include her in your teaching methods: you're not an institution with rules and regulations, so you can let her input define the direction you go. Make sure to clarify that you want to help her learn in an easier and more practical/applicable manner, but you find it currently unproductive:

I feel like my current approach to programming is not getting the best of you when it comes to learning the concepts. I want to help you learn better, but I don't know how to. What would you like me to do to improve our classes?

By telling her you want her input on the teaching methods, you're also letting her know that you care about making her as comfortable as possible to learn. It's worth noting that this approach may or may not give her the impression that you don't think she's putting enough effort or that she's being dumbed down, so a better wording might be useful. Highlighting the issue and asking for alternatives can also be welcome:

I tried [teaching method], but it ends up with us fighting. How do you think we can change it so that it's more comfortable for us?

Again, wording can use some work, but the core idea is involving her in your problem. Let her know that you're also concerned about her well-being and would like her help improve the situation for the two of you. Emphasize on her comfort in learning, not in her struggles: you want to make her feel at ease with learning a hard-to-grasp concept when she's already determined it's her fault, so shifting the "blame" to the teaching method, if done right, can help her feel more confident. This is not a guarantee, however. She might still find herself insecure, but at the end of the day, it's your job as a couple, not as individuals, to work together through finding a way to make both parts happy - or, at the very least, a fair compromise.

  • We've already tried discussing the method together. Maybe we couldn't stick to what we said. I'll try to get that discussion started again. – Simone Mar 7 '18 at 14:21
  • This answer from @HugoBDesigner reminded me of this blog post (about teaching math) skellmeyer.blogspot.com/2018/02/how-to-teach-math.html?m=1 maybe that will help in all this, good luck. – qneill Mar 8 '18 at 17:56
8

I tried to tutor my partner at programming last summer too. It didn't go well...until maybe the last month of tutoring. Teaching someone you are too close to is very difficult, as the intimacy works against you: they don't pay for the lessons, they don't feel obliged to listen to everything you say as there is no formality in the situation, they can get distracted by anything really - including you.

What helped me was that the lessons HAD to be done. My partner HAD to learn these stuff, because of the exams that took place on September. Does your girlfriend still needs/wants to take these lessons? Or is it just you insisting on proving her that she can do it? If the latter is the case then you'd better give up and spend your time together in more constructive ways. If she wants to continue though, you could try a couple of methods I used myself.

  1. Make a better plan of when the lessons take place. Make them less often/durable if the current plan is tiring for her. Set very specific days/hours. It adds formality and gives her time to get prepared (e.g. reading her notes, see point 3 or doing her homework).

  2. Reward her. Don't make the lesson a negative experience. Don't push her if she is already tired - teach something easy instead. Leave the difficult ones for when she's hyped-up. Congratulate her when she does something right and don't be strict when she doesn't.

  3. Ask her frequently if she has understood or make questions to check whether she understood the full concept of what you just taught her. She may have griped most of it, but details matter. Tell her to take notes in order to be able to remember the meaning of most of it next time. It's natural for her to not be able to absorb/understand/remember everything she is taught. She is a newbie.

  4. If she is reluctant to write code, just read her exactly what to write. She will gain more confidence just by writing and reading code and eventually start writing by herself.

  5. Don't help her with her 'homework'. You will revise and correct her programms in the next lesson. This way she will try harder by herself. Don't make a scene if there are mistakes though.

Keep in mind that if this continues to make you fight over it maybe it's not worth it. You should stop taking it personally - it's hardly about you anyway. You could instead encourage her to watch/read tutorials in the internet (my partner currently does this and it is very successful - they are way more explanatory than me).

6

As a professionally educated software developer, I suggest you rely on materials produced by professionals to instruct your wife.

As an experienced amateur, you should investigate the material first. This approach has four fundamental purposes

  • You won't have to create the structure for her. You are not a professional at this.

  • You will learn the material first so that you can bring it to her as a tutor instead of a teacher, which seems to be more in-line with your experience and comfort level.

  • You will be able to move through the material faster than she can, so you will be able to filter out noise in the materials that is inconsistent with her goals and focus her efforts on productive work.

  • You will become a better developer in the process, which should feedback and make you a better tutor for your wife.

You likely also would benefit from investigating the concept of Code Katas.

As I mentioned before, I'm a professional developer. I do this all day every day and if my wife approached me with a request to teach her, I would buy her a PluralSight subscription then I would make myself available to discuss any concepts she wanted to delve further into.

6

I would like to contribute a different perspective.

No. NO. NO ! For the love of God, don't be her teacher. You are her partner and her lover. Focus on being a good partner, on being the man that you are. You CANNOT be both a partner and a teacher. It is creating stress in your relationship, as is obvious in your answer.

She clearly has some motivation and some skills. Suggest she takes a course, online or at the local college. Help her with choosing a course (but the final choice must be hers), drive her there, support her with homework, accept her decision if she decides to drop it or change to another course etc.

Keep the time that you spent with her teaching her, and use it for something else that is meaningful to the two of you and doesn't lead to so many arguments.

Source: Partner and I are experts in very different fields and learn in very different ways. We've tried teaching each other, didn't go well, caused stress etc. Our agreement now is that we only offer help when the other person asks for it - and the person asking for help has to be in full control of how much help is given, what time, when to stop etc.

  • Nah, she already taught me how to make cookies, now I have to teach her something in return :D Jokes aside, I see your point. Both of us really love learning from each other (we seriously did learn several things either together or from each other, although nothing as big as "programming"), and it looks like we fight then it grows back on us after a night's sleep. Thank you for your perspective: I appreciate it, and I see it's sound, and I will keep your advice in mind, but it's not the route we're probably going to take now. – Simone Mar 8 '18 at 13:27
5

If she has the basics: Teach her to help herself.

(I'm developing an arduino thing right now so my examples will be arduino realted)

What I mean by this is: show her how to "google" the answers to things. Introduce her to SE, sit with her and google a question. For example, if she wants to save something to an arduino, tell her learning how the EEPROM works should help. Then initially, sit with her and guide her on her search for the information. Search up "EEPROM, save, arduino". Point out the "official" sites that come up - give a brief description of other common sites that return results. Read through one with her (maybe someone asked a question on a forum) - if it leads to more questions or has useful links - open those up in another tab.

Prompt her but don't dictate or guide her. Be there to answer questions but don't hover, etc. If she has the basics (code structure, understanding of basic/common syntax, etc), then she may not need anymore lessons. It may be time for her to dive right into useful projects that she is interested in.

If she has trouble figuring out the "standard" code used to do something (for example saving something to an EEPROM or displaying text on an OLED screen), show her where an example can be found (if handy) and how to run, observe, modify and test it.

I'm not sure where she is in the learning process but also ensure that you teach her pseudocode.

If she is struggling to remember basics like commas at the end of lines, make a checklist for her to check when things don't compile or run properly.

Work to empower her instead of her needing to rely on your lessons. Maybe this also means getting her some books, buying a Udemy course (they ALWAYS seem to have some sale on) or hooking her up with a Youtube tutorial session.

Also, the phrase and attitude of "you did it yesterday, why can't you do it today" is demoralizing and unhelpful. I sometimes (often?) forget what I was doing yesterday. Code can slip through your fingers so easily. YOU may remember but you have been doing it for years. For her these are tenuous new concepts - difficult to grasp and quick to fade.

To answer your bolded question at the bottom about what to do when she "refuses to listen": Stop. Just stop. Its likely she is not "refusing to listen" but is frustrated that she cannot understand. As soon as it looks as if it will hit that level of frustration (but before it does!) - STOP. Change the topic, end the lesson, go snuggle on the couch, just do something different. Frustrated people learn poorly if at all. Maybe even discuss this with her at a different time when you are both calm:

"I noticed that sometimes when I'm teaching you, you can get frustrated and I know that being frustrated makes it more difficult to focus and understand new concepts. I'm going to start changing the topic when I notice you getting frustrated. We can revisit that topic later and I'll try to have a different way to explain it then. What do you think of that approach?"

Again though, if she has the basics - sit back and let her do a project. She won't know how to do it all right away, and thats okay. Give her the tools she needs ("you know how to do x, y and z; You probably want to look up a, b, and c. Let me know when you need g and h and I'll help you out there as there are some tricks you should know.") and step back to help only when she has questions.

4

I'm also a person who gets panicky when I can't understand something. Oddly it doesn't affect me in all spheres, but it certainly affects me with computers, and particularly when it feels to me as though the person trying to teach me just doesn't understand what it is that I don't understand. Is this sounding familiar?

Often I suggest in my answers that you try to put yourself in the other person's shoes, but I think that might be difficult for you if you have never had any difficultly with understanding new things. But it is worth thinking about.

Are there any subjects or aspects of life that your wife is hands-down better at than you? Is she more at ease in company, or better at map-reading... anything that she is good at that doesn't click with you? If there is, try to imagine how you might feel if you were having 'lessons' in this night after night and your wife was explaining it in ways that went over your head until you ended up fighting. Would the inevitability of your lack of understanding descending into a fight make you feel relaxed and comfortable about learning, or no?

You have said that you don't want to be told to 'be more patient' and I'll take that as you understanding that already, rather than thinking impatience is helping.

What may help is for this to be more of a two-way process. You can't just pour information into someone and have understanding come along as part of the package. For some people that might work, (yay! Lucky them). For most of us the understanding part takes longer to take root and to grow.

Nothing makes a fragile/tenuous understanding fall apart quicker than stress. Knowing that failing to understand will cause a fight is a major stressor.

So consider sitting down with your wife and working together on setting out some groundrules for the teaching, which are aimed at making it less stressful for both of you. Things to consider may include:

  • Break it down. When something has become as overwhelming as this now apparently is for your wife, that scale of what you are expected to achieve can be utterly daunting. Together, work out bite-sized goals and draw up a timetable. Listen to your wife's input to this and don't try to persuade her that things she thinks will take a long time should be quicker. it's her learning and there is no point in trying to make it be like yours. On the timetable, make generous time allowances, reaching a goal early is much more confidence boosting than reaching it on time or late.
  • Keep sessions short. Plan start and finish times for the sessions and stick to that. Set a timer. Don't be tempted to keep pushing on because things are going well, or even because they aren't. When the timer pings stop being teacher and pupil and go back to being husband and wife. if your wife wants to carry on working, that's fine, but that is her study time, not your teaching time.
  • Take turns talking and listening. When your wife doesn't understand something, rather than repeat in the same terms explain again in a different way. But don't keep bashing away at it if you haven't managed to explain in a way that makes sense to her. After a couple of tries, sit back and ask her to explain her understanding, even if that means backing up a couple of steps to where you had last successfully made yourself clear. Listen to her logic all the way through rather than interrupting at the point you see she goes wrong. Get the whole picture, then you can say something like, 'Ah, I see where we've parted company on that now' rather than interrupting her flow to tell her 'no, you are wrong'.
  • In fact, make a pact to minimise interrupting each other. I'd allow her more leeway on that than you, if you are building a tower of explanation when she hasn't got the foundations sorted, neither of you benefit, but if you aim to keep your bouts of explanation shorter, pausing to check that she's still with you and planning those breaks in your own flow, she is less likely to need to interrupt.

You have already identified that you react differently to teaching your wife than you do teaching others, so it makes sense that you need to tailor your teaching style to reflect that.

  • 2
    Very valuable advice. We already tried a couple of your suggestions, but we didn't really stick to them. Consistency is probably a key factor: I probably should take responsibility in sticking to the plan even when she doesn't. Thank you a lot. – Simone Mar 7 '18 at 13:18
3

Respect, patience, and motivation

The fact that you two are in couple means you do not have the same approach to respect than you would have with a stranger, you two are already into each other's comfort zone and "taken for granted". Why am I pointing this out? Because With a person you don't personally know (a normal teacher for example), you usually remain calm even when irritated and it doesn't burst out into a fight.

Try to stimulate her as well, show her really cool programs/projects to keep her motivated to do the same and push her to learn how to develop.

Learning curve

She may NOT be as fast as a learner as you are, and you have to put yourself as a newbie all over again, the fact that you could circumvent the regular learning curve phase means that you have a clear disadvantage in teaching here like you mentioned.

Practice

She may need more basic practice, give her simple basic exercises to do, how to iterate through a loop, through a list, the most basic concepts, make her repeat them for like an entire week if needed so it becomes solid in her head, and if she needs it, help her out. I remember having to practice a lot more than a normal person would, it's just how some people are.

One will only need to create a for loop once to understand it, while others may need to do it 10 times in a different manner to completely grasp it. Learning to program and code is slow and may take years to get good at, make sure you explain her that patience is KEY, you don't just "Become a Machine Learning Data Scientist with this discounted 20h course", it's just not possible or feasable. There are so many underlying concepts and things to graps before becoming a correct software developper.

Goals and autonomy

It is important that she knows exactly what her goal is, for example, tell her you want her to do one precise thing or exercise while still supervising her more as a "manager" than a teacher :

I want you to iterate through a list of Strings, and print to the screen anything that is equal to "foobar".

If you need help -> check out StackOverflow or w3school or Quroa any other tutorial Q&A website.

If you don't find anything, come to me and I'll try to explain you in details

This might help her pinpoint how to do the things she's asked/she needs.

Teach her to also be autonomous, and do not make her rely on you too much for learning, remind her that there are sites like StackOverflow or StackExchange::SoftwareEngineering that provide many answers to basically anything and also guidance to the best practices.

The goal is not to leave her in her own autonomous teaching bubble and become another self-learner "you", but rather to thoroughly supervise and manage her through every basic step of the language she is trying to learn. Do weekly quizzes as well, they might be a good way to see her progression and what needs to be more thoroughly practiced.

3

It sounds like you're doing a decent job of teaching theory and higher level concepts, but if she's struggling to put it into practice perhaps it's time to take a break from that.

Find something that she's interested in, and let her build it. Perhaps it's a simple tool she can use or something related to a hobby. Rather than trying to explain to her how a loop works in an abstract way, allow her to run into a real problem in which a loop is the answer. It sounds simple, but this will make a massive difference in her ability to understand these concepts.

This should also allow her to gain some confidence and cultivate passion by creating something herself that did not exist before. It's important that you give her plenty of space and time during this phase, helping out only with her specific questions. Keep in mind that it takes most of us years to become even decent software engineers. Don't force her to think about other things that you will inevitably notice in her code, it's not helpful at this point.

As time goes by, you should be able to add in some review sessions where you can dig into more advanced topics and show her some engineering concepts that can make her problems easier. The key difference here, again, is that she can see how these concepts apply to real problems that she has encountered.

When you do begin to review her code, take care to only bring up one or two concepts at a time. Don't attempt to tackle every issue you find in a single code review as it will overwhelm her.

2

Give yourself an image of her that you can love or have compassion for. Maybe her as a small girl with scraped knees, crying. Whatever works for you. The picture should make you want to help her and be there for her, hug her for her sake. The image should also be strong enough so you stop being with yourself. Because that's what you do when you take stuff personally. And women are amazing at detecting a lack of presence.

When she says: I can't, she's trying to justify her fear, uncertainty and overwhelm. Last line of defense before the reactor starts melting. Because, if she can't, she doesn't have a say in the matter and therefore doesn't need to feel as inadequate. It's untrue, but "I can't" is easier than "I don't". Feelings usually don't care about reality.

On the other hand, if fear takes over, "I can't" may very well feel very real to her. The fear has to go before trying to cram more knowledge into her.

It's about the two deepest psychological fears: "I'm not enough" and as a consequence "I won't be loved"

So, start training. About 5 minutes a day, imagine her pulling off her defense mechanism and see her as the vulnerable hurt lovable woman. Train the idea that it has nothing, really nothing to do with you, it's just her hurt. And then imagine yourself doing the right thing. No blaming, no judging, just being there for her. In such moments, she needs your love and full presence much more than your coding skills, because when she feels uncertain, the topic is irrelevant and not the solution.

Not what happens decides whether you take it personally but how you interpret it. Training to meaningfully reframe the situation before it happens is the key to being able to do the right thing when usually you'd do the thing that feels right: taking it personally, feeling unable to help her, being in total reaction, etc. I call it autopilot. Reaction without sound strategy.

"It usually takes me more than three weeks to prepare a good impromptu speech." Mark Twain

Same concept.

It's all about emotional support. When she gets uncertain, you need to stop thinking of yourself as a tutor and start being trustworthy, dependable 100% partner.

As soon as the downward spiral even hints of showing up, you need to switch focus. Check thoroughly for anything that might make her feel less certain or less significant. Uncertainty is poison. Scale goes from 0 to 10 and she's close to 0. In such moments, she runs out of confidence juice. The brain hates that. Correcting her, making her try again when she feels she "can't", that'll all have to wait a bit.

After all, the coding skills should be a side benefit. What she really needs to learn and train is to trust herself again. Certainty is trainable like a muscle.

Every week get a few hours worth of practical psychology for a while. Books, videos. Then train what makes sense, more importantly, train what works. Women have different approaches than men. It's inbuilt and it's fine but you need to learn to play by the rules. The rules of her brain. And they don't teach those rules in school.

Be careful that you pursue the right goal.

Side note: How many times per hour does your teaching make people laugh?

  • 1
    I'm curious as to your side note. – Simone Mar 7 '18 at 17:23
  • 1
    @Simone Laughter keeps the mind open. I used to cram quite a bit of knowledge into teenager heads just by making sure frustration cannot build up. It's also a great pattern interrupt if done right: Check this video and ignore the burping lesson: youtube.com/watch?v=71DpDnZKsvw (Tony Robbins and Hannah) it's the kind of practical psychology I refer to. – Haunt_House Mar 7 '18 at 17:45
2

What bugs me is that what she easily accomplishes today, she may completely screw up tomorrow, for no apparent reasons.

suggests that she has mislearned something and needs to go through the difficult process of unlearning and relearning. I'd concentrate on this, figure out where she's gone wrong and emphasize how hard unlearning can be so she won't be too hard on herself. I was defeated by this when trying to tutor an in-law in calculus and programming.

2

I want to add a different type of answer. All the above focusing on teaching and your relationships are brilliant, but in your question you mention how she sometimes reverts back to her old and unconfident self.

I would like to point out that this is a hurdle in and off itself, that should be dealt separately and not just when coding while stakes are higher and emotions might run high.

She IS the victim of minor/major trauma (boyfriend bashing her self esteem, dropping out of uni twice). This is the kind of stuff that creates unconscious emotional blocks. All of your language is very suggestive of this :she reverts, she panics, she feels judged and scolded too much. I'll venture a guess that the reason, deep down, for her forgetting how to do something is that in between recalling and doing it she feels she can't and that's enough to trigger some defense mechanism she learned (e.g. Give up, so at least her former boyfriend would cease the self-esteem assault).

The best thing is if she did a little bit of therapy on it. I stress that while this might sound extreme to both of you, it is actually the simplest way to address the core issue. Furthermore, just considering it shifts the focus away from "she has issue with coding/you have issues with teaching".

Here's the ips part.

This may or may not be easy to break to her. You'll probably want to start discussing the self esteem topic with her first. Ask her how she feels about the situation and listen most of the time. See if there is a topic there (her past self esteem issues) or whatever comes out of it. Then, once you two are convinced that there's a deeper issue to be addressed, you might suggest therapy. Be prepared to reiterate your advice a few times with a lag. There is no shame to see a therapist, yet we often are ashamed and it takes a little bit of time to come to terms with it.

My personal advice is psychoanalysis, but your mileage may vary and she should shop around for a therapists she thinks are what she is looking for.

  • Many said I had given too much background information; I gave too little :) She did go through therapy, for about a year, just before we started dating (and still for a short time after). It improved how she felt about herself a lot, even though actual progress only came with our relationship (and emotions related to it, I guess). I could say (but that's only my feeling, I'm no pro) that the actual psychological disorder is past her, and she's slowly growing confidence back. – Simone Mar 8 '18 at 12:33
  • That's great! So, I can't really tell either, but the main point still stand, only things will be easier. It might be that what classifies as a "disorder" is gone (I. E. It doesn't heavily impact her life anymore) but a lot of that feelings about it might still be there. Since she has done therapy she'll be familiar with the language/tools needed to address it. I'd just try to separate the two issues and give her some time to talk about feelings rather than coding alongside with the teaching. While the bulk might be gone stressful situation might still revive some of the old feelings / moods. – Three Diag Mar 8 '18 at 12:36
2

I would be wrong if I told you there was a one way approach in such cases, the best I could do is tell you how I did it in my own case. Always remember everyone and every situation has an element of difference and you would be very wrong to assume two situations alike just because their key elements are the same.

In our time together, I've had to teach my girlfriend different things. From APA referencing to basic computing to Calculus during the college days. They've all been different subjects but the approach has always been the same - be less of a teacher, no matter how good your teaching skills are and more of a stern but understanding guide.

This may seem cold and not too important but I say this because I've had to reteach her certain things she already learnt in school, and it was only when I finally let her take the driving seat that it stuck. So in other words, teach her how to drive, don't chauffeur her around in your own 'good' way.

Importantly, remember you are not in a classroom therefore the same rules don't apply. In as much as we go to school to learn, the people who do any learning are still the ones who would have still learnt without even coming to school. They are the ones who basically just needed some sort of guidance from either the curriculum and/or the teacher. They are still self-learners. Now In a one-on-one learning situation, the teacher becomes perceived as the sole source of any and all information regarding the material or subject being learnt and this is why you have to assume the role of the guider instead of the teacher. It is only when the student sees you simply as just a guide, that he/she tries to fly on their own.

How then do you this, how then do you bring out that self reliance from the student? Put simply, Results.

Back to my girlfriend analogy. I used to wonder why she didn't know some basic stuff, and to be honest it slightly upset me. But I realized, she didn't know because she either didn't need to know before or didn't bother learning it(Note that she didn't bother learning it, not that she probably hadn't been taught before). My first line of action was to improve her reliance on Google. Yes Google. That was probably a key move that has helped both of us till date. Do not underestimate the importance and efficiency of an individual being able to google their problems most of the time. I had to be rigid when it came to the googling stuff. If she asked any general information and I noticed she was near a computer or had her phone with her, I always reminded her to google it even though it was something as simple as verifying a spelling or something she was a hundred percent sure I knew. It wasn't easy at first, sometimes I fell under her charms when she said something like "I just want to hear your own personal version since that's the best version". However, most of the times I was steadfast. Now I miss her small questions but I am very proud of the googler she has become.

This whole googling thing was serendipitous, but I realized she was more likely to do stuff and excel at that thing if she did on her own with minimal input from me. Once I found that out I started being less of a teacher and more of a guider. Whenever I had to explain something complex I always made sure after a thorough explanation from me, she went ahead and read something else not from me, entirely on her own. Initially I always did something as mundane as copying or moving many files for her. I stopped it and decided to explain how it is done. All that brought about our basic computing tutorship phase, and while she frowned at it initially,(I'm a mechanical engineer turned web developer so according to her tech stuff is my purview not hers) she told me the other day how her friends think she is a computer ninja. I immediately used that opportunity to remind her how she achieved all that on her own and how it would not have been possible if I had continued helping her.

Now the whole being a guide thing worked because of results. She finally saw what it meant to get there by herself and how better it made her, so while she still complains sometimes, she is reminded of how important it is to do it on her own for the most part.

Remember how I talked of the importance of results? Something also important is incremental success. As people experience small wins, they become juiced up for the next level of difficulty. It goes hand in hand with the results they have been seeing to bolster the I-can-do-it-myself attitude. So you have to start from something small and win at that thing, then move upwards from there.

Now how do you apply this to your situation?

You are a professional programmer, your wife has some computer knowledge and you wanna bring her up to speed. You both love each other but what is obvious is the fact that you both have never shared a tutoring relationship, and the first time you do this, its with programming that can be so daunting. I would say she needs to learn how to trust your judgement and you need to learn how to teach through guiding especially since we're dealing with programming. All programmers are self-taught, some just have other teachers apart from themselves. If you're honest to yourself, you'll remember nobody actually taught you programming. Sure you had to learn in the classroom, read books, watch videos, search stackoverlow, build projects, etc. But all this you did on you own at some point. Now you can almost learn anything by reading the docs and maybe seeing a couple of use cases. That level is what you should strive for in the case of your wife.

Forget programming for a while, pick something very simple and guide her through learning it. By being a guide, I mean introducing her to it, showing her how it is done, showing her more information and how she can get it and making sure she consumes some of those information entirely on her own.

A list of things you could consider

  • Just like me, remind her to always google her problems
  • You can show her how to refine her google searches to show her most recent entries
  • Consider teaching her how to download her favourite Youtube videos
  • Introduce her to browser extensions and how some of them actually save lives(be prepared to be asked if there's an extension for this or that. Just refer her to google in that case ;) )
  • Consider introducing her to the educational side of Youtube if she doesnt already know
  • Introduce her to the countless free but good MOOCs the internet has to offer. (This is the first step to learning how to learn)
  • Let her know she can watch xvideos without you knowing by simply going incognito ( she would love you even more for this)

Anyway you get the point, just develop a history of guiding her through stuff, so that when you are guiding her through difficult stuff like programming, she would entirely trust your judgement and most importantly, she would understand its in her own best interest when you make her do stuff on her own.

This is quite long, but there was no other way I could pass this across. In a nutshell, develop a history of getting good results through guiding her through a learning journey while showing her pointers on how to learn. It is probably through this way that she would learn whatever and love you even more. Double points!!!

Very Important: Please use discretion and realize she is only human, sometimes just help her fix her code even if you taught her that same thing the previous minute. She was probably drooling all over you while you were talking :)

2

Well, I'm unable to give a complete answer, but maybe I can help with some info. I can see two possibilities:

  • She is having a hard time to cement that information in her brain, maybe it's because she really didn't learn and just kind copy and pasted what she was taught. ( I love studying history but I really have a hard time to correctly remember dates and the correct order of facts) Maybe she need much more exercises and sometimes free coding only by herself.

  • She is having good and bad day with something she is having a hard time to understand and barely was able to complete your exercise. I will explain, there are days when you are in your best shape at work and is able to find a lot of solutions for different problems and some days that you just screw up and should have stayed in home. So, lets think everything is hard for her to understand, in a good day she is able to complete the exercises, in a bad day she is unable to do anything because it's hard enough.

Instead of focusing in solutions that it's like shooting in the dark, I would try to understand more and more why it's so hard for her. If she isn't self confident, forget programming a little. Try to see something she is good at, like cooking, call some friends and let her cook the best dish she can. Let other people than yourself praise her for her good work. Receiving compliments from other people than your partner make miracles to self esteem.

2

I once read something about needing to adapt teaching method and subject to the students learning stage. Coming from someone who grew up with a physicist for a father, this rung a bell with me.

The basic idea is that people develop mastery of skill according to the Dreyfus model. You need to understand where a person is in that model and adjust your teaching to that level.

As an example, if someone is still getting used to pointer manipulation, loops, pass by value vs pass by reference, etc. an abstract lesson on patterns is going to be completely lost on them.

Its not just a matter of how advanced the topic is. A simplistic view of teaching style would address the mastery levels somewhat like this:

  1. basic skills/rules to solve simple problems in a rote way. eg: start with simple functions and named parameters.
  2. when those rules start to fail, or the student sees better ways, introduce optionality. eg replace named parameters with typed data structures
  3. student starts to anticipate problems based on experience. introduce OO/classes with accessors/mutators and loops vs recursion, defensive programming
  4. mastery -> patterns
1

You are teaching her PHP and, I assume, MySQL on a WAMP/LAMP stack.

You are also a fairly advanced developer.

One simple suggestion. Both of you become beginners and learn together!

Learn a new stack. MEAN (MongoDB, ExpressJS, AngularJS, NodeJS).

You are probably adept at learning new concepts, so, become a beginner just like her, and be her companion, not her teacher.

Your wife will be energized by the companionship far more than you would, and you should give it a shot...

I cringed at the idea of a beginner learning PHP/MySQL, on top of the fact that NoSQL is simply a much more useful DB schema than relational DBs in majority of cases. Plus the frontend and backend is JS, so you do not have to switch between HTML, PHP, and SQL.

0

I think the problem here is that you focused on the high level abstractions first instead of starting at the bottom with the tedious low level stuff.

Most experienced programmers spend the majority of their time thinking about high level abstractions because the low level details are already second nature, but when first learning to program you ought to be approaching it from the other way around - teach low level first and then move up to abstractions.

Without the ability to understand and manage the low-level implementation details the ability to work with abstractions is effectively useless, all you end up with is diagrams and boilerplate. In fact it's nearly impossible to properly understand abstractions if you can't visualise the details, to be able to generalise you must first understand the problems that come with creating a specific example otherwise you risk creating a faulty or weak abstraction. That's why it's often advised to think about concrete classes and specific examples before trying to create abstract or generic classes.


Start low-level with the absolute basics. The computer is a machine that follows instructions, it does arithmetic, it can repeat things (iteration), it handles input and output. Get her writing simple ugly monolithic single function programs. To an expert such programs are fit for nothing, but to a beginner they are the simplification that is required. Once all that is understood, move on to functions.

When functions are understood stop and start working on some practice challenges. Write a definition of the expected input and output of a program and get her to write a program that fulfills those constraints. Maybe look at some of the challenges over on code golf for inspiration, or simply reimplement some common unix programs like cat.

Only then when you are satisfied that the lower details are understood should you move on to classes, higher order functions, generics and the other more abstract concepts.


Specifically addressing the "you could do this yesterday thing", when such a situation arises relate it back to the previous case. Say "when you did X yesterday, how did you arive at that solution" in an attempt to get the dots to connect. Often programming is about connecting different ideas in a way that makes sense - the ability to take old ideas and reapply them in new situations. Some people are inherantly better at that than others, but it's something that can be encouraged.


Also, get her solving puzzles. E.g. find some video games that are puzzle oriented (e.g. Professor Layton, Legend Of Zelda, Portal 2, 2048) and get her playing them. Programming is very much an excercise in puzzle solving and practicing with other puzzles may well be beneficial to solving programming problems.

And lastly make sure she's seeing the tasks as puzzles to solve and not some kind of exam or school test. Most programmers are self taught and enjoy programming because they see it as a (mostly) fun problem solving excercise. If she's looking at it as some sort of academic test then she's thinking about it incorrectly and is likely to get more stressed about failure.

Tell her that most programmers get through a large number of failed solutions before arriving at a correct one. Good programmers are not defined by their ability to get the correct solution immediately, good programmers are the ones who don't stop trying until they've got a solution or until they fully understand a problem.

protected by NVZ Mar 8 '18 at 21:19

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.