Dave Thomas
Transcript
User groups with lots to say, interviews and more, no way, sharing great ideas in the tech community, fascinating conversations, a plethora of information, find out for yourself today at uktastic.com. Hi, it’s Mike with Uktastic. I’m here at SCNA 2013. I’m sitting down with Dave Thomas. You might know him as PragDave on Twitter. And you’re also the founder of the Pragmatic Publishers, am I correct? Along with Andy Hunt, Pragmatic Programmers, Pragmatic Bookshelf. Yes. And he would talk, Dave would talk called Unknown Knowns. So thank you very much for taking the time to sit down with me. I appreciate it. Unknown Knowns, that’s very philosophical, almost very meta. It’s also hard to remember. Yes, Unknown Knowns. So, I mean, the inspiration, if you like, for the title came from Donald Rumsfeld. He gave a press conference back in 2002 where he talked about known knowns, known unknowns, and unknown unknowns. When he was talking about… about, you know, the hunt for weapons of mass destruction. And he left off the idea of unknown knowns. That is, things that are known, but you don’t know that you know them. Right. And that, to me, is a really important concept because the reality is that’s most of our knowledge. Most of our knowledge, the ability to do just about anything we do, talk, for example, is really buried way deep down the list of things that we don’t know. Right. And that, to me, is a really important concept because the reality is that’s most of our knowledge. Most of our knowledge, the ability to do just about anything we do, talk, for example, is really buried way deep down the list of things that we don’t know. Right. is really buried way deep down below our conscious level. And so that’s an unknown known. And the reality is if you want to do something proficiently, perhaps surprisingly, you have to do it without conscious thought or without conscious intervention, I guess is more accurate. So the question is how do you become proficient at doing things through intuition? And there’s a fair amount of research on exactly how you can do that. And what I want you to present. Like Blink, would that be an example? Blink is along that line. Blink is the idea of using your intuition. And I think Blink is good at a high level. And it certainly makes a good strong point for using intuition. I think Blink is a little bit simplistic, probably because it’s a mass market book. But the idea of the five second decision and all this kind of stuff, it’s not a bad idea. But I think it can also leave you quiet. It can leave you to be quite lazy. The reality is that intuition, there’s a process to gain intuition. You don’t just say, oh, I’m an intuitive person, you know, and therefore I’ll make decisions without research. The reality is that to get to the point where you can make intuitive decisions, you first have to go through the work of learning all the stuff that you’re going to be deciding about. And only after you’ve learned that and internalize that, are you then in a position to make those intuitive decisions. So, you know, for example, a baby learning to talk is not going to learn words or sentences first. They’re going to learn sounds and then they’re going to internalize those sounds, get to the point where they can make them when they need to. And only then can they then start learning words. Right. And then they start getting that feedback cycle. Exactly. That, oh, when I said, yeah, daddy got really excited. Right. And that’s something that’s how we learn meaning. We learn meaning not by being told that. You know, this object is daddy. It’s by having that feedback, that tacit feedback. And that’s a really big part of this learning theory is that you learn things subconsciously by looking at the response that happens when certain stimuli occur. You know, if you can associate pain with touching a stove, for example, then you’re going to avoid heat in all circumstances, sometimes without even thinking about it. And that’s the kind of thing we’re talking about. You know, there’s a few things that came to mind listening to your talk, and I’m a parent. I have three children and I’m going through my youngest is nine months and she’s nine months old and watching the three children as their as their emerging consciousness are starting to try to figure out things that I take for granted. For example, my five year old is learning how to spell and we’re sitting down and she was creating a list for me. My checklist to pack for the conference and very sweet, she’s like, Daddy, we have to make a list so she so she knows that there’s a list and it’s important and she says, well, what do we need? And I said, OK, we need a computer. What does she write? K, right. And OK, well, that one has a C and that when we sit down to write and I felt so bad because she ran into see the FPH because we had to have a computer, a microphone and a suitcase. So poor thing. Had a K for computer and F for the microphone and the sound she wanted to write us all for suitcase. Right. But recently, recently, and that’s when you’re able to teach. And that’s why I really appreciate your talk later when you mentioned about going to the user groups and teaching that when we’re in these situations where we are just living our tacit state, where we’re just kind of complacently in our own. Thoughts and our own day to day experience working through the machinery that we built up in our minds, we don’t think about those things that have just become rote and then when you go back and you teach somebody who is completely naive to the entire concept of spelling or the entire concept of programming that breaks you out of your, your little bubble, it’s like, yeah, that doesn’t make any sense. I think one of the things that I love to do. And I don’t get to do enough of is pair program to teach people a programming language used to do that a lot with Ruby. So someone say, I want to learn Ruby. So we sit down just for an hour and they would drive and we program Ruby. And the reason I loved it is because they would, you know, I would say, well, actually, that’s probably not the way we do that. They’ll say, why? Right. And it forces you to reexamine all of these like habits. That you get into and to dig back into that conscious side to work out why things go on. But to your point, though, when you’re talking about being, you know, sort of happily oblivious in your, in your tacit state, I think that’s actually one of the big mistakes that people make is they get to a point where they can live life tacitly. And that’s, that’s easier than having to think about everything all the time. Right. So you kind of like start getting onto autopilot and it’s not just in terms of career autopilot. In terms of your, your rest of your life as well, you know, you’re, you’re maybe even your family or relationships, whatever. It’s just kind of like, it’s all handled for you somewhere in your subconscious. And I think that that’s dangerous. I think it’s very dangerous to become stale. Sounds very boring. Well, it’s boring. But I think you could also miss so much. So one of the things I think that’s really key is to always start, always to build. On those tacit layers that you have. And one of the, one of the theories about this tacit learning is that you have to learn it in layers. So in the same way that babies learn sounds, then words, then sentences, you know, we’re learning programming languages or whatever else, techniques, whatever works for us. These are all layered. And so once you have one layer mastered, you owe it to yourself to then to go to the next layer, to push and build on that. So maybe you’ve learned a programming language. Okay, so now learn how to do certain things with that language or learn how to use certain libraries. Once you’ve got that nailed, go off and look at different problem domains or learn a new language or whatever it might be. But always keep learning. It’s interesting. My wife and I travel to China a lot. And so she decided last year, Christmas time, that she wanted to learn Mandarin. So she started to learn. She’s doing really well. And obviously the pressure has been on me to do the same. Um, now I, my, my brain is really bad at hearing sounds or differentiating sounds. Um, and so it’s very, very hard for me to, uh, listen to Mandarin and then try to reproduce it. Um, and it’s been very, uh, interesting and humiliating for me, uh, to go back to being a beginner speaking. Um, and it’s in a way it’s actually been very fun because. What it’s done is it’s kind of like, um, reminded my brain how to be a beginner again. And I found that in some ways that’s kind of freed me up on the programming side as well. Right. And it’s interesting you say that about, I, I have members of my family who are from Europe and their English is my father’s second language. Uh, and, uh, uh, you know, we’ve had discussions about Polish and English and, and trying to get them to explain why is the lamp female, right. It just is. And then, but then again, why is, why is microphone spelt with the pH and all that? Exactly. Exactly. Yeah. And it’s just the things that we’ve tested, they accepted. And we just, that’s just the way it is. It’s just, it is. But, um, it also reminds me that when you’re the beginner, sometimes when you’re one of the scary things, and I think one of the scariest things for people when they’re, when they’re looking at learning something new or making a massive career change, like a few years ago, I went from being a.net developer on a Microsoft platform to being a Ruby developer with a Mac and, you know, a terminal. And I went from being competent in being able to be strong and, and just come in and execute on the problem to, I don’t know what, how to change directories. You know, I mean, like, I’m not going to, but I, you know, how do I clear the screen? I don’t know. And, um, it’s incredibly humbling where you’re completely hobbled. And then if you’re able to even take a further step back and look at that and say, well, how are other people sometimes hobbled thinking about the people who, uh, you know, like an immigrant who was, uh, uh, coming to America and this is driving a taxi here, but was a doctor back home, you know, for whatever reason they’ve chosen that, you know, this, this path or were forced on this path. But you never know where somebody has been in, in a humbled state. So it can be a key step towards empathy by becoming a learner and completely stripping yourself down almost to the bare bones and, and, and feeling that pain and then being able to look at somebody else and try to reflect that. And then there’s another side of that too. Um, I mean, you’re absolutely right, but the, um, again, the theory says that, um, beginners of things, uh, require guidance, right? It’s not just, you know, they get it wrong if they don’t have guns. They actually require it in order to learn, um, they need to have context free, uh, instruction, right? So whereas, um, an expert or even someone who’s got moderate experience, um, would be able to fill in all the gaps and, you know, understand that, okay, you’ve said this, but it doesn’t really occur in this circumstance or whatever else for beginner, you have to be very directive and you kind of like get out of the habit of directing people. I mean, you do it a little bit with little kids because again, they’re beginners at things, you know, um, but really you feel bad or you feel like you’re being rude, telling people do this, then do that, then do the other. The reality is if you’re dealing with a beginner, that’s exactly what you should do. It doesn’t matter if they’re nine months old or 90 years old, if they’re a beginner, they need to be told, I mean, if, if, if you’re learning to parachute, right, you really don’t care about the physics of, or the aerodynamics of the shoe or anything else. You just want to be told what to pull and when, right? That’s the sum total of what you want. You want rules, yeah? And that’s what beginners need. And so, although yes, the empathy side is important, I think it’s also important to understand how to interact with people as they’re learning. Um, and the interesting thing about that is it implies that your interaction style is going to change over time. It’s going to start off being very directive, but as they get experience, it’s going to become more and more collegial. Right. You know? And you see the good managers are people that do that instinctively, who are directive at one, one day and then six months later, they’re just going to be a bit more back slappy, kind of like, you know, you know how to go do that, go do that. Right, right, yeah. And, um, in your talk, you talked, uh, you described the Donald Rumsfeld quote that probably every American has heard already, um, but, uh, about the, uh, you know, things that we know that we, uh, you can look it up. Uh, but, uh, the, um, that, that quote though, you said, you said there was one aspect missing. Right. That was the unknown knowns, and I just wanted to, to say that there was, it, it made me think about this quote, uh, that what’s, I don’t know if, if it’s ever been established that, uh, uh, Donald Rumsfeld was quoting this, but there’s an old, um, or at least I, it’s attributed to it as an old Arabic paraphrase, but I really enjoyed it, um, excuse me, uh, proverb, and it was that he that knows and knows not that he knows is asleep, waken. Right. And, and it just makes me think about what you were just saying about being on autopilot and trying to find somebody who can wake you and question what you. Yeah, but, you know, I think that’s part of it, but it’s, and yeah, you’re absolutely right. Um, and that’s part of the larger feedback loop, which is don’t get complacent, you know, make sure that you’re still conscious of what you’re doing, but on a day-to-day level, being, um, in that state of mind, you know, you’re not going to be able to do anything. Right. And that state of not knowing is actually the most important thing, right? If I was to throw a ball and you were to try and catch it by thinking about, I have to catch this ball, so let’s think, where’s it going to come down, um, probably over here, I’ve got to move my hand like this and then open my fingers up, you know, if you try to do that, the ball will be on the ground long before you even got the hand out, right? Right. Because you have to, at the conscious level, you’re just too slow. Right. But if I said to you, how do you catch a ball? You wouldn’t be able to tell. I mean, you know, baseball players’ entire career is based on being able to do something they cannot tell you how they do it. It’s, and people who try to study how they do it, and there’s like little tricks that they do do, like try and keep a constant angle on the descent and this kind of stuff, but it’s very, very difficult to describe. And the thing that I try to get across to developers is that’s a good state to be in, right? Getting to the point where you operate. Autopilot is maybe not quite the right word for it, but where you can operate instinctively means that you can be coding and another part of your brain, the conscious part of your brain, is looking at yourself coding. And it’s that looking at yourself that’s giving you the feedback to do it better. Right. And fine-tune things. So I’m not saying that you’ve got to, you become an intuitive coder and at that point it all freezes and you’re an expert and, you know, people genuflect. What happens is that you get to that level and now… You finally have the ability to improve yourself by monitoring yourself. You know, you’re now using two parts of your brain, the intuitive part, which is kind of subconscious, below the level of conscious, and then the conscious part can look at what you’re doing. Right. And say, hey, you know what, in the future I could do this differently. And then try to train the subconscious part to do that. And that’s exactly the same process. You’re going to train it by repetition, by reminding yourself to do this, by giving yourself… Feedback, you know. So I think it’s, yeah, it’s good to reevaluate and to never to do everything just on autopilot the whole time. Right. At the same time, you have to accept that the only way to be effective in any real world activity is through this tacit knowledge. Yeah. And so in a way, it’s a very programming your brain that you, like we sit down and we write code that it automatically goes and runs. But we do some thought so that way it can do that. And then we… Train ourselves to do a certain activity so that way we can just let it go sometimes and just let that automation run to an extent. I don’t think it’s quite that scientific. It’s closer to learning to drive a car, for example. I mean, when you first learn to drive a car, you’re a white knuckle, clenching the wheel, you are, you know, there’s too much going on. It’s simplified down to, you know, a couple of pedals and a steering wheel and that’s it. Right. And if someone says, watch out for that pedestrian going over there, I mean, you freak out because you can’t think about that pedestrian. You’re still too busy steering and everything else. Right. And after a while, as that experience starts to build, gradually the number of factors that you can take into account grows. And I think it’s the same. I learned to fly a plane and amazingly, you can actually solo. Typically, most people will solo a plane after about five or six. And that’s a really wild thing. I mean, if you fly around a little bit and then, you know, at some point your instructor lands, you gets out of the plane and says, OK, go to do a circuit. And you do that circuit and it is the most tiring thing you’ve done in your life. I guarantee because you are thinking constantly. I mean, there’s no spare neuron. Everything is thinking. Probably your adrenaline level. Oh, yeah. Yeah. But it’s like, you know, I had to do this. I do this. Remember this. You know. And it’s like it’s a miracle and on survives it. But everybody does. Then you don’t get your license for probably another 50 hours. And that 50 hours is spent doing these things over and over again and getting to the point where you can sit back and look at the bigger picture. And it keeps going. I mean, airlines hire pilots with 10,000 hours. You know, senior pilots got 20, 25,000. And that’s because they have. Basically, they’ve seen it all, but not just that they’ve internalized it all. And interestingly, the best pilots are the ones who don’t necessarily follow the rules. They write the rules, but they don’t have to follow it. We have if you can write the rules, then you’ve already established yourself at a certain level where you’re starting to think beyond the rules. Well, you can deal with situations where the rules no longer apply. There’s a famous case of a pilot. It was a U.S. Airways pilot. What’s his name? Al something or other. And he was flying cross-country, and the engine in the tail blew up. And that’s, in theory, not a big deal because you have two other engines and the plane would just fly. Unfortunately, this particular blow-up sent fan blades through all of the hydraulic lines. Oh, sorry, hydraulic lines for all of the hydraulic systems. So there are three hydraulic systems at a minimum. One of them was for the control of the plane, this actually disabled all of them, so he had no hydraulics. So that’s literally the worst case scenario. Yeah, and he could not control any of the control surfaces on the plane. There was no manual control. So the plane was basically unflyable. According to the book, nothing he could do. But he had, you know, 25,000 hours or something. He happened to be flying with another instructor pilot in the jump seat, and his co-pilot was very experienced. And between them, they worked out a brand new way of flying airplanes using the throttle. And they did that, the rule books did not apply. I mean, none of the manuals. I mean, basically, if you open the, every plane has something called the pilot operating handbook, which is kind of like instructions. And if you go to the red tab, which is emergencies, and look for total hydraulic failure, it basically says kiss your ass goodbye. Right. Have you run a parachute? Yeah, right. And they basically didn’t even bother. They just said, okay, we’ll work this out. And they worked out, and they got this thing, and they landed the plane at Sioux City, Iowa, simply using the throttle. And they saved, I don’t know how many hundred lives. I mean, there was a crash, because at some point, you have to turn the throttles back to land. And at that point, they lost control of the plane. But they managed to get the thing down on the ground, which is stunning. And that’s only because they had the experience and the intuition to be able to predict or to be able to, yeah, initially predict and then learn very quickly how the plane reacts when it’s flown in a totally unique kind of way. And, you know, just… Coming towards the end, but I’m thinking about the levels of mastery. And that sometimes when you get to a certain level of mastery, it’s hard for maybe what you might call a layperson to evaluate the difference between different levels of mastery. And I’m thinking about, I went and saw a dance performance, and I just thought it was beautiful. But then I heard the person who was a dancer next to me saying, well, that person over there wasn’t totally with it. And, you know, I’ve watched, you wouldn’t know by this, but I used to skateboard extensively. And now when I watch videos of skateboarders, I can tell, like, oh, my God, that person is amazing, like what they’re doing. And then others, oh, he’s, you know, he’s just doing rudimentary stuff. Yeah, sure, it’s big, but it’s very common stuff. And in programming, sometimes I think, because what we do is so much… In our head, and then into code, and then really the interface that you can have with that is very limited. It’s hard to tell. When you’re looking at books or at open source code or at another program and trying to evaluate where they stand as far as professionals, do you have, have you put any thought into how you evaluate what is good? I think that’s something on a panel talk you participated in earlier. Towards what is, what is the metric for being able to evaluate whether or not either another individual programmer is competent and what their level of mastery is? So when you’re sitting down to teach somebody or looking at somebody who’s going to be working with you, you kind of have to have that, like, okay, where do they stand in the continuum? Do you, have you, have you ever thought about how you look at somebody and evaluate their, their skill level? Yeah, I mean, first of all, I’ve got to say that I am possibly the world’s worst recruiter. I have a habit of either recruiting perfect people for the job or absolutely, you know, the devil in town. It’s like one or the other, I can’t hit the middle point. Kind of like the maniac. It’s, yeah, kind of like that. But it’s, it’s just like, I don’t know why it is, but I, I, maybe I just trust my intuition too much. But I think there’s a couple of things you can look for, particularly face to face if you’re talking to somebody. One, and it’s not, it’s not binary, there’s a combination of factors. One thing I look at is how they respond to mistakes. If you are a beginner, then a mistake is like a, a serious thing. Right? They, they panic. They, oh, you know, I made a mistake and they apologize or whatever else. If you are more advanced, then you realize that mistakes happen and you’re just going to have to fix it, you know? And so, a more advanced person would just kind of laugh it off and get on and fix it. And ideally, you know, comment on how it happened, why it happened and how you’d stop it happening again, you know? Similarly, the more advanced people are capable of doing things. They’re capable of doing more than one thing at the same time. So as they’re coding, they may be talking to you, you know, and ideally giving a commentary on what they’re doing. And so I look for that a little bit. You know, can I sit there and chat while they’re coding or whatever else? So I think those are the kind of external indicators. You can also look at the code and see, I don’t know how to describe it. It’s one of these I know it when I see it things. Right. A good code has a kind of simplicity, a kind of cleanliness, a structure, and small things. Like good developers, I think my experience is that good developers will care more about not just the logic of the code, but also the presentation of the code. You know, they like producing things that look nice. And there’s good reasons for it, but it’s typically a kind of like third-order effect. So you only start seeing that when you’re more experienced. I don’t have an exact answer. But I mean, those are the kind of things that I’m hoping to see. Well, thank you very much for taking the time to sit down with me. No, thank you. I really appreciate the opportunity. Okay. User groups with lots to say. Interviews and more. No way. Sharing great ideas in the tech community. Fascinating conversations. A plethora of information. Find out for yourself today at ucdastic.com. ♪ ♪