About the talk
RailsConf 2019 - Teach by Learning; Lead by Teaching by Betsy Haibel
Have you ever caught yourself dictating code to a junior dev, rather than pairing? Or resorted to saying “best practice” because you knew you were right, but couldn’t articulate why? We can solve both these problems with “dialogic teaching,” a cornerstone of modern adult-education theory. In this talk, you’ll learn how to go from monologue to dialogue. You’ll learn how to teach developers of all skill levels in ways that center their goals and let you learn from them too. You’ll learn how to practice technical leadership when you’re right – and how to practice it when you’re wrong.
Welcome to my house. in which we're going to talk with Aiden about in which 2 where are we going? It is very difficult to work with places where you are. And I do want to talk a little bit about why I didn't get any of this phone. Captain, that when I was working at a time. We're about to have to learn. A lot of people hear this and say that sounds like an adult. another start. Mortal Kombat movie cuz I don't is it the real Santa being self-aware? MP3 Nelson
40% After 17 years one of these developers, Wisconsin self inoculation definition. He said something about how he was really happy. Never once made me feel like he was worthless. Eva's confidential name meaning faucet penetrate definition I know you think about that. And helping other developers get better. antenna TV near me completely hamstrings aren't working. Listen to talk about psychological education. That was an education. in 1964 Is it still the same?
Play the song from Ferris. Application for That's okay. I do not get along with. Stop taking ferrous. Out of there is no context. Which countries like America take other people's workout? This is disrespectful. And it also makes me ideas less effective. So I'd like to encourage you all to read Farris work directly as well. There's an English translation. And the theme translation has really thoughtful translators notes on what they chose to translate and what they chose to understand us untranslatable. The translation is a
fairly dense work. But you know David was talking up. Terica Garth and that's why I asked you this morning. I have faith in us and prayer in the original is worth. Stop This Train by Fred wouldn't start by teaching people reading but rather by asking people about the words that they used for his instructors would learn about the lies and subcultures of the folks are working within a very active way that was participatory rather than the anthropological practices of the time with for a bit more observing people in their natural habitat with all that that implies
instructors Train by prayer would instead facilitate open-ended discussions about how the words folks used influence how they thought this was a rather indirect way of coming at adult literacy, but it was a way that let people Let it become a vital and relevant topic for the folks that fair and his collaborators were working with. Suddenlink literacy became something connected to two people figuring out the world around them to understanding the social system that they're embedded in which in the Brazilian favelas of the 1940s were really interesting and it went with her
see the a tool for that rather than something that was being imposed on them by social worker from far away. Because first instructors started off by showing respect for the people that taught and connecting their lives to material. They were trying to teach they were able to teach folks incredibly effectively. Before first work was stopped by the military Junta he developed techniques, but let illiterate adults learn to read and write in a. Of less than 2 months. Before we go into the house and why is a bad teacher and let's
look at the other side. What are the house? And why is a folks learning? Are a lot of reasons that a person might want to learn something. Maybe they want to pass math test or get a job as a computer programmer. Maybe just want to let go to the museum and learn about dinosaurs because dinosaurs are awesome. But the biggest reason that any of us learned anything as adult is a little different we learn things because we suddenly realized we need to know. Skyler Natalia cecire call Sis phenomenon emergency learning emergency learning is learning that you do
because you have suddenly discovered that there is something you really need to know. Example on how to unclog our toilets on emergency basis. Didn't answer. Refers to a lot of emergency learning, right we practice emergency learning whenever we open Google to figure out why are stack is even doing that or he frantically skin the postgres documentation for that? There's going to be some index type it will simplify this for find query mating example, after example, after example of form element styling on code must be some amount of pollen way of
customizing Flex boxes. I'm speaking from Deep smelly ready on that one because that was my week while I was reading this talk to save you that week and tell you. Now one of these examples implies an emergency learning is always short term which isn't quite the case. Someone can recognize their bad at databases and set themselves a project of getting better at staple words that they're bad or front end. Therefore try to learn react learning react is not a short-term project.
It is not solvable if it's a Google. But emergency learning is always happening in response to a need that's instead of major characteristic. And what follows from that is that folks are practicing emergency learning are in active mode, but rather than reactive mode reactive mode Narrows your focus. I'm just learning react because I know they're bad front end isn't necessarily going to be seeking out other friend and resources or learning politically about how the different parts of the HTML CSS fast mobile headset together.
Books were practicing emergency learning always have a narrow goal in mind and is candy limiting, but it's true and we need to deal with the fact. That's true. We also need to deal with the fact that they establish that goal because they had a real problem that they wanted to solve. Whether it be oh my God, why is are stuck doing that or? Oh my God. Why is my toilet doing man? Because most of the other developers were working with are practicing emergency learning. They generally always have a goal in mind. It's a goal that
came to because of a real problem that they were experiencing. And this is the thing that we often forget when we're teaching people more about programming information about programming in the abstract. We often think we're helping them but aren't Unless the information we're getting them directly connects to boast that person's goal. And what they Percy is their problem today. It might come across as help. It will come across as I was not thinking about the problem where they're trying to solve and you know, they're probably right in that assessment.
also, all of this assumes that the other person wants to be taught which what sticks the bathroom app? Many of you may know of no or know of I think around Houston ravikant this guy there's a story about to tell spot. This one time. He was it Ruby DeCamp. The first day of DeCamp is always a culture trait trait you do 6. Sessions Impressions a different pairing partner, but they're all in the same problem. Usually DeCamp does Game of Life. Turn this one pairing session. I'll be just whose partner with Junior to him.
Seth Rollins to be topless, dude Now a big part of Game of Life is figuring out whether a cell in a grid is the neighbor of another cell in that same spirit. I'll just a standard solution for that problem problem. When hands pair got to neighbor detection his pairing partner started frowning at the screen. She started deleting and retyping the same function a few times and so off he offered to tell her tell her his standard solution. his partner said okay, but let me get the Test passing at the stars in cursive k Saucy's Geppetto CFA salad and started sketching out his normal Solution on a
piece of paper. And then about five minutes later he looked up. And there was an elegant Solution on screen but had never seen before. And yes course, I was out of here. Spoiler. But like that's not the point of the story. The point is a copy made assumptions about a relative skill levels and more importantly about the rules. Each of us should play in the parent session because of that those assumptions destroy to the parent session around them. It was earlier in my crew as nasty. but what about the other stuff? I wasn't an experienced
an absolute sense. I think program since I was eight. I got to high school some pretty intense math program so I could think about Game of Life and analytic geometry terms which wasn't Healthy Deposits thinking about it. I like the solution to I really like childish one concrete. He's made the pic thing which cells are potential neighbors of a given cell. We need some things we could learn from each other. This is always the case. Their knowledge is in the binary spectrum and that I need to leave to apply that knowledge really is in a binary Spectrum. When we have the humility
to recognize gaps in our own skills, we become more able to learn from the folks around us regardless of their background or experience level. Even Steven programming for two decades and they've only been programming for 2 months. There's always going to be something that you can learn. Play some light rock. We're going to look more concretely what but this means I'm working with other developers regardless of their skill level. We're going to make some kind of arbitrary decisions to do. So, we're going to divide working with earlier crew developers versus working with people who are roughly
our peers and people new things for encouraging them to adopt better practices. Going to start with teaching new things early for developers. Now this sounds straightforward right there new developers. They need to learn new things. We know saying was cool. But we screwed up all the time, right? We sent her uncle's we go into teacher mode rather than collaborating with people. We stop listening carp. Are we start asking them lots of condescending leading questions and pretending Socratic featuring we get frustrated and grab their keyboard from them or we knows or not
supposed to grab the keyboard. And so instead we get really passive aggressive when we instead and like take that frustration out on them sneaky ways. We also sometimes hide our own ignorance your mistakes instead of letting our parents see them. In short we naked about ourselves. When we make teaching about ourselves, we make it about our knowledge and are supposed to teaching abilities. We lose track of a person we're teaching we lose track of their needs and goals. This reduces the interaction to what we think the person probably needs to know next it prevents us from
addressing their short-term reactive goals and it protects us from actually helping us reach our mutual long-term goal of letting them become better Developers. If all they were doing when teaching was telling people how to make mock objects in our Sac this would matter less but that's what the doctor for. We're always trying to do is helping new developers learn to better things and computer. We can only do that if we look at them as her own person their own person with their own goals. The only person who may be doesn't computer as well as we do yet. But who is not
worth less who is not worth the respect? securing your ideas merely because they temporarily no less. For starters for God's sake stop going automatically into teaching mode when you work with early career Developers. You're treating them like a charity case rather than a full-fledged malipur just like you. Doing this reinforces every single weird power dynamics. It is already in the room and it makes for new ugly ones besides it means it any good ideas the other developer might as get pushed out of the room because a teaching mode is
fundamentally about monologue rather than dialogue. It makes the entire interaction about how awesome you are friend of mine things instead of empowering the other developers solve the problem. They're working on. If you think another developer might be less skilled and you are in a particular area trying to figure out their actual sea level unobtrusively. This has several practical effects. First off. You're not risking screwing up by assuming with someone who's been programming since they were 8 is new at this level of atrociously. I also really
great ways to not be a drip system in process. It starts with paying attention, but they're doing Read their PRS watching code. Ask Stephanie about things. This phone supposed to give you their opinion about things which is valuable in itself, but it'll also give you a chance to understand how they frame and put together their opinions. What to include when they're finding their opinions is a really great way to sneakily find out what they do and don't know. You ask them why they're doing things being genuinely curious about their answer.
They'll be able to tell if you're not. Definition of working itself and that's the grounding emotional work that makes all the rest of this work. Now going even more pragmatic for a minute when you're looking a senior developer try to use Behavior driven development if you can or it's close relatives ruffle driven development and reload driven development. Where can I fax feedback loops as useful. But when were using these processes and working with your developers? We're also forcing ourselves to work on one and only one tiny chunk the problem at a time and this is practical because
when someone is learning something new a lot of their brain is taken up by learning that new thing and they don't have that much brain left over for the actual problem at hand. So keeping the problem at hand something that can sit with them that tiny shots of the brain is both deeply practical and deeply kind Because of our students develop in the room you was going to have like that bit of your brain left over. And that means that you can use that part of the brain to be walking textbook. When you'd like if you turn yourself into a textbook who's answering
their questions this forces you to be in a place where the fact that you're you know more about development is become something about you assisting them in finding a solution rather than opposing a solution on them in a lot of ways. It's the mental trick that happens when you take your feet when you take your own keyboard, but in a way that's a little bit less susceptible to frustration the passive aggression that stems from that. No points your parents going to get stuck. This is not going to happen because they're new to programming. This is going to happen because all
developers especially relatively senior ones sometimes underestimate large chunks of work as small ones. Known this happens the best way for you to help people out is to help them refine their next step into a small enough problem that you can go back to this idea of small trunks. They're tackling with you as a reference. When you do want to scare your parents declare Direction trying to make sure the only what you're saying at your own opinion is perspective rather than treating it as word of God some magic words here include just how I usually do work. I've had bad experiences with this
particular technology. So can we try it to time box? How long we spend on this option? You should also be careful to acknowledge your mistakes and ask your pears active help in getting out of these problems. That last one is so important, but that's a whole nother side. Really creative Bella Furs often feel a lack of confidence because I think it's perfect code Springs forth from more experience developer skulls. The solution is flattering, but you should nonetheless take every opportunity smash it for you. You're going to make mistakes. beasts of steaks will confuse people By
default, they will blame themselves for their confusion. Not you. Letting them blame themselves is cruel. Letting them Flames themselves will also make them worse developers in long-term. It'll teach them to likewise hide their mistakes and the places they're confused. It'll teach them as that's how to be a senior developer. feel like run at that problem really aggressively literally every typo you make yeah everyone and I know that you're a crap typist when your pairing everyone is But like everyone when you switch
directions on a problem say we are switching directions because I was wrong very specifically Or say we just learned a thing about the problems faced. We should respond to that thing by switching directions or really anything that says yes, this is different you are recognizing this is different because it is different because I know magic things that you don't know yet. Finally before we wrap up teaching earlier for developers things. Let's talk about the one circumstance in which it is okay to go to teach remote. Sometimes you may see your
pair partner struggling against the limits of their knowledge. I'm trying to figure out how to do something in a way that makes it clear that they know kind of what they want to do, but they don't quite know how to get there. One of the big flags for this that I look for is if they start messing with the same few lines of code in a circular way. Are they deleting and retyping do they keep on going like that way? I'm going to the back. This gets even more apparent that they're also complaining at the same time about how ugly what they're working on it is that's also a huge cow. Maybe
they are complaining about a lot of help for methods and they don't quite realize there's an object in there struggling to get out. People are grumbling about the kind of code repetition of extracting a higher order function with dicks. In these cases it is okay to go into teacher mode but get permission first. It doesn't feel like one of my go-to phrases hears. Can I show you a trick? And the reason is works is that you're very directly using your knowledge and service of their ideas and their goals. This helps diffuse with weird power dynamics of teacher mode, and it keeps
you from getting Detachment your parents looking to do. Now sometimes when you're working with an early career developer, they're going to express discomfort with techniques you're using because they're not familiar with it. Siri is a really tempting place to go into teacher mode because you think you're helping them out. You're not. remember Your goal when you're pairing with someone or otherwise working with them, it's not actually to create beautiful code. It's not even to teach them. The goal is to create cuz both of you can
maintain. And your pair is a much better Authority than you are on what they do and don't feel comfortable maintaining. It's the same as the code that you produce together is a bit repetitive. Corsair's messy places that you personally would want to fix. Kill that it can be frustrating but it's a more experienced person in the room. You have a greater ability to adapt to different coat Styles. And so you should use it. The most important thing to teach a newer developer is never the material itself. It is judgment about technical things and the confidence to trust that
judgment. The only ways to build that judgment and consonants are 5% same your opinions as opinions. Acknowledging your mistakes and actively working with the feedback that developer you're collaborating with gets you. Now you can't learn how to persuade your peers to do things. You think are better until you learn to teach them new things in a way that's respectful and I'm threatening. And so that's we're going to focus on next. Octoly teaching of teaching and developers are developers. So same techniques that
serves you. Well, when heat when you were developers will mostly serve you well when you're teaching your peers. There are some differences and some other points to wear out after I take a drink of water. First off your peers and no more things already and they need to learn and see where things come on the sounds to steal. It's really not. It means that they have more room in their heads to take much bigger steps. And so it changes the size of the problems you're working on and even changes the order.
It also means that things are going to kind of stop and start. Your parents going to have a different set of feelings about working on the parts of the problem that involve Technologies are familiar with and the parts of the problem involves things that they don't know yet. Their comfort zone is going to have a lot more impact what you work on when then what you might think the logical order for the problem is Working with a pier developer also gives you a lot more chances to be a jerk by assuming that they don't know something but they do know really because what they do know is much
larger side of things. So how much do work with ex is a good question to ask to ask a lot? Never assume. They don't know something even if they seem unfamiliar. Especially frankly for someone who looks like me as I'm not a lot. Now developers have been working in the industry for a while have usually pick up some habits and opinions along the way. They're going to evaluating anything new in the context of the things they already know. They're going to be judging new things in the context of what they already know. And
sometimes because of this are going to jump to conclusions including negative ones. This is always really obvious that you can the outside and you should never tell him this. Instead ask them about their conclusions. what they say will tell you a lot about what they care about in code and what their goals for learning this new thing just like the confusion they've jumped to actually are If you can give him a pass to accomplishing their goals while learning this new thing and writing code that they think is good. It'll go a long way toward helping them understand the value. And why's the
new technology in the process? They are almost certainly going to write code that you think is ugly and an idiomatic. You should also deal with us Tema Chris compromise. Another thing to remember about working with more experience developers to teach them new things. Is it working with the unfamiliar can be deeply scary especially to experience Tamela verse. Experienced developers are used to understanding the computer and all of a sudden they don't anymore. They've been to. MS cause extra if a new thing requires them to change
their approach into or techniques. If your parents used to tdd and Ruby and all the sudden, they need to learn something like CSS that is not an immutable to test automation. Then they're being denied their coping mechanisms for dealing with how awful computers are. This is something that it's best to be actively empathetic about. Answer try to adapt as much as you can to practices that work for that person. If possible take breaks from working on the new thing to keep to give him a chance to be back in their comfort zone just for a little bit. If your parent feels safe learning the
new thing and they're much less likely to judge it prematurely and much more likely to actually learn. I like your piercing really cranky ask what if you're wrong. What is the things that you value about this new technology or just new approach a really cool, but not actually relevant problem at hand. What if there are trade-offs to the new approach that you haven't realized but that are obvious to the other have been up to the other developer precisely because they're confused. Now sometimes you want to shift your teammates to try and get a new practice
more so than teaching the new technology. If you want to try out a new API design strategy start using a new pattern and rails codebase something it may be something as simple as implementing automated code style checks. Beads that techniques and Technologies don't matter the process of getting buy-in. What does matter is being cheerful and respectful and unfriending while you try to educate your teammates about the benefits of a new approach? Learn this new thing because it's better is actually a much bigger ask then. Learn this new thing.
Because it's a bigger ask you need to do a lot more to demonstrate respect establish that you want to learn as well as teach and generally make the interaction safe for the person thought. Remember knowledge is not a binary Spectrum. Your peers have a different set of skills that you do and every chance you have to level him up on things that are in your comfort zone is a chance for them to help you through an area, you know less well. Madison partner Jennifer to has this great framework for understanding where communication breaks down when communication breaks down if you need to cuz
someone misunderstood you because they disagree with you or because even though they agree with you, they aren't willing to do the thing that you want them to do. Jennifer Coast until Destin lot more depth in your talk humans aren't a TI. Senor request is 409 on this this was recorded. It really cancel la When does comes in in terms of persuading someone can use something you think is best practice is that when you're doing this it can be really easy to think of someone has misunderstood you about the value of a practice or the practice itself when in fact they understood you
perfectly well, and I think you're full of it. It is really easy to double down on explaining the exciting thing in these circumstances and it isn't terrible idea. Maybe they've tried the approach that you're trying before and they hated it just doesn't necessarily mean that they are wrong and you are right. Where does it mean the opposite? It doesn't even mean necessarily that you should Max back off, but it does mean that you need to listen very active Lisa concerns with the express. It's not going that you should respond to these
concerns directly. It is also really tempting when they express these concerns when they say I tried Robocop and I hated dealing with all of those nitty-gritty things every TR. Safeco that you feared more files inside there's a way to fix that right like the specifics again don't matter as much as conversational pattern. Instead of having a quick answer for every objection they voice. Try working with them to implement the solution that addresses sequence urns. If you sit there and act as a reference on that practice or technology
while they work through how to make gift ideas work in their context. That's where she's going to address those concerns way more effectively. Then you argue with them ever could. It will also be a solution but they have a lot more investment in implementing so you get tired of buying for free when you're using that technique. understands agrees willing ideally that all three and if you don't if I disagree or unwilling You should listen for the results.
Okay, so homestretch, right? Let's tackle the secrets of encouraging early for developers to use better practices and they're currently using The secret to teaching newer developers better practices is giving them the exact same spacing respect that you would give him more experience developer. Yeah, you sometimes need to get some more of the pieces of the puzzle before they understand. They're not going to have an ingrained sense of a context in which the solution is arising. What's the most important thing to teach anywhere developer is never the material itself.
Instead it is technical judgement and the confidence to trust their technical judgement. You need to trust their technical judgment if he wants to help teach them confidence in it. You need to trust but if they're not persuaded of the superiority of your method, it's because it's not actually Superior. At least not for them at least not at that moment. Maybe it's too advanced for they are at the time. Maybe it's just once again, but they're right and you're wrong.
Stop. This is me. I can be reached on the Twitter's at Betsy's often. We can also you can also go to my company's website on Twitter at we could hear and sign up for newsletter on Tiny letter. I'll actually recently stepped back from full-time roller coaster and stepped into a board roll. So if you wants to hire me full-time and we can also have that conversation. Only if the ideas in the stocks up to you though. I'm really the ending really picky about culture this time
around. I'm here also sells courses. And we did a course without thee who in spite of me tweeking him a bit earlier in this talk is actually great friend of mine. And so we did a course called mastering the object-oriented mindset and Ruby is it really stresses how to take object-oriented Concepts and fighting with a with intervals contacts, which as we all know is sometimes a bit difficult and so your check that out released course debugging downtime on its own which we look at a real world problem. One of our clients was having with downtime and kind of expose how we solved it and there's
disagree with us. This is really important to me. It's also really hard to sell which is part of why I'm taking a step back from cuz here I'm kind of cleaning stuff personal point because a lot of things that David was talking about this morning and they came out. I think it's really important. In the work we do. To keep in a place where people eating it. And right now I think that going full-time is the way I take that step. But the stuff is still valuable. And I can produce
Buy this talk
Access to all the recordings of the event
Buy this video
With ConferenceCast.tv, you get access to our library of the world's best conference talks.