1 00:00:16,820 --> 00:00:18,220 JOE MOORE: My name is Joe Moore, 2 00:00:18,220 --> 00:00:22,590 and I've pair programmed for almost thirteen 3 00:00:22,590 --> 00:00:25,710 and a half, almost every single working day. 4 00:00:25,710 --> 00:00:30,730 And for the last four years, I've pair programmed 5 00:00:30,730 --> 00:00:33,860 remotely using remote pair programming full time, 6 00:00:33,860 --> 00:00:37,340 out of those thirteen years. I work for Pivotal Labs. 7 00:00:37,340 --> 00:00:41,250 We're a Agile software-development consultancy. 8 00:00:41,250 --> 00:00:45,920 And I work remotely from Atlanta. 9 00:00:45,920 --> 00:00:48,080 There's two of you who didn't hear this. I'd 10 00:00:48,080 --> 00:00:52,260 love feedback at bit.ly dot com slash pairprogrammingama, it's 11 00:00:52,260 --> 00:00:56,920 totally anonymous. And, also, for the other people who 12 00:00:56,920 --> 00:00:59,050 walked in, there's a microphone here and a microphone 13 00:00:59,050 --> 00:01:01,680 over here. If you have questions, it'd be great 14 00:01:01,680 --> 00:01:03,649 if you could make your way that way and 15 00:01:03,649 --> 00:01:05,590 start, and queue up while I kind of blab 16 00:01:05,590 --> 00:01:08,840 on about some other stuff. If not, I'm gonna 17 00:01:08,840 --> 00:01:11,450 grab these mics and I'm gonna run around, and 18 00:01:11,450 --> 00:01:15,050 do a, I don't know, a Maury, maybe. I 19 00:01:15,050 --> 00:01:18,640 don't know who's, is he still around? 20 00:01:18,640 --> 00:01:22,270 Anyway. So, again, thank you for all, everybody for 21 00:01:22,270 --> 00:01:25,710 coming here. Who is familiar, at least somewhat, with 22 00:01:25,710 --> 00:01:31,729 pair programming? I'm gonna call that eighty to ninety 23 00:01:31,729 --> 00:01:33,939 percent. That's great. So, for those of you who 24 00:01:33,939 --> 00:01:37,110 don't know, pair programming is a software development technique, 25 00:01:37,110 --> 00:01:40,090 by which two programmers work on the same code, 26 00:01:40,090 --> 00:01:42,689 at the same time, solving the same software problem 27 00:01:42,689 --> 00:01:45,820 on the same computer. That's what pair programming is. 28 00:01:45,820 --> 00:01:47,490 And you can throw the word remote on there, 29 00:01:47,490 --> 00:01:49,460 and guess what, that's all that stuff, just using 30 00:01:49,460 --> 00:01:54,509 some remote collaboration softwares, such as video chat and 31 00:01:54,509 --> 00:01:56,720 audio chat and screen sharing and such. 32 00:01:56,720 --> 00:01:59,719 So what are the benefits of pair programming? I 33 00:01:59,719 --> 00:02:01,810 could have slides and slides and slides, but I'll 34 00:02:01,810 --> 00:02:03,909 just give you a few. It's everything from having 35 00:02:03,909 --> 00:02:09,829 a continuous code review to cross-training junior people and 36 00:02:09,829 --> 00:02:13,560 older people, or, or more experienced people. Cross-training people 37 00:02:13,560 --> 00:02:16,750 from different disciplines. You tend to introduce fewer bugs 38 00:02:16,750 --> 00:02:21,010 because you have two eyes on the same thing. 39 00:02:21,010 --> 00:02:23,730 You have differing opinions, which is really great, because 40 00:02:23,730 --> 00:02:26,260 that ends up raising what I call the whole 41 00:02:26,260 --> 00:02:30,169 team to what I call the highest common denominator. 42 00:02:30,169 --> 00:02:32,880 Because that kind of disagreement and such is really 43 00:02:32,880 --> 00:02:34,389 great. And it goes on and on and on 44 00:02:34,389 --> 00:02:37,730 and on from there. In general, the general principle, 45 00:02:37,730 --> 00:02:40,100 I think as most of us know, in almost 46 00:02:40,100 --> 00:02:42,109 everything, two heads are better than one when you're 47 00:02:42,109 --> 00:02:44,880 trying to solve hard problems. 48 00:02:44,880 --> 00:02:49,750 What are the challenges of pair programming? It's extremely, 49 00:02:49,750 --> 00:02:53,910 it can be very exhausting. Personality conflicts can be 50 00:02:53,910 --> 00:02:57,600 difficult when people don't necessarily get along. It's definitely 51 00:02:57,600 --> 00:03:01,100 what I would consider to be the most difficult 52 00:03:01,100 --> 00:03:06,169 software development practice to implement, both from a social 53 00:03:06,169 --> 00:03:08,639 point of view, from selling it to people on 54 00:03:08,639 --> 00:03:11,959 the ground people, to selling it to management that 55 00:03:11,959 --> 00:03:14,889 it's, not it's not just, it's not double the 56 00:03:14,889 --> 00:03:18,109 money and twice the time, et cetera. But it 57 00:03:18,109 --> 00:03:20,979 also, I feel, has the greatest benefits. So, it's 58 00:03:20,979 --> 00:03:22,820 the hardest, but it's got the biggest pay off, 59 00:03:22,820 --> 00:03:26,790 if you're willing to dedicate yourself to it. 60 00:03:26,790 --> 00:03:30,229 And this is the, one of the top three 61 00:03:30,229 --> 00:03:32,600 questions, so I thought I'd go ahead and take 62 00:03:32,600 --> 00:03:34,229 care of that now. When do you decide to 63 00:03:34,229 --> 00:03:35,880 breaks? When do you decide to go to the 64 00:03:35,880 --> 00:03:39,290 bathroom? And the answer is, whenever you need to 65 00:03:39,290 --> 00:03:42,699 go to the bathroom is the optimum time when 66 00:03:42,699 --> 00:03:46,540 you should probably do so. And it kind of 67 00:03:46,540 --> 00:03:51,010 points to, you know, you're just people working together. 68 00:03:51,010 --> 00:03:52,470 You know, you, you decide to take breaks when 69 00:03:52,470 --> 00:03:54,729 you're ready to take breaks. If you've been going 70 00:03:54,729 --> 00:03:56,639 for an hour, you've been going for more than 71 00:03:56,639 --> 00:03:58,949 an hour. Yeah, take a break. Stretch your legs. 72 00:03:58,949 --> 00:04:01,570 Play from ping pong. Use facilities. What you're kind 73 00:04:01,570 --> 00:04:04,350 of into. Take breaks. It's a super intense discipline. 74 00:04:04,350 --> 00:04:07,470 You, you do get tired, and taking breaks is 75 00:04:07,470 --> 00:04:09,720 super important. And do so whenever you feel like 76 00:04:09,720 --> 00:04:12,680 you need it. Need to. 77 00:04:12,680 --> 00:04:16,850 And with that, ask me anything. Who's got a 78 00:04:16,850 --> 00:04:18,769 question? Over here there's a question. 79 00:04:18,769 --> 00:04:21,978 QUESTION: So, my team has been doing pairing, but 80 00:04:21,978 --> 00:04:25,090 we find that, just subjectively, that it tends to 81 00:04:25,090 --> 00:04:26,790 slow things down by maybe fifty to a hundred 82 00:04:26,790 --> 00:04:30,410 QUESTION: In other words, things tend to go up 83 00:04:30,410 --> 00:04:33,260 to twice as slow when we do it. But 84 00:04:33,260 --> 00:04:35,070 we still use it for our hard things, like 85 00:04:35,070 --> 00:04:39,800 ramping up a new developer on a project, or 86 00:04:39,800 --> 00:04:43,590 laying the, the foundations for a new project. But 87 00:04:43,590 --> 00:04:45,150 not for a lot of other things, because of 88 00:04:45,150 --> 00:04:46,250 the time cost. And I was wondering if you 89 00:04:46,250 --> 00:04:49,100 could comment on how it effects your velocity and 90 00:04:49,100 --> 00:04:50,680 maybe we just need to look further down the 91 00:04:50,680 --> 00:04:52,400 road to see pay offs and velocity? Is it 92 00:04:52,400 --> 00:04:54,460 one of those things? 93 00:04:54,460 --> 00:04:57,500 J.M.: Sure. So, I'm hopefully not going. Raise your 94 00:04:57,500 --> 00:05:01,180 hand if you could not hear the question. Everybody 95 00:05:01,180 --> 00:05:03,220 could hear the question. That's great. Cause it'd be 96 00:05:03,220 --> 00:05:05,750 great not to spend time repeating. So it looks 97 00:05:05,750 --> 00:05:08,030 like the mics are working. 98 00:05:08,030 --> 00:05:09,100 So, you all heard the question. Velocity seems to 99 00:05:09,100 --> 00:05:13,920 slow down. I think that the empirical evidence has 100 00:05:13,920 --> 00:05:17,590 shown that, at least in a controlled environment, pair 101 00:05:17,590 --> 00:05:20,400 programming has been shown to slow down accomplishment of 102 00:05:20,400 --> 00:05:24,000 tasks by fifteen - one five - percent in 103 00:05:24,000 --> 00:05:27,370 a controlled environment. And I think that this is 104 00:05:27,370 --> 00:05:30,400 often with college students who are either paired up 105 00:05:30,400 --> 00:05:33,330 or doing solo. So that's certainly not fifty - 106 00:05:33,330 --> 00:05:37,210 well, five-zero - to a hundred percent. 107 00:05:37,210 --> 00:05:38,730 And there, there are other pay offs. But I 108 00:05:38,730 --> 00:05:42,780 guess my initial reaction would be, you know, pair 109 00:05:42,780 --> 00:05:46,080 programming is a tool, and the, you know, the, 110 00:05:46,080 --> 00:05:49,210 I would call it the lower-case agile toolbox. You 111 00:05:49,210 --> 00:05:51,910 know, not the, you know, it doesn't, it's not 112 00:05:51,910 --> 00:05:55,050 necessarily mandated. But there are other things that you 113 00:05:55,050 --> 00:05:57,300 might be able to apply if you find that 114 00:05:57,300 --> 00:05:58,790 things are just going really slow. And that is 115 00:05:58,790 --> 00:06:01,640 identifying the issue. And maybe you've already done this. 116 00:06:01,640 --> 00:06:05,260 You've already identified, this is taking twice as long 117 00:06:05,260 --> 00:06:08,300 and here are the five reasons why. And they're 118 00:06:08,300 --> 00:06:10,210 insurmountable reasons. 119 00:06:10,210 --> 00:06:13,590 So, I would say, you might want to use, 120 00:06:13,590 --> 00:06:16,170 you know, what's called a retrospective, or investigate, you 121 00:06:16,170 --> 00:06:18,180 know, dig deep into why things are taking too 122 00:06:18,180 --> 00:06:21,560 long. Are you arguing about stuff? Are, are the 123 00:06:21,560 --> 00:06:24,510 pairings so unbalanced that the senior people are constantly 124 00:06:24,510 --> 00:06:28,400 trying to pull up people who are, are, are 125 00:06:28,400 --> 00:06:31,250 more junior? Are there differing opinions and people are 126 00:06:31,250 --> 00:06:33,530 just constantly arguing? Those are, you know, there could 127 00:06:33,530 --> 00:06:35,760 be many, many reasons, so identifying the problem is 128 00:06:35,760 --> 00:06:37,850 the first step to figuring out maybe why it's 129 00:06:37,850 --> 00:06:41,410 taking that long, because in my experience, it should, 130 00:06:41,410 --> 00:06:46,889 potentially be a bit slower, on the metric of 131 00:06:46,889 --> 00:06:49,530 from moments on the keyboard typing the first characters 132 00:06:49,530 --> 00:06:52,880 to maybe doing a commit. And that's not what 133 00:06:52,880 --> 00:06:56,970 encompasses done software. That's just two people coming up 134 00:06:56,970 --> 00:06:58,570 with the best solution. And you can have other 135 00:06:58,570 --> 00:07:02,230 pay offs further down the line, such as your 136 00:07:02,230 --> 00:07:05,940 code is not as buggy. Your code is hopefully 137 00:07:05,940 --> 00:07:07,930 better-factored because two people are coming up with the 138 00:07:07,930 --> 00:07:10,639 design versus just one, et cetera, et cetera. So 139 00:07:10,639 --> 00:07:12,830 I would encourage you to dig deep into why 140 00:07:12,830 --> 00:07:14,820 you're having these problems, and see if you can 141 00:07:14,820 --> 00:07:16,880 address those problems. And then try it again, and, 142 00:07:16,880 --> 00:07:19,440 and measure again. Thank you. 143 00:07:19,440 --> 00:07:23,139 QUESTION: Just as a, kind of following, my big 144 00:07:23,139 --> 00:07:26,210 impression is that, in many cases, the tasks are 145 00:07:26,210 --> 00:07:30,450 relatively straight-forward, and so it just, you know, wouldn't 146 00:07:30,450 --> 00:07:33,669 take a single person much longer to do them. 147 00:07:33,669 --> 00:07:33,970 J.M.: Sure. 148 00:07:33,970 --> 00:07:35,480 QUESTION: And then, so the other person is kind 149 00:07:35,480 --> 00:07:39,360 of, you know, avoiding, helping avoid typos and, and, 150 00:07:39,360 --> 00:07:40,919 you know, that sort of thing. But maybe not 151 00:07:40,919 --> 00:07:42,320 adding as much value as they might be doing. 152 00:07:42,320 --> 00:07:46,570 J.M.: Right. So we've, we've had clients decide that, 153 00:07:46,570 --> 00:07:50,350 you know, they measure, you know, we use a 154 00:07:50,350 --> 00:07:54,930 particular project management tool that lets us estimate stuff. 155 00:07:54,930 --> 00:07:56,360 And it's called Pivotal Tracker. You don't have to 156 00:07:56,360 --> 00:07:58,060 use it. Cards on a wall. Whatever works for 157 00:07:58,060 --> 00:07:59,650 you. So we tend to estimate things sort of 158 00:07:59,650 --> 00:08:02,770 on like a one to eight scale. And we've 159 00:08:02,770 --> 00:08:05,300 had clients who have said, after they disengage with 160 00:08:05,300 --> 00:08:08,010 us, you know, anything that's a zero or a 161 00:08:08,010 --> 00:08:09,980 one, I guess I should have said zero to 162 00:08:09,980 --> 00:08:12,030 eight, they choose not to pair on those things, 163 00:08:12,030 --> 00:08:14,040 cause they find they don't get much value. That's, 164 00:08:14,040 --> 00:08:15,760 that's great for them. But they have made a 165 00:08:15,760 --> 00:08:18,630 rule that, well anything that's more of a, than 166 00:08:18,630 --> 00:08:20,840 a zero to a one on an eight point 167 00:08:20,840 --> 00:08:23,210 scale, that that must be paired. 168 00:08:23,210 --> 00:08:25,139 And so then maybe you re-evaluate the twos and 169 00:08:25,139 --> 00:08:26,900 the threes and then ah, looks like maybe the 170 00:08:26,900 --> 00:08:29,930 threes, they have, they're, those are getting pretty buggy. 171 00:08:29,930 --> 00:08:31,960 So let's bring pairing back into that. So that's 172 00:08:31,960 --> 00:08:33,990 a strategy as well. 173 00:08:33,990 --> 00:08:35,229 Let's go over here. 174 00:08:35,229 --> 00:08:37,828 QUESTION: If you could clarify, I have another question, 175 00:08:37,828 --> 00:08:39,440 but, if you could clarify just for a moment 176 00:08:39,440 --> 00:08:45,260 that fifteen percent increase, was that compared to one 177 00:08:45,260 --> 00:08:48,149 developer doing the task? Or was that compared to 178 00:08:48,149 --> 00:08:50,350 the relative work that two developers would do, you 179 00:08:50,350 --> 00:08:55,080 know, each individually, right? So, one developer doing a 180 00:08:55,080 --> 00:08:58,190 task takes this much time. Two developers doing the 181 00:08:58,190 --> 00:09:01,640 same task takes fifteen percent more time? But then 182 00:09:01,640 --> 00:09:03,750 that other developer isn't doing any work, right? So 183 00:09:03,750 --> 00:09:07,670 there's actually less benefit than might, might be- 184 00:09:07,670 --> 00:09:11,490 J.M.: Right. So the, I believe it was against 185 00:09:11,490 --> 00:09:12,370 a solo programmer- 186 00:09:12,370 --> 00:09:12,839 QUESTION: Right. 187 00:09:12,839 --> 00:09:13,790 J.M.: -working by themselves. 188 00:09:13,790 --> 00:09:14,270 QUESTION: OK. 189 00:09:14,270 --> 00:09:16,490 J.M.: But there, you know, but I, there were 190 00:09:16,490 --> 00:09:19,240 lots of other measures that showed, you know benefit 191 00:09:19,240 --> 00:09:20,070 of pair programming- 192 00:09:20,070 --> 00:09:20,480 QUESTION: Sure. 193 00:09:20,480 --> 00:09:22,460 J.M.: -above, you know, it sort of out, in 194 00:09:22,460 --> 00:09:25,150 the opinion of the report, outweighed this, this particular 195 00:09:25,150 --> 00:09:25,990 slow-down. 196 00:09:25,990 --> 00:09:29,690 QUESTION: So I, I think that kind of plays 197 00:09:29,690 --> 00:09:32,440 into my, my main question, which was how do 198 00:09:32,440 --> 00:09:36,560 you quantify to other stake-holders, particularly in the business, 199 00:09:36,560 --> 00:09:40,540 even other developers, and maybe measure the benefits of 200 00:09:40,540 --> 00:09:42,960 pair programming? I'm trying to incorporate it into our 201 00:09:42,960 --> 00:09:47,450 process more, but getting some resistance. We, we've given 202 00:09:47,450 --> 00:09:50,290 it enough to like experiment with, but how do 203 00:09:50,290 --> 00:09:52,710 we actually measure the benefits and say whether it's, 204 00:09:52,710 --> 00:09:53,850 you know, working for us? 205 00:09:53,850 --> 00:09:56,260 J.M.: That's a great question. Measuring the benefits and 206 00:09:56,260 --> 00:09:58,330 selling it to management, or your team. Selling it 207 00:09:58,330 --> 00:10:01,700 to anybody is I, I feel one of the 208 00:10:01,700 --> 00:10:04,760 hardest things to do. And even when I've been 209 00:10:04,760 --> 00:10:07,520 going over the empirical evidence, even the empirical evidence 210 00:10:07,520 --> 00:10:10,080 has said, like, more studies need to be done. 211 00:10:10,080 --> 00:10:12,750 More sort of metrics for measuring this, this stuff 212 00:10:12,750 --> 00:10:15,970 needs to, need to be developed. 213 00:10:15,970 --> 00:10:19,930 It's, it is really, really hard to sell it, 214 00:10:19,930 --> 00:10:22,990 because the math is just too easy. One plus 215 00:10:22,990 --> 00:10:27,770 one equals two. You just can't, like, fight that 216 00:10:27,770 --> 00:10:30,180 math. It's going to be, take twice as long 217 00:10:30,180 --> 00:10:32,240 and it's gonna be twice as expensive, right? And 218 00:10:32,240 --> 00:10:34,600 why would anybody ever do that? And I think, 219 00:10:34,600 --> 00:10:38,620 yeah, and in my experience, you, you know, I 220 00:10:38,620 --> 00:10:39,830 could, I could, we could try to come up 221 00:10:39,830 --> 00:10:41,170 with some metrics and we could look at, you 222 00:10:41,170 --> 00:10:43,020 know, I could point you towards these empirical studies 223 00:10:43,020 --> 00:10:45,750 and they have particular measures of how they measured, 224 00:10:45,750 --> 00:10:48,270 you know, different kind of factors. And I, I 225 00:10:48,270 --> 00:10:51,460 find that stuff it, it bounces off people. You're 226 00:10:51,460 --> 00:10:53,990 like, ah, yeah, that's all neat. But you've heard 227 00:10:53,990 --> 00:10:56,890 of one plus one equals two, right? 228 00:10:56,890 --> 00:10:59,990 And I think that this is an unsatisfying answer 229 00:10:59,990 --> 00:11:02,410 that I'm about to give you. There's a leap 230 00:11:02,410 --> 00:11:04,800 of faith that needs to happen, and I think 231 00:11:04,800 --> 00:11:07,300 you can kind of come back to like, let's 232 00:11:07,300 --> 00:11:08,510 pretend we're in a world where we can still 233 00:11:08,510 --> 00:11:13,800 do TDD. In a world where we did TDD, 234 00:11:13,800 --> 00:11:15,700 that was a leap of faith, too. Because it's 235 00:11:15,700 --> 00:11:18,279 like, that's twice as long. Why would you, you 236 00:11:18,279 --> 00:11:20,560 can't test something you haven't written yet. And that's 237 00:11:20,560 --> 00:11:22,440 gonna take twice as long. And I'm willing to 238 00:11:22,440 --> 00:11:24,970 bet almost everybody in this room has had that 239 00:11:24,970 --> 00:11:28,529 argument with somebody who doesn't practice, like, not just 240 00:11:28,529 --> 00:11:31,839 TDD but any kind of testing. It's too slow 241 00:11:31,839 --> 00:11:32,600 and it takes twice as long. 242 00:11:32,600 --> 00:11:34,160 And, finally, you're spouting all this stuff when you're 243 00:11:34,160 --> 00:11:36,690 talking about all the things that you, make almost, 244 00:11:36,690 --> 00:11:38,610 I'm willing to bet everybody in this room, love 245 00:11:38,610 --> 00:11:40,880 testing, to somebody, and it's just bouncing off and 246 00:11:40,880 --> 00:11:42,950 it's just bouncing off. And finally you're just like, 247 00:11:42,950 --> 00:11:44,940 ah, you just gotta, you gotta try it. You're 248 00:11:44,940 --> 00:11:47,160 going to see the benefit, I swear. And then 249 00:11:47,160 --> 00:11:50,810 finally they do, and usually you win them over. 250 00:11:50,810 --> 00:11:52,279 But actually, and I'll turn this around, because I 251 00:11:52,279 --> 00:11:53,540 know that there's lots of people in the audience 252 00:11:53,540 --> 00:11:57,640 here who have been more on the sales side 253 00:11:57,640 --> 00:12:01,460 of pair programming than, than I have. Has anybody, 254 00:12:01,460 --> 00:12:03,770 would anybody like to comment on success stories they 255 00:12:03,770 --> 00:12:07,800 have had selling management or clients of your consultants 256 00:12:07,800 --> 00:12:12,610 on how they've addressed this issue? Anybody? Maybe in 257 00:12:12,610 --> 00:12:17,310 this row here? Could I encourage anybody? Does anybody 258 00:12:17,310 --> 00:12:19,380 have anything to say? I've got a mobile mic. 259 00:12:19,380 --> 00:12:23,260 Ah, excellent sir. Don't break your ankle. 260 00:12:23,260 --> 00:12:24,899 AUDIENCE MEMBER: Hello, hello. 261 00:12:24,899 --> 00:12:26,540 J.M.: Does that work? 262 00:12:26,540 --> 00:12:29,820 AUDIENCE MEMBER: So one the, is this working? 263 00:12:29,820 --> 00:12:30,910 J.M.: Could I get this mic, this hand-held mic 264 00:12:30,910 --> 00:12:31,320 on? 265 00:12:31,320 --> 00:12:32,550 V.O.: It's on. 266 00:12:32,550 --> 00:12:33,790 J.M.: Oh, OK. 267 00:12:33,790 --> 00:12:35,029 AUDIENCE MEMBER: Hello. 268 00:12:35,029 --> 00:12:35,850 J.M.: Excellent. 269 00:12:35,850 --> 00:12:37,500 AUDIENCE MEMBER: That's better. 270 00:12:37,500 --> 00:12:41,370 One of the easiest ways that I've found to, 271 00:12:41,370 --> 00:12:43,390 to get pair programming into a team is to 272 00:12:43,390 --> 00:12:48,980 talk about the benefits of bringing, increasing your ability 273 00:12:48,980 --> 00:12:52,350 to absorb junior developers into your team. A lot 274 00:12:52,350 --> 00:12:54,779 of, I'm from San Francisco. A lot of companies 275 00:12:54,779 --> 00:12:58,350 in San Francisco are hiring their first junior developer. 276 00:12:58,350 --> 00:13:02,600 Like, right now. And so, one, a lot of 277 00:13:02,600 --> 00:13:04,360 discussions I've had recently have been along the lines 278 00:13:04,360 --> 00:13:07,100 of, OK, so we're bringing on our first junior 279 00:13:07,100 --> 00:13:09,540 developer. Everything we do has to change, because we 280 00:13:09,540 --> 00:13:12,000 need to vocalize a lot more things that we 281 00:13:12,000 --> 00:13:14,700 used to. And, so, what I tell them, oftentimes, 282 00:13:14,700 --> 00:13:16,339 is like, OK, one of the ways you can 283 00:13:16,339 --> 00:13:19,490 practice that, before the junior developer shows up, is 284 00:13:19,490 --> 00:13:22,560 by pairing amongst yourselves. Getting used to this idea 285 00:13:22,560 --> 00:13:25,930 of, like, vocalizing your thought process, understanding how you 286 00:13:25,930 --> 00:13:28,910 talk about writing code with each other, and then 287 00:13:28,910 --> 00:13:31,100 you can bring someone in who's in a very 288 00:13:31,100 --> 00:13:33,770 different place, and you'll be better-equipped to talk to 289 00:13:33,770 --> 00:13:34,750 them about it. 290 00:13:34,750 --> 00:13:38,589 J.M.: Thanks a lot. Thank you so much. 291 00:13:38,589 --> 00:13:39,870 Excellent. So, go ahead. 292 00:13:39,870 --> 00:13:42,750 AUDIENCE MEMBER: I had two things to say. Part 293 00:13:42,750 --> 00:13:44,950 of like, selling pair programming, like, for me, as 294 00:13:44,950 --> 00:13:48,470 a developer, it's been really awesome, just cause it 295 00:13:48,470 --> 00:13:50,160 forces you to get out of your own box 296 00:13:50,160 --> 00:13:51,950 of thinking and see how other people think about 297 00:13:51,950 --> 00:13:54,700 writing code and sort of, like, maybe you thought 298 00:13:54,700 --> 00:13:56,529 this one practice of how to do something was 299 00:13:56,529 --> 00:13:57,899 bad because you got bitten by it once, but 300 00:13:57,899 --> 00:14:00,540 maybe you can be convinced that, oh, no that's 301 00:14:00,540 --> 00:14:03,220 actually worth doing. It's a great way to like 302 00:14:03,220 --> 00:14:05,480 just share knowledge about gems that someone found on 303 00:14:05,480 --> 00:14:07,310 another project if you're coming into something. 304 00:14:07,310 --> 00:14:09,560 And then, like, to the junior developer point, like 305 00:14:09,560 --> 00:14:11,450 it's great cause you're there and you know, you 306 00:14:11,450 --> 00:14:13,120 ask, have you seen this part of the code 307 00:14:13,120 --> 00:14:15,420 yet? No? Then you go through and you explain, 308 00:14:15,420 --> 00:14:17,560 like, everything about it, cause you, you know, have, 309 00:14:17,560 --> 00:14:21,550 you write it and you can, or you understand 310 00:14:21,550 --> 00:14:23,160 it, and so that helps bring them in more 311 00:14:23,160 --> 00:14:24,769 than just sort of looking through all this code 312 00:14:24,769 --> 00:14:26,370 that may not have comments or was written by 313 00:14:26,370 --> 00:14:29,649 someone who left the company later. So those are 314 00:14:29,649 --> 00:14:32,279 my, like, big selling points. Like, I think it's 315 00:14:32,279 --> 00:14:35,940 made me much better and much more open minded 316 00:14:35,940 --> 00:14:38,740 developer, and like, made it much easier for me 317 00:14:38,740 --> 00:14:41,990 to collaborate, which yields, I think, like better code, 318 00:14:41,990 --> 00:14:46,029 and like, you know, over all makes your, your 319 00:14:46,029 --> 00:14:46,339 group better cause you're just better at collaborating and 320 00:14:46,339 --> 00:14:49,200 sharing ideas. And it sort of tears down the 321 00:14:49,200 --> 00:14:54,019 barriers of like worrying about, about bumping shoulders in 322 00:14:54,019 --> 00:14:54,050 communication. 323 00:14:54,050 --> 00:14:55,250 We'll get kind of heated, like you said, like 324 00:14:55,250 --> 00:14:59,940 and we'll just get through it, and in the, 325 00:14:59,940 --> 00:15:03,820 in the end come to an agreement on what 326 00:15:03,820 --> 00:15:04,920 will hopefully be a better idea or revisit it 327 00:15:04,920 --> 00:15:08,209 My question was kind of around pair rotation. So, 328 00:15:08,209 --> 00:15:10,209 like, if you're working on, on a team in 329 00:15:10,209 --> 00:15:12,350 an office or, we work with one of, we 330 00:15:12,350 --> 00:15:15,130 work with the clients' developers separately, like remote pairing, 331 00:15:15,130 --> 00:15:17,519 like we'll spin up an EC2 instance and we're 332 00:15:17,519 --> 00:15:19,510 trying to sort of figure out, like, proper pair 333 00:15:19,510 --> 00:15:23,000 rotations, so like, on a particular feature, two developers 334 00:15:23,000 --> 00:15:25,540 won't be the only ones like, who work on 335 00:15:25,540 --> 00:15:28,160 it, know it, and make, like, to some extent 336 00:15:28,160 --> 00:15:31,290 make all the decisions. And I'm curious, like, what 337 00:15:31,290 --> 00:15:34,769 your thoughts are on that, and like sort of, 338 00:15:34,769 --> 00:15:36,779 what you have found to be a good way 339 00:15:36,779 --> 00:15:37,260 of pair rotation, if, if you've practiced that at 340 00:15:37,260 --> 00:15:37,470 all. 341 00:15:37,470 --> 00:15:37,899 J.M.: Sure. 342 00:15:37,899 --> 00:15:39,200 AUDIENCE MEMBER: And things like that. 343 00:15:39,200 --> 00:15:43,149 J.M.: Yeah. Absolutely. So pair rotation. Super important. I 344 00:15:43,149 --> 00:15:46,600 think, several things can help encourage pair rotation. So 345 00:15:46,600 --> 00:15:49,260 one, yes, we do rotate pairs on a regular 346 00:15:49,260 --> 00:15:53,470 basis. There are extremes to this. There's something called, 347 00:15:53,470 --> 00:15:56,070 I've never done this, but it's been dubbed promiscuous 348 00:15:56,070 --> 00:15:57,269 pairing. I don't know if anybody has heard of 349 00:15:57,269 --> 00:16:00,610 this. And it's where you pair many times per 350 00:16:00,610 --> 00:16:03,279 day, like, on a timer basically. And there's been 351 00:16:03,279 --> 00:16:06,600 a little bit of evidence to show that that 352 00:16:06,600 --> 00:16:09,300 can be very productive. It's also shown to be 353 00:16:09,300 --> 00:16:13,050 disruptive and exhausting. So I think that, give it 354 00:16:13,050 --> 00:16:15,920 a, give it a try, perhaps. 355 00:16:15,920 --> 00:16:17,790 But for us, for practical purposes, what we tend 356 00:16:17,790 --> 00:16:21,950 to do is, it, it ties into the art 357 00:16:21,950 --> 00:16:25,050 of breaking down work. So we call our, the 358 00:16:25,050 --> 00:16:28,459 stuff we're working on, we call them stories. And 359 00:16:28,459 --> 00:16:30,370 we've gotten quite good at being able to break 360 00:16:30,370 --> 00:16:34,930 down deliverable stories to small enough pieces. This is 361 00:16:34,930 --> 00:16:37,470 all, in almost every case. To small enough pieces 362 00:16:37,470 --> 00:16:40,329 that, ideally, our pair developers will be able to 363 00:16:40,329 --> 00:16:42,160 get one or two of them done per day. 364 00:16:42,160 --> 00:16:45,610 And a long story, we'll say a big story, 365 00:16:45,610 --> 00:16:47,209 that's gonna take a long time, quote on quote 366 00:16:47,209 --> 00:16:50,950 long, that might be several days. Two days, maybe. 367 00:16:50,950 --> 00:16:51,920 Three days. 368 00:16:51,920 --> 00:16:54,779 So what I'm not saying is, this is going 369 00:16:54,779 --> 00:16:56,880 to take three weeks to do. Now, maybe there 370 00:16:56,880 --> 00:16:58,950 is a giant track of features, a huge feature 371 00:16:58,950 --> 00:17:01,490 set - the entire profile page rewrite. That might 372 00:17:01,490 --> 00:17:04,750 be weeks of work. But getting that link photo 373 00:17:04,750 --> 00:17:08,148 upload thing, just that small thing, that might be 374 00:17:08,148 --> 00:17:10,339 a day's worth of work or less. And so 375 00:17:10,339 --> 00:17:13,019 we tend to rotate pairs every day, if we 376 00:17:13,019 --> 00:17:17,140 can, at our morning stand up meeting. And, because 377 00:17:17,140 --> 00:17:19,779 ideally people will have completed one or two things 378 00:17:19,779 --> 00:17:21,749 the previous day and they're, they're ready to move 379 00:17:21,749 --> 00:17:23,189 on. And if they're not, and if they didn't 380 00:17:23,189 --> 00:17:26,259 complete it, there's, like, just a little bit left, 381 00:17:26,259 --> 00:17:27,249 and you could wrap it up with a new 382 00:17:27,249 --> 00:17:30,359 pair the next day and, and go on from 383 00:17:30,359 --> 00:17:31,509 there. 384 00:17:31,509 --> 00:17:33,980 What will happen, sometimes, is that pairs will request 385 00:17:33,980 --> 00:17:36,039 to stick, we call it. We're working on this 386 00:17:36,039 --> 00:17:37,269 thing, it's really long. We have a lot of 387 00:17:37,269 --> 00:17:39,700 context. We'd like to stick on this. OK, second, 388 00:17:39,700 --> 00:17:42,350 you know, that's the next day. Cool. Then the, 389 00:17:42,350 --> 00:17:44,200 you know, the third day comes around. Like, we 390 00:17:44,200 --> 00:17:47,419 still. We're almost done. We'd like to stick. And 391 00:17:47,419 --> 00:17:52,629 the whole team collectively is like, hmm. Maybe. OK. 392 00:17:52,629 --> 00:17:56,600 Maybe. OK. Go ahead. 393 00:17:56,600 --> 00:17:59,950 Fourth day rolls around. We're really almost done, I 394 00:17:59,950 --> 00:18:01,799 swear. And then at that point, like we, as 395 00:18:01,799 --> 00:18:04,090 a group, agree as a team collectively, like, we 396 00:18:04,090 --> 00:18:06,399 should get somebody else in. Often, at that point, 397 00:18:06,399 --> 00:18:09,019 the pair will say, one of us is gonna 398 00:18:09,019 --> 00:18:12,039 swap out. You know, Bob's gonna stay on. Let's 399 00:18:12,039 --> 00:18:15,299 get, who's available? Sally, you're available. Jump in. Fresh 400 00:18:15,299 --> 00:18:18,080 pair of eyes. They're probably stuck. You need a 401 00:18:18,080 --> 00:18:21,529 new perspective. And so we will force rotation that 402 00:18:21,529 --> 00:18:23,559 way, too. And just maybe taking it a step 403 00:18:23,559 --> 00:18:26,149 further, something that will often come up after this 404 00:18:26,149 --> 00:18:28,629 is, yeah, we rotate very often, but it's kind 405 00:18:28,629 --> 00:18:30,440 of like the same people, like. We're the same 406 00:18:30,440 --> 00:18:31,450 people on the time and kind of the same 407 00:18:31,450 --> 00:18:34,029 four people just kind of, like, go around and 408 00:18:34,029 --> 00:18:36,049 around and around, what you can do to combat 409 00:18:36,049 --> 00:18:38,690 that kind of a situation, where there's, there's rotation, 410 00:18:38,690 --> 00:18:41,080 but it's not balanced amongst the entire team, is 411 00:18:41,080 --> 00:18:43,129 you can just start tracking it. Just, you could 412 00:18:43,129 --> 00:18:45,019 do a white board. Like, keeping track of who's 413 00:18:45,019 --> 00:18:47,379 paired with who how many times, all the way 414 00:18:47,379 --> 00:18:50,950 to, there's even a website called pair tricks, I 415 00:18:50,950 --> 00:18:53,960 believe. Where you can sign up your company and, 416 00:18:53,960 --> 00:18:55,049 and you can put all the pairs in and 417 00:18:55,049 --> 00:18:57,720 it'll randomly assign people and do weighting based on 418 00:18:57,720 --> 00:18:59,679 how long, how long it's been since they've paired 419 00:18:59,679 --> 00:19:00,669 and things like that, but. 420 00:19:00,669 --> 00:19:02,889 So you can do something like that, like, every, 421 00:19:02,889 --> 00:19:04,629 or just keep track of it on a white 422 00:19:04,629 --> 00:19:06,600 board or a Google doc or something like that. 423 00:19:06,600 --> 00:19:07,549 K. Good questions. 424 00:19:07,549 --> 00:19:09,799 AUDIENCE MEMBER: Kind of a follow-up to that. 425 00:19:09,799 --> 00:19:10,419 H.M.: Sure. 426 00:19:10,419 --> 00:19:13,289 AUDIENCE MEMBER: How do you combine that with, like, 427 00:19:13,289 --> 00:19:16,320 sort of junior developers, like, sort of making sure 428 00:19:16,320 --> 00:19:18,489 that they're not going through so much context-switching that 429 00:19:18,489 --> 00:19:20,109 they're not really getting anything out of it, they're 430 00:19:20,109 --> 00:19:21,679 just sort of starting a feature and then, like, 431 00:19:21,679 --> 00:19:23,590 you know. So like, in our case, we'll start 432 00:19:23,590 --> 00:19:24,749 something and it won't, won't be done in one 433 00:19:24,749 --> 00:19:27,289 day, and then sort of, they'll switch and it's 434 00:19:27,289 --> 00:19:30,700 just kind of like, well like, I'm kind of 435 00:19:30,700 --> 00:19:32,019 like lost. Like I- 436 00:19:32,019 --> 00:19:33,100 J.M.: Right. Right. 437 00:19:33,100 --> 00:19:34,330 AUDIENCE MEMBER: I was barely beginning to grasp, like- 438 00:19:34,330 --> 00:19:34,340 J.M.: Sure. 439 00:19:34,340 --> 00:19:35,639 AUDIENCE MEMBER: -that part of the code that I 440 00:19:35,639 --> 00:19:36,419 was working on. 441 00:19:36,419 --> 00:19:38,710 J.M.: So I think just being flexible, you know, 442 00:19:38,710 --> 00:19:40,830 just because it's nine o'clock the next day doesn't 443 00:19:40,830 --> 00:19:43,200 mean that, you know, the judge comes in and, 444 00:19:43,200 --> 00:19:44,799 you know, breaks everybody up or something like that. 445 00:19:44,799 --> 00:19:46,720 And I think that if, if the team decides, 446 00:19:46,720 --> 00:19:49,859 you know, hey, it seems like this junior developer, 447 00:19:49,859 --> 00:19:51,879 they're three-quarters of the way, the, the senior and 448 00:19:51,879 --> 00:19:54,919 junior developer, they're three-quarters of the way through this 449 00:19:54,919 --> 00:19:58,330 task. They're trying to complete, yeah. Let them. Let 450 00:19:58,330 --> 00:20:01,359 them complete the task. And, because they're gonna get 451 00:20:01,359 --> 00:20:02,840 a lot of benefit out of seeing it from 452 00:20:02,840 --> 00:20:03,779 beginning to end. 453 00:20:03,779 --> 00:20:07,580 So don't be, I'm personally an advocate of just 454 00:20:07,580 --> 00:20:08,859 kind of playing it by ear. Just kind of 455 00:20:08,859 --> 00:20:11,200 seeing how it works out. Don't be so strict 456 00:20:11,200 --> 00:20:14,850 that you're being too disruptive, but don't be so, 457 00:20:14,850 --> 00:20:16,919 don't let people stick so long that you get 458 00:20:16,919 --> 00:20:19,859 these little sort of knowledge cylos and ownership and 459 00:20:19,859 --> 00:20:20,700 such. Great. 460 00:20:20,700 --> 00:20:22,369 AUDIENCE MEMBER: Thank you. 461 00:20:22,369 --> 00:20:23,200 J.M.: Sure. 462 00:20:23,200 --> 00:20:26,519 AUDIENCE MEMBER: A few questions on, I guess, team 463 00:20:26,519 --> 00:20:29,149 dynamics with pairing. This one's kind of a follow 464 00:20:29,149 --> 00:20:29,749 onto this one. 465 00:20:29,749 --> 00:20:30,009 J.M.: Sure. 466 00:20:30,009 --> 00:20:31,210 AUDIENCE MEMBER: I guess I'll spit them all out. 467 00:20:31,210 --> 00:20:31,749 J.M.: Go for it. 468 00:20:31,749 --> 00:20:32,549 AUDIENCE MEMBER: Monopolize things a little. 469 00:20:32,549 --> 00:20:34,259 One is, do you have any thoughts on, if 470 00:20:34,259 --> 00:20:38,999 you have a group of, a spectrum of people 471 00:20:38,999 --> 00:20:41,600 at different experience levels, are, can you talk about 472 00:20:41,600 --> 00:20:44,899 sort of the pros and cons of going with, 473 00:20:44,899 --> 00:20:47,549 like, senior senior, junior, junior, people at like levels, 474 00:20:47,549 --> 00:20:51,289 or to go junior senior to get more mentoring. 475 00:20:51,289 --> 00:20:54,429 Have you had any barriers with tools, where people 476 00:20:54,429 --> 00:20:56,889 just would be incompatible, say one guy likes Vim 477 00:20:56,889 --> 00:21:01,139 and one guy likes Sublime? And then, thirdly, do 478 00:21:01,139 --> 00:21:05,970 you have any, any wisdom to share on adding 479 00:21:05,970 --> 00:21:09,139 a test or QA person to a pair to 480 00:21:09,139 --> 00:21:11,799 get that person involved early in what role a, 481 00:21:11,799 --> 00:21:15,639 a QA engineer would play throughout a, a, working 482 00:21:15,639 --> 00:21:17,179 on a story with a pair. 483 00:21:17,179 --> 00:21:19,600 J.M.: OK. I may have to refer back to 484 00:21:19,600 --> 00:21:21,009 you to remind me what all those are. But 485 00:21:21,009 --> 00:21:27,340 I believe they were, experience level pairings, tool conflicts, 486 00:21:27,340 --> 00:21:29,009 and adding, like, a QA or a support person 487 00:21:29,009 --> 00:21:29,649 to the team. 488 00:21:29,649 --> 00:21:34,239 So let's do, let's do experience level pairings. I, 489 00:21:34,239 --> 00:21:37,019 I like, personally, I don't, I don't consider it 490 00:21:37,019 --> 00:21:40,850 being a big deal to mix up almost any 491 00:21:40,850 --> 00:21:47,529 kind of experience level pairs. Except the junior-junior situation. 492 00:21:47,529 --> 00:21:50,109 I wouldn't just randomly, personally, do that. So the 493 00:21:50,109 --> 00:21:55,239 obviously one is senior and junior. Those can be 494 00:21:55,239 --> 00:21:57,570 great pairings, right. Just, especially for the junior person. 495 00:21:57,570 --> 00:21:59,739 And that, maybe, a lot of people talk about 496 00:21:59,739 --> 00:22:02,200 pairing and say, oh, you know, we pair when 497 00:22:02,200 --> 00:22:04,220 we're wrapping somebody up. And they'll kind of use 498 00:22:04,220 --> 00:22:06,340 that as the only excuse for pairing. You know, 499 00:22:06,340 --> 00:22:08,470 we're wrapping up this junior person. 500 00:22:08,470 --> 00:22:10,840 But, that can put a lot of burden on 501 00:22:10,840 --> 00:22:13,419 the senior person. If they're always ramping somebody up. 502 00:22:13,419 --> 00:22:14,330 You know, if they're, if you get a new 503 00:22:14,330 --> 00:22:17,200 person every so often, then they're, if they're a 504 00:22:17,200 --> 00:22:18,850 senior person they might feel like they're always wrapping 505 00:22:18,850 --> 00:22:21,229 somebody up. I'm gonna encourage everybody to have the 506 00:22:21,229 --> 00:22:24,220 attitude of, well, one, share, share the load. Like, 507 00:22:24,220 --> 00:22:26,100 the junior person shouldn't just stick with the same 508 00:22:26,100 --> 00:22:28,720 person all the time. And also have the attitude, 509 00:22:28,720 --> 00:22:30,470 if you're a senior person, or have your senior 510 00:22:30,470 --> 00:22:32,970 people have the attitude that, they can always learn 511 00:22:32,970 --> 00:22:33,619 the junior person. 512 00:22:33,619 --> 00:22:36,080 On the last project I was on, you know, 513 00:22:36,080 --> 00:22:41,669 I've been doing software development for sixteen years. And 514 00:22:41,669 --> 00:22:43,109 I was pairing with a guy who was fresh 515 00:22:43,109 --> 00:22:44,850 out of college. And he didn't even have a 516 00:22:44,850 --> 00:22:46,539 CS degree or anything. He was just, well, you 517 00:22:46,539 --> 00:22:48,210 know, one of those smart people who just graduated 518 00:22:48,210 --> 00:22:49,929 from college, and he was doing something that was 519 00:22:49,929 --> 00:22:51,970 clearly way below his skill level. We're like, you 520 00:22:51,970 --> 00:22:56,259 should probably do some programming. Here, get over here. 521 00:22:56,259 --> 00:22:58,279 And, I learned something new from him every single 522 00:22:58,279 --> 00:23:02,460 day. You know, and I, the supposed expert, and 523 00:23:02,460 --> 00:23:04,279 everyday he's like, oh, did you know about this? 524 00:23:04,279 --> 00:23:07,070 Whoa. No. That's really cool. I would usually write 525 00:23:07,070 --> 00:23:09,269 it down. I kept trying to keep track of 526 00:23:09,269 --> 00:23:11,320 the things I learned each day. And then people 527 00:23:11,320 --> 00:23:15,269 at the same experience level, that's, that's great as 528 00:23:15,269 --> 00:23:17,269 well. You do sometimes have to watch out for 529 00:23:17,269 --> 00:23:21,109 people, especially senior, senior people, who maybe, let's say 530 00:23:21,109 --> 00:23:26,049 they once had the word architect on their names. 531 00:23:26,049 --> 00:23:28,970 Sometimes people are gonna be extremely opinionated and not 532 00:23:28,970 --> 00:23:31,289 want to budge from ideas. It's something to watch 533 00:23:31,289 --> 00:23:35,139 out for. People kind of, we call it thrashing. 534 00:23:35,139 --> 00:23:37,429 Junior-junior. Should you ever pair junior people together? And 535 00:23:37,429 --> 00:23:41,019 I think the answer is sometimes yes. Especially if 536 00:23:41,019 --> 00:23:44,129 they've both been through multiple, been through multiple pair 537 00:23:44,129 --> 00:23:46,429 rotations. They're kind of, maybe one of them has 538 00:23:46,429 --> 00:23:48,029 kind of been on that, let's make up the 539 00:23:48,029 --> 00:23:50,409 user, new user profile rewrite or something like that. 540 00:23:50,409 --> 00:23:52,259 And that junior person has kind of bounced between 541 00:23:52,259 --> 00:23:54,479 pairs, all kind of in that area. And they're 542 00:23:54,479 --> 00:23:56,590 kind of getting pretty good at learning some stuff. 543 00:23:56,590 --> 00:23:58,619 It might be good to swap in and have 544 00:23:58,619 --> 00:24:01,690 a junior person who doesn't have any experience in 545 00:24:01,690 --> 00:24:05,570 that area pair with this newbie but newbie with 546 00:24:05,570 --> 00:24:08,419 a lot of context. And then you can really 547 00:24:08,419 --> 00:24:10,950 help them exercise what it's like to have them 548 00:24:10,950 --> 00:24:13,169 own something. You know, own's a bad word. But 549 00:24:13,169 --> 00:24:15,379 whatever. You know what I mean. 550 00:24:15,379 --> 00:24:17,119 Tre- you know, bringing this other person up to 551 00:24:17,119 --> 00:24:20,369 speed. Transferring that context. And it, I've always found 552 00:24:20,369 --> 00:24:23,769 it amazing how, when I feel like I don't 553 00:24:23,769 --> 00:24:25,529 really know anything and I'm really relying on this 554 00:24:25,529 --> 00:24:27,820 other person, and suddenly the person I'm relying on 555 00:24:27,820 --> 00:24:29,690 kind of drops off, and I have to explain 556 00:24:29,690 --> 00:24:32,700 it to somebody else, it really forces me, personally, 557 00:24:32,700 --> 00:24:35,349 to dig deep, understand the problem much better. And 558 00:24:35,349 --> 00:24:37,690 I almost always surprise myself, both in how much 559 00:24:37,690 --> 00:24:40,700 I actually do know, and how much I don't 560 00:24:40,700 --> 00:24:41,720 know. 561 00:24:41,720 --> 00:24:44,320 So, once in awhile, having those junior people pair 562 00:24:44,320 --> 00:24:48,820 up and, and yes, struggle, like, have problems. Have 563 00:24:48,820 --> 00:24:50,450 to figure some stuff out, the way we all 564 00:24:50,450 --> 00:24:52,909 used to have to do when we were working 565 00:24:52,909 --> 00:24:54,479 by ourselves. OK. So that was a lot of 566 00:24:54,479 --> 00:24:56,679 that stuff. 567 00:24:56,679 --> 00:25:01,399 Tools. Wow. If you could see the email threads 568 00:25:01,399 --> 00:25:04,729 go around at our company, these guys know. These 569 00:25:04,729 --> 00:25:09,739 guys know. Key bindings. Tools. Vim versus RubyMine versus, 570 00:25:09,739 --> 00:25:16,679 versus Sublime versus TextMate versus frikin' Decorak. I mean, 571 00:25:16,679 --> 00:25:20,210 give me a break. Come on people. 572 00:25:20,210 --> 00:25:22,749 Yeah. That, that's, that's, it's a, it can be 573 00:25:22,749 --> 00:25:26,139 a huge struggle. And you can go to an 574 00:25:26,139 --> 00:25:28,700 extreme, that I don't really know of anybody else 575 00:25:28,700 --> 00:25:31,070 doing. Maybe some of you do this. I don't 576 00:25:31,070 --> 00:25:34,460 know. But we pretty much standardize on a particular 577 00:25:34,460 --> 00:25:37,519 kind of keybinding, and often an editor. It, it 578 00:25:37,519 --> 00:25:40,379 evolves. It isn't like, the manager doesn't come down 579 00:25:40,379 --> 00:25:43,970 and say, today we're a Vim company. The, the 580 00:25:43,970 --> 00:25:48,169 team ends up, you know, adopting, and the people 581 00:25:48,169 --> 00:25:51,529 who are kind of holding onto those other texts, 582 00:25:51,529 --> 00:25:53,979 they inevitably kind of like, OK, fine. Fine, I'll 583 00:25:53,979 --> 00:25:55,649 do it. And I did that, because I used 584 00:25:55,649 --> 00:25:57,389 to work out of the San Francisco office. Now 585 00:25:57,389 --> 00:25:58,700 I'm working out of the New York office. And 586 00:25:58,700 --> 00:26:01,200 they use different tool sets. It just evolved that 587 00:26:01,200 --> 00:26:03,889 way. And rather than stomp that out, we've let, 588 00:26:03,889 --> 00:26:06,129 we've let it evolve. And it's been great. 589 00:26:06,129 --> 00:26:07,889 My advice on that front would at least be 590 00:26:07,889 --> 00:26:11,869 this. One, be open to learning new things. Two, 591 00:26:11,869 --> 00:26:14,200 if you have your super awesome custom setup that's 592 00:26:14,200 --> 00:26:17,359 just for you, and your own, your precious, Vim 593 00:26:17,359 --> 00:26:21,009 bindings, don't stomp the defaults. Because maybe that person 594 00:26:21,009 --> 00:26:23,669 who doesn't really know Vim very well, they might 595 00:26:23,669 --> 00:26:25,840 at, or, or RubyMine or whatever your editor or 596 00:26:25,840 --> 00:26:28,039 tool of choice is, they may not know your 597 00:26:28,039 --> 00:26:29,999 thing. But they may know kind of enough of 598 00:26:29,999 --> 00:26:32,619 the default settings, that they can kind of get 599 00:26:32,619 --> 00:26:35,389 around and maybe, maybe they start adopting yours. Or 600 00:26:35,389 --> 00:26:37,229 maybe they say, yeah, I don't really use that 601 00:26:37,229 --> 00:26:39,679 key binding for this, I use it for something 602 00:26:39,679 --> 00:26:42,789 else. And, and be open for that. But people 603 00:26:42,789 --> 00:26:48,609 can sometimes be too closed minded about, you know, 604 00:26:48,609 --> 00:26:52,580 they build this little ecosystem just for themselves, and, 605 00:26:52,580 --> 00:26:54,869 and not want to, to change, and I encourage 606 00:26:54,869 --> 00:26:57,409 people be open to change, but leave the defaults. 607 00:26:57,409 --> 00:26:59,970 And be open to trying other stuff. But there's 608 00:26:59,970 --> 00:27:03,359 no silver bullet unless you mandate, our office is 609 00:27:03,359 --> 00:27:07,679 an X office and everybody just learn it. 610 00:27:07,679 --> 00:27:11,639 OK. Integrating other people into the team. Like, QA 611 00:27:11,639 --> 00:27:14,039 folks. And if you don't mind, I'll sort of 612 00:27:14,039 --> 00:27:19,159 mutate that question into pairing across different disciplines, or 613 00:27:19,159 --> 00:27:21,220 integrating anybody of any other discipline into the pairing 614 00:27:21,220 --> 00:27:24,239 structure. I'm a big fan of that. Be it 615 00:27:24,239 --> 00:27:27,809 a QA person, design people, design, you know, front 616 00:27:27,809 --> 00:27:31,389 end design or visual design, designers. Even your product 617 00:27:31,389 --> 00:27:34,749 owners, product managers, whatever you want to call them. 618 00:27:34,749 --> 00:27:36,509 I think that that's great. One, it builds up 619 00:27:36,509 --> 00:27:39,009 a lot of empathy. Just from a person to 620 00:27:39,009 --> 00:27:41,409 person point of view. Two, it can be super 621 00:27:41,409 --> 00:27:45,179 practical, especially with, say, visual design. And, and actually 622 00:27:45,179 --> 00:27:48,519 QA as well. Like, that last mile, I've always 623 00:27:48,519 --> 00:27:51,409 found, of say a visual design, where, you know, 624 00:27:51,409 --> 00:27:52,729 you've pretty much got all the assets in. Let's 625 00:27:52,729 --> 00:27:53,960 say you're building a web page. Got all the 626 00:27:53,960 --> 00:27:58,229 assets in and you're, you're tweaking the css, and 627 00:27:58,229 --> 00:27:59,999 all the stuff that came from visual design, it's 628 00:27:59,999 --> 00:28:02,830 pretty good right now, but you know that field, 629 00:28:02,830 --> 00:28:04,619 or that area of the page that looked great 630 00:28:04,619 --> 00:28:07,519 with lorem ipsum, that only had like twenty-five characters. 631 00:28:07,519 --> 00:28:09,629 If somebody puts in a thousand characters, and they 632 00:28:09,629 --> 00:28:13,840 can, the whole thing goes blah. Right? Crazy. 633 00:28:13,840 --> 00:28:17,109 Getting visual design in to say, hey, like, the, 634 00:28:17,109 --> 00:28:19,979 the last bit, let's just sit here and work 635 00:28:19,979 --> 00:28:22,080 on this. And then you can just, especially if 636 00:28:22,080 --> 00:28:23,440 you're using, like, web, if you're doing web development, 637 00:28:23,440 --> 00:28:25,349 and you can literally tweak it right there on 638 00:28:25,349 --> 00:28:27,840 the screen together. That could be super powerful. And 639 00:28:27,840 --> 00:28:30,879 I've even been in situations where you'll, they were 640 00:28:30,879 --> 00:28:33,149 so good that they were working on this thing 641 00:28:33,149 --> 00:28:34,889 and were like, moving stuff around. They're like, ah, 642 00:28:34,889 --> 00:28:36,929 now that we've moved this from here to here, 643 00:28:36,929 --> 00:28:40,219 those icons look terrible. Hold on, and they're like, 644 00:28:40,219 --> 00:28:42,200 somehow spew out an icon out of their fingertips. 645 00:28:42,200 --> 00:28:44,299 And they're like, OK, now pull in this icon. 646 00:28:44,299 --> 00:28:46,999 And wow, it's just. It's like the most rapid 647 00:28:46,999 --> 00:28:50,669 changing finalization wrapping up of, of something I've ever 648 00:28:50,669 --> 00:28:52,529 worked in, and that was one of the best 649 00:28:52,529 --> 00:28:53,909 experiences I've ever had pairing was with this person 650 00:28:53,909 --> 00:28:59,710 who was not technically a software developer. 651 00:28:59,710 --> 00:29:02,039 QA, as well. I think, like, a really good 652 00:29:02,039 --> 00:29:04,999 QA person is worth their weight in, in gold. 653 00:29:04,999 --> 00:29:07,309 I think if anybody here is kind of tied 654 00:29:07,309 --> 00:29:11,149 into the capital A Agile community, or at least 655 00:29:11,149 --> 00:29:14,840 extreme programming, you know, somehow this strange notion came 656 00:29:14,840 --> 00:29:17,799 up that, like, you don't need QA. We've got 657 00:29:17,799 --> 00:29:20,649 tests for that. And it's like, nah. Those are 658 00:29:20,649 --> 00:29:23,239 two different things. So, integrating QA people can be 659 00:29:23,239 --> 00:29:26,249 really good, especially if you're, if they're in a 660 00:29:26,249 --> 00:29:28,690 mode of, maybe you've got a big release coming 661 00:29:28,690 --> 00:29:32,460 up, and they're hammering the site and finding all 662 00:29:32,460 --> 00:29:36,580 these bugs, and you know, pairing with them as 663 00:29:36,580 --> 00:29:40,279 you're fixing the bugs, as they're like pressing, you 664 00:29:40,279 --> 00:29:42,580 know, trying all their different attacks on the system. 665 00:29:42,580 --> 00:29:44,320 They're saying, OK, well you fixed that one, but 666 00:29:44,320 --> 00:29:46,099 that makes me think of this other thing. Oh, 667 00:29:46,099 --> 00:29:48,149 look. It's broken. OK. Try this. Try this. And 668 00:29:48,149 --> 00:29:53,419 just, like, just kind of, you know, purpose, purposeful 669 00:29:53,419 --> 00:29:56,460 pairing when it's needed can be super valuable as 670 00:29:56,460 --> 00:29:56,960 well. 671 00:29:56,960 --> 00:30:01,239 Now I haven't, say, just, you know, like, where, 672 00:30:01,239 --> 00:30:03,440 hey, we're making an android application and today I'm 673 00:30:03,440 --> 00:30:06,219 doing some, you know, a big feature, and it 674 00:30:06,219 --> 00:30:09,460 just pair with a QA person instead of another 675 00:30:09,460 --> 00:30:11,609 software developer, in the middle or at the beginning 676 00:30:11,609 --> 00:30:15,009 of the development process. I haven't done that. But 677 00:30:15,009 --> 00:30:15,759 give it a shot. 678 00:30:15,759 --> 00:30:19,489 All right. That was three. I hope they were 679 00:30:19,489 --> 00:30:20,119 good. Cool. 680 00:30:20,119 --> 00:30:23,129 AUDIENCE MEMBER: Quick comment about the cross-tooling, 681 00:30:23,129 --> 00:30:23,559 or cross-editor, 682 00:30:23,559 --> 00:30:29,989 there's a tool called Floobits - F-L-O-O bits, which 683 00:30:29,989 --> 00:30:32,349 lets your Vim people work with your Emacs people, 684 00:30:32,349 --> 00:30:34,629 and the idea is, like, one of them's got 685 00:30:34,629 --> 00:30:36,179 their computer and the other one's got their computer, 686 00:30:36,179 --> 00:30:37,840 and they're each running the same damn thing, but 687 00:30:37,840 --> 00:30:40,899 it's all synced and good and there's a fall 688 00:30:40,899 --> 00:30:43,580 back, which is like a diff shipper for other 689 00:30:43,580 --> 00:30:44,210 apps. So it's- 690 00:30:44,210 --> 00:30:45,049 J.M.: OK. Cool. Floobits. 691 00:30:45,049 --> 00:30:45,669 AUDIENCE MEMBER: Yeah. 692 00:30:45,669 --> 00:30:47,200 J.M.: I've heard of it. I haven't, well, I 693 00:30:47,200 --> 00:30:48,649 did, I technically did try it when it was 694 00:30:48,649 --> 00:30:50,749 early. And it didn't really work very well, but 695 00:30:50,749 --> 00:30:51,679 I'm gonna try it again, cause people- 696 00:30:51,679 --> 00:30:52,989 AUDIENCE MEMBER: Yeah. It's, it's still- 697 00:30:52,989 --> 00:30:54,979 AUDIENCE MEMBER: -fairly early, I think. But the promise 698 00:30:54,979 --> 00:30:57,509 is there and more plugins would probably help it. 699 00:30:57,509 --> 00:30:58,049 But. 700 00:30:58,049 --> 00:30:59,129 J.M.: Excellent. 701 00:30:59,129 --> 00:31:01,899 AUDIENCE MEMBER: So, a couple questions. One, when you're 702 00:31:01,899 --> 00:31:04,739 driving, how much vocalization do you do to the 703 00:31:04,739 --> 00:31:07,469 other person explaining your thoughts? And the other one 704 00:31:07,469 --> 00:31:11,399 is, when you've got a senior developer paired with 705 00:31:11,399 --> 00:31:14,999 a junior developer, there's, you know, I frequently find, 706 00:31:14,999 --> 00:31:17,309 I'm the senior one on this side. And there's, 707 00:31:17,309 --> 00:31:20,669 I know I need to let them work through 708 00:31:20,669 --> 00:31:22,169 it, but at the same time I want to 709 00:31:22,169 --> 00:31:23,379 rip it out of their hands and type it, 710 00:31:23,379 --> 00:31:24,029 you know, it's like, how- 711 00:31:24,029 --> 00:31:24,419 J.M.: It's hard. 712 00:31:24,419 --> 00:31:26,029 AUDIENCE MEMBER: -what tools do you, techniques do you 713 00:31:26,029 --> 00:31:28,349 use to combat that and work with that and 714 00:31:28,349 --> 00:31:29,989 help them to learn? 715 00:31:29,989 --> 00:31:32,549 J.M.: Sure. So, the first question was. Wow, this 716 00:31:32,549 --> 00:31:35,589 is really terrible. What was the first question again? 717 00:31:35,589 --> 00:31:36,929 AUDIENCE MEMBER: Vocalization. 718 00:31:36,929 --> 00:31:41,549 J.M.: Vocalization. Yes. Ironically. So vocalization and then being 719 00:31:41,549 --> 00:31:43,219 a keyboard hog, right? I'm that, like, I'll, I'll, 720 00:31:43,219 --> 00:31:44,769 I'll take on a trip with that one. Cause 721 00:31:44,769 --> 00:31:46,169 I'm, I can be that way. 722 00:31:46,169 --> 00:31:49,820 Or, at least, letting new people struggle through something 723 00:31:49,820 --> 00:31:52,419 when you already know the answer, for example. 724 00:31:52,419 --> 00:31:55,460 Vocalization. I vocalize a lot. Especially because I do 725 00:31:55,460 --> 00:31:58,009 remote pair programming. And I lose a lot of 726 00:31:58,009 --> 00:32:01,489 the, a lot of the visual cues and physical 727 00:32:01,489 --> 00:32:04,149 cues that you might pick up sitting side-by-side. I 728 00:32:04,149 --> 00:32:06,619 lose a lot of those. So, when my whole 729 00:32:06,619 --> 00:32:09,749 view into somebody is from, say, the neck up, 730 00:32:09,749 --> 00:32:12,279 you know, or like the midsection up, it's harder 731 00:32:12,279 --> 00:32:14,739 for me to say, see anybody's hands. I almost 732 00:32:14,739 --> 00:32:16,820 never see anybody's hands. So are they reaching for 733 00:32:16,820 --> 00:32:18,609 the keyboard right now? Are they reaching for the 734 00:32:18,609 --> 00:32:20,979 mouse? Are their hands on their laps? You know, 735 00:32:20,979 --> 00:32:21,999 what are they about - are they about to 736 00:32:21,999 --> 00:32:23,450 do something? I don't really know. Well like, when 737 00:32:23,450 --> 00:32:26,019 you pair side by side, and out of, you 738 00:32:26,019 --> 00:32:27,320 know, right now I can still kind of see 739 00:32:27,320 --> 00:32:29,489 you over there. And if I see this hand 740 00:32:29,489 --> 00:32:31,309 going out then that's a cue for me to 741 00:32:31,309 --> 00:32:32,629 be like, oh, it looks like they want to 742 00:32:32,629 --> 00:32:34,639 do something. I wasn't in the middle of doing 743 00:32:34,639 --> 00:32:37,109 something, so I'll kind of back off. 744 00:32:37,109 --> 00:32:41,619 So, maybe a little bit less verbalization, consciously verbalizing, 745 00:32:41,619 --> 00:32:45,570 anyway. But, when I'm remote, I'm constantly saying things 746 00:32:45,570 --> 00:32:47,229 like, I'm gonna grab the mouse. Can I look 747 00:32:47,229 --> 00:32:49,119 at this? Would you like to drive? Do you 748 00:32:49,119 --> 00:32:51,249 mind if I drive? All that kind of stuff. 749 00:32:51,249 --> 00:32:54,109 And, you know, to the point where, I've pair 750 00:32:54,109 --> 00:32:56,759 programmed with, remote paired with people, and they've told 751 00:32:56,759 --> 00:32:59,809 me later that they, they found themselves doing that 752 00:32:59,809 --> 00:33:03,779 much more when they were pairing side by side, 753 00:33:03,779 --> 00:33:06,669 and they felt it made them a better programmer, 754 00:33:06,669 --> 00:33:09,210 or a better pair anyway, because they found themselves 755 00:33:09,210 --> 00:33:11,820 being more vocal even when they were in person. 756 00:33:11,820 --> 00:33:14,019 Which was, which I thought was great. 757 00:33:14,019 --> 00:33:16,299 AUDIENCE MEMBER: What about vocalizing, like, OK, now I'm 758 00:33:16,299 --> 00:33:18,779 making this case statement because of such and such, 759 00:33:18,779 --> 00:33:19,879 do you go to that level, or? 760 00:33:19,879 --> 00:33:21,979 J.M.: Yeah. We, I will sometimes go to that 761 00:33:21,979 --> 00:33:25,239 level if, if I feel like that it's needed. 762 00:33:25,239 --> 00:33:28,879 Often, yeah, I'm kind of like, constantly talking. And 763 00:33:28,879 --> 00:33:31,089 I've recorded myself doing it, so I could show, 764 00:33:31,089 --> 00:33:32,690 like, for a presentation or something like that. I 765 00:33:32,690 --> 00:33:34,940 actually kind of hate listening to myself do all 766 00:33:34,940 --> 00:33:38,409 that. But I, I think it's valuable. And I 767 00:33:38,409 --> 00:33:41,909 find that often, my pair will in, sort of 768 00:33:41,909 --> 00:33:43,440 call me out when I'm not doing that. You 769 00:33:43,440 --> 00:33:45,149 know, I'll be kind of, like, in a zone 770 00:33:45,149 --> 00:33:46,539 and kind of going and like the thoughts are 771 00:33:46,539 --> 00:33:48,609 coming out and they'll say, like, well, what, what, 772 00:33:48,609 --> 00:33:50,289 what do you, what are you, what are you 773 00:33:50,289 --> 00:33:53,339 doing? And I'll realize, ooh, I haven't, I'll realize 774 00:33:53,339 --> 00:33:55,549 I haven't been, I haven't been saying anything. I 775 00:33:55,549 --> 00:33:59,580 haven't been vocalizing it. And so, you know, that, 776 00:33:59,580 --> 00:34:01,639 I think, is also kind of a tick mark 777 00:34:01,639 --> 00:34:06,249 in the be more vocal column. 778 00:34:06,249 --> 00:34:09,409 Were those the two questions? 779 00:34:09,409 --> 00:34:09,629 AUDIENCE MEMBER: Junior developers. 780 00:34:09,629 --> 00:34:09,889 J.M.: Junior developers. My god. 781 00:34:09,889 --> 00:34:10,109 AUDIENCE MEMBER: Letting them- 782 00:34:10,109 --> 00:34:10,810 J.M.: What's happening to me? 783 00:34:10,810 --> 00:34:13,969 AUDIENCE MEMBER: -work through the problem when you know 784 00:34:13,969 --> 00:34:14,320 it. 785 00:34:14,320 --> 00:34:17,849 J.M.: Yes. So, techniques for trying to let the 786 00:34:17,849 --> 00:34:22,139 junior people drive more when you're more senior. It's 787 00:34:22,139 --> 00:34:25,649 certainly hard. Some people never get it. Some people, 788 00:34:25,649 --> 00:34:26,960 it can be especially bad if you have a 789 00:34:26,960 --> 00:34:29,489 person who is, let's say, naturally, or professionally more 790 00:34:29,489 --> 00:34:32,340 passive, and somebody who is naturally or professionally more 791 00:34:32,340 --> 00:34:39,060 assertive. Tricks for that are just both sides trying 792 00:34:39,060 --> 00:34:40,989 to be more honest and vocal about things. 793 00:34:40,989 --> 00:34:42,989 Like, oh, in saying, like, hey, do you mind 794 00:34:42,989 --> 00:34:45,199 if I drive now? Would you like to drive? 795 00:34:45,199 --> 00:34:49,030 I have physically sat on my hands. Like, underneath 796 00:34:49,030 --> 00:34:52,820 my thighs. And when I feel myself, like, pull 797 00:34:52,820 --> 00:34:54,260 my hand out, I'm like, ah, get it back 798 00:34:54,260 --> 00:34:59,780 in there. Sit down. And ping pong pairing, if 799 00:34:59,780 --> 00:35:01,890 people haven't heard of that, is a great sort 800 00:35:01,890 --> 00:35:07,120 of structure to, to implement, to kind of enforce 801 00:35:07,120 --> 00:35:09,690 a rigidity in the bounce back and forth. So, 802 00:35:09,690 --> 00:35:12,500 again, this is testing, test-driven development. So if you're 803 00:35:12,500 --> 00:35:14,320 doing test-driven development, you can have one person write 804 00:35:14,320 --> 00:35:17,430 a failing test, and the other person implement the 805 00:35:17,430 --> 00:35:20,600 code to make it pass. And then they, the 806 00:35:20,600 --> 00:35:22,840 second person, writes a failing test, and the other 807 00:35:22,840 --> 00:35:24,730 person writes the code to make it pass. And 808 00:35:24,730 --> 00:35:27,400 you can sort of enforce that rigidity while you 809 00:35:27,400 --> 00:35:28,280 need it. 810 00:35:28,280 --> 00:35:31,330 And it was, it can actually be a not-so-subtle 811 00:35:31,330 --> 00:35:34,230 cue, that somebody is being a keyboard hog. And 812 00:35:34,230 --> 00:35:36,670 I encourage people to do this if they maybe 813 00:35:36,670 --> 00:35:39,950 don't want to be confrontational about, like, gimme the 814 00:35:39,950 --> 00:35:42,140 damn keyboard. But if somebody's kind of going, or 815 00:35:42,140 --> 00:35:44,390 let's say, if you're going along, and your coding 816 00:35:44,390 --> 00:35:46,040 and everything is great, and then your pair says, 817 00:35:46,040 --> 00:35:48,800 hey, how about if we do some ping pong? 818 00:35:48,800 --> 00:35:54,280 Like, oh. Hmm. Maybe I'm driving too much. Or 819 00:35:54,280 --> 00:35:56,100 you can, you can say, like, oh, let's ping 820 00:35:56,100 --> 00:35:58,120 pong this one. What do you say? Like, that 821 00:35:58,120 --> 00:36:00,650 can be a, maybe a less assertive way of 822 00:36:00,650 --> 00:36:02,880 saying let's balance it out. 823 00:36:02,880 --> 00:36:04,700 Trace, you have something to say? 824 00:36:04,700 --> 00:36:07,430 AUDIENCE MEMBER: Oh, just, I'm really glad you mentioned. 825 00:36:07,430 --> 00:36:09,770 Thanks. I'm really glad you mentioned ping pong as 826 00:36:09,770 --> 00:36:12,650 a, a technique to help manage that. When I 827 00:36:12,650 --> 00:36:13,900 first started pairing, it was definitely something that was 828 00:36:13,900 --> 00:36:16,040 very hard for me to do, and I had 829 00:36:16,040 --> 00:36:17,000 to do the same thing. I sat on my 830 00:36:17,000 --> 00:36:19,910 hands for three weeks. I, I saw people like, 831 00:36:19,910 --> 00:36:21,730 you know, when I sat side by side with 832 00:36:21,730 --> 00:36:22,990 someone, I'll see their hands come near the keyboard, 833 00:36:22,990 --> 00:36:24,470 and my will always leave. Or if their hands 834 00:36:24,470 --> 00:36:26,610 leave the keyboard, I'm, OK. It's my time to 835 00:36:26,610 --> 00:36:29,050 speak. And I'll raise them up. 836 00:36:29,050 --> 00:36:31,620 So I've heard of some of the other paradigms, 837 00:36:31,620 --> 00:36:34,470 like driver-navigator, for example. What are some of the 838 00:36:34,470 --> 00:36:37,810 other pairing patterns in addition to ping pong and 839 00:36:37,810 --> 00:36:40,020 when might they be good to use, and what 840 00:36:40,020 --> 00:36:40,680 are their names? 841 00:36:40,680 --> 00:36:44,400 J.M.: Oh, let's see. Yeah, driver-navigator is sort of 842 00:36:44,400 --> 00:36:48,190 the, the canonical pairing structure people think about, where 843 00:36:48,190 --> 00:36:50,400 one person is literally driving and one person is 844 00:36:50,400 --> 00:36:54,140 literally saying, oh, OK, well you missed this and, 845 00:36:54,140 --> 00:36:56,510 hey, maybe, you know, let's use an if and 846 00:36:56,510 --> 00:36:58,580 not an unless there, and that kind of a 847 00:36:58,580 --> 00:36:59,800 thing. And they're kind of also kind of looking 848 00:36:59,800 --> 00:37:01,060 over the rest of the code and say, like, 849 00:37:01,060 --> 00:37:03,290 hey, how about we extract, you know, finish that 850 00:37:03,290 --> 00:37:05,240 up, but let's extract that as a method next. 851 00:37:05,240 --> 00:37:06,330 And kind of a thing. 852 00:37:06,330 --> 00:37:07,960 As far as, those, that's the one I'm most 853 00:37:07,960 --> 00:37:11,400 familiar with. The, and, and that can be great. 854 00:37:11,400 --> 00:37:13,220 I think that's kind of the natural mode of 855 00:37:13,220 --> 00:37:15,730 most pairings. Is like, one person is like actively 856 00:37:15,730 --> 00:37:19,100 engaged and, and driving, the other one, or, actively 857 00:37:19,100 --> 00:37:21,310 engaged in typing, the other person is, is doing 858 00:37:21,310 --> 00:37:23,600 more navigating. I think that the challenge can be 859 00:37:23,600 --> 00:37:27,700 figuring out when, when to switch. Testing really helps 860 00:37:27,700 --> 00:37:29,760 for that. And if you don't do testing, let's 861 00:37:29,760 --> 00:37:32,630 say you don't, then maybe you can use some 862 00:37:32,630 --> 00:37:35,050 other kind of bounds. Like, you know, you just 863 00:37:35,050 --> 00:37:36,910 wrote this method. OK, now the next guy writes 864 00:37:36,910 --> 00:37:40,020 the next method. Or, you know, you're doing a 865 00:37:40,020 --> 00:37:43,820 bunch of refactoring and extracting classes and, and methods 866 00:37:43,820 --> 00:37:45,450 or something like that, then, you know, you bounce 867 00:37:45,450 --> 00:37:49,190 back and forth between the thing you're extracting, for 868 00:37:49,190 --> 00:37:49,930 example. 869 00:37:49,930 --> 00:37:54,100 OK. We gotta couple minutes. One minute actually. 870 00:37:54,100 --> 00:37:57,440 AUDIENCE MEMBER: The most useful thing that I ever 871 00:37:57,440 --> 00:38:00,360 did for stopping myself from over driving was getting 872 00:38:00,360 --> 00:38:02,730 a chess clock. So that we could actually see 873 00:38:02,730 --> 00:38:05,350 how much time I spent driving. And so when 874 00:38:05,350 --> 00:38:07,550 I'm looking at the clock and I'm forty-five minutes 875 00:38:07,550 --> 00:38:10,250 ahead, it, it's very helpful. 876 00:38:10,250 --> 00:38:12,250 J.M.: That is excellent. 877 00:38:12,250 --> 00:38:14,860 AUDIENCE MEMBER: And another technique is to just turn 878 00:38:14,860 --> 00:38:17,010 your keyboard over if you have two keyboards. Just 879 00:38:17,010 --> 00:38:19,060 make it so you can't type. 880 00:38:19,060 --> 00:38:20,860 J.M.: That's a really good one, too. 881 00:38:20,860 --> 00:38:22,100 OK. Forty seconds, go. 882 00:38:22,100 --> 00:38:25,020 AUDIENCE MEMBER: Based on your experience, can you share 883 00:38:25,020 --> 00:38:27,340 what you consider to be good habits and effective 884 00:38:27,340 --> 00:38:30,310 habits in pair programming? And then can you, are 885 00:38:30,310 --> 00:38:33,000 there, are there pitfalls that people tend to fall 886 00:38:33,000 --> 00:38:36,580 into that, are there commonalities that you see in, 887 00:38:36,580 --> 00:38:37,110 in? 888 00:38:37,110 --> 00:38:39,910 J.M.: Sure. In twenty-five seconds I will, I'll put 889 00:38:39,910 --> 00:38:42,170 it this way. I think it's, the main thing 890 00:38:42,170 --> 00:38:44,570 is to remember that we're all human, and that 891 00:38:44,570 --> 00:38:47,520 it's not really about technology or, really, about programming, 892 00:38:47,520 --> 00:38:50,590 per se. It's about being patient and having a 893 00:38:50,590 --> 00:38:54,040 good attitude and building trust. So as long as 894 00:38:54,040 --> 00:38:56,390 we all have a good attitude with each other, 895 00:38:56,390 --> 00:38:59,150 trust each other, are patient with each other as 896 00:38:59,150 --> 00:39:01,970 we're all learning, I think that's really the key 897 00:39:01,970 --> 00:39:03,980 to pair programming. You can apply that to almost 898 00:39:03,980 --> 00:39:07,920 any situation, but especially this very strange and extreme 899 00:39:07,920 --> 00:39:11,160 version of software development. I hope that helps. 900 00:39:11,160 --> 00:39:15,600 That's it. We're out of time. Like I said, 901 00:39:15,600 --> 00:39:16,680 thank you.