[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Good afternoon RailsConf. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I hope you're all doing great after lunch. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Thanks so much for coming. \NI've very excited to be here. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,My name is Derek Prior. \NI'm a developer with thoughtbot... Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,...and I'm here today to talk to you \Nabout code reviews, doing them well... Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,...and what it means for the culture \Nof your team when you are in the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,type of place that does them well. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, let's start with a show of hands. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Just so I get an idea where everyone is at. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,How many of you are doing code reviews Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,as a regular part of your day, \Nevery day already? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Ok. And how many of you really \Nenjoy doing them? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Okay, a few less. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And how many of you do them because\Nyou feel like you have to? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,It's about equal. Okay. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,All the people who said they really\Ndo enjoyed them also said Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,they do them because they have to.\NOkay. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, why is it that we do reviews in the first place? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,This is pretty easy, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,To catch bugs. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We're going to have somebody look\Nat every individual line of code Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and we're going to find what's wrong. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Not really. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That's not why it is interesting, right?\NI've been doing code reviews for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,over ten years now.\NI used to hate them. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And, they were the worst\Npart of my day. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We did it just for compliance\Ndocumentation at one of my former jobs Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But now I think that code reviews are\None of the primary ways Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that I get better at my job \Nevery single day. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Yes, we're gonna have fewer bugs\Nin code that's been peer reviewed. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,than in code that \Nhas not been peer reviewed. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But studies on this show that\Nthe level of QA that we get Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,out of code review, doesn't meet\Nthe level of expectation that we have Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,as developers and managers. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, that is, we think that by doing\Ncode reviews we're getting this much QA Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,when in reality we're getting \Nsomewhere down here. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, why is that? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Well, the reason is \Nwhen we do code reviews, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,we're looking at a slice of a change. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We're looking at the git diff essentially. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And we can catch syntactical issues,\Nor problems where you might be Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,calling a method on nil. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But we can't catch the really \Nheinous stuff which happens when Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,your whole system interacts \Nand corrupts your data. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, code reviews are good for \Nsome level of bug catching Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but it's not the end-all be-all, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, what are they good for?\NI already told you that I think Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that code reviews make me better every day, \Nand I want you all to feel the same way Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Well, in 2013, Microsoft and the \NUniversity of Lugano in Switzerland Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,came out with this study: "Expectations,\NOutcomes, and Challenges of Modern Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Code Review." So, in it, what they did was\Nlook at various teams across Microsoft Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which is a huge organization - they have \Nseveral teams with different Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,uh, they have Sr. developers, \NJr. developers, managers, everybody Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,all working on a different product. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,They surveyed all these people to ask them\N"What is it you get out of code review? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"What do you like about it, what do you \Ndon't like about it?" Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,When they were done surveying them,\Nthey watched them do code review Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and asked them questions afterwards. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And, finally, they looked at all of the \Nfeedback that was given. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Every comment that was logged in their\Ncode review system. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And they manually classified it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,They said "This one has to do with a bug\Nthat they found. This one has to do with Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a style comment. This one has to do with \Na possible alternative solution." Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So after doing all this work, \Nwhat they found was that people Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,consistently ranked finding bugs very high\Nas a reason for doing code reviews. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But in the end, it was actually a lot less\Nabout finding bugs than anyone thought. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The chief benefit they saw from code \Nreview were Knowledge Transfer, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Increased Team Awareness, and\NFinding Alternative Solutions to problems Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That sounds a lot more interesting to me\Nthan hunting through code looking for bugs. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Through this process we can \Nimprove our team. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,One person involved in the study \Nsaid this: Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"Code review is the discipline of\Nexplaining your code to your peers Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that drive a higher standard of coding. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I think the process is even more important\Nthan the result." Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I really do like that last part\Neven though it's not on the slide, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The process is more important\Nthan the result. And we're gonna talk Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about that today. Just by going through\Nthe process of code review the right way, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,we're going to be improving our team.\NRegardless of the actual results Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that we're seeing on any individual change. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But I also like the definition here\N"the discipline of explaining your code Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to your peers." I tweak\Nit just a little bit to say Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,rather than trying to explain it to them Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Code review is one of the few chances we\Nget to have a black-and-white conversation Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about a particular change. We often talk\Nat abstractions Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,like when we come to conferences\Nlike this, we talk in large abstractions Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about things. And those are really\Ncomfortable conversations. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,In code review, we have to get down \Nto the implementation details Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and talk about how we're \Ngoing to apply these things. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, like so much else that we do,\Nit's a communication issue. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If we get better improving code reviews,\Nthen what we're really doing is improving Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the technical communication \Non our team Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, the study also found that\Nthose benefits I cited earlier Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,were particularly true for teams that\Nhad a strong code review culture. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, what does it mean to have a\Nstrong code review culture? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,To me, it means that your entire team\Nhas to embrace the process. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Everybody has to be involved. It can't be\Nsomething that the senior developers Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,do for the junior developers. \NIt's a discussion. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That's what we're after here. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, as I mentioned earlier, \NI've been doing code reviews Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,for over ten years now. But only in the\Nlast 2-3 have I started to see a real Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,improvement in what I'm getting out of\Nthem, and in myself because of them Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And so why is that? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I think it's because I'm part of a strong,\Ncode review culture at thoughtbot. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And, at thoughtbot we often go to clients\Nof various sizes to help them with issues Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that they're having. And nobody comes to\Nus and says, "I really need help improving Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the code review in my team."\NThat never happens. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But when we get on the ground\Nwith those teams, we often find Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that there isn't a strong\Ncode review culture. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,One of the challenges that we have\Nis how do we get people to have Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this culture around code reviews. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And there are a lot of little rules that\Nwe suggest following in our guides. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But if you look at them, you can \Nreally boil them down Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to two key rules of engagement, \Ntwo things that you can do today Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to start getting better at code \Nreviews with your team. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The first of them is something \Nthat you can do as an author. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The second is something\Nthat you can do as a reviewer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,when you're providing feedback. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So first, as an author, \Nwhat are we going to do Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to make sure that our code reviews\Nget off on the right foot? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, this quote here is from Gary \NVaynerchuck and he was talking Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about social media marketing,\Nor something, not interesting. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But, it's also applicable to code reviews. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Believe it or not. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, in a code review, your content\Nis the code, it's the diff Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it's what you've changed. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The context is why that's changed. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Your code doesn't exist for its \Nown benefit. It solves a problem. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So the context is \Nwhat problem is it solving. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That study I cited earlier found that\Ninsufficient context is one of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,chief impediments to a quality review. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, as an author, we need to get, we need \Nto know this and get out in front of it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We're gonna provide excellent context\Naround our changes. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So let's have a look\Nat a real world example. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,This is a commit, or a pull request title,\Nthat you might see come across your email. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"Use type column first in\Nmulti-column indexes" Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The specifics here aren't \Nparticularly important Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if you don't understand what this means. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The problem here is that \Nthere is no why. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, I can look at this change\Nand I can say "Well, yeah, this changes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the order of the indexes, or the order \Nof columns on multi-column indexes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But I can't tell you if that was the best\Nsolution to the problem you're solving. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I can't really learn anything from it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, this is a loss. It's not interesting\Nfor me to review, and it's just going to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,get a thumbs up and move on. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Actually, what I would do with a change \Nlike this is comment and say, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"Can you provide some more context here?" Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And a lot of times, what we find happens,\Nis somebody updates the pull request Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,or adds a comment that says \Nsomething like this. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, okay, so I guess you guys \Nthink that's not better, which is true. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That's not better. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, this is probably a link to Github \Nor maybe it's a link to Geer or whatever Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,your issue tracker is, right?\NAnd a lot of people do this. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,They'll provide a short explanation and \Nsay, "For more details, see this ticket." Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But what you're doing there is you're\Nmaking the reviewer hunt for this context. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If they click this issue, are they gonna \Nsee a good description of what you're doing? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Probably not, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,They're gonna see a report of a problem,\Nmaybe some discussion back and forth Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about how to solve it, and then maybe\Na link to this pull request or something. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But they've got to go through all this\Nand they've got to hunt for that context Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and put it together until they are in the \Nright frame of mind to review the changes, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to tell you whether or not \Nit is the right solution. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, here's an improvement. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,It's not important to read this, again. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, what we're doing is identifying \Nthe problem with index ordering. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That's what we do first. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Why is it a problem? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We're gonna back it up with some \Npostgres docs, and those link off to more Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,information if you need it.\NAnd because this particular change Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,was a change to Rails, and we need\Nto be concerned with multiple adapters, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,we're also going to back it up with some \NMySQL documentation. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And finally, we're gonna talk about \Nwhy this is the best solution. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So that's a lot of context. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But it's important to note that now, as\Nsomebody is coming along to review this, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I know why this change is being made,\Nand maybe I'd even learn something about Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,how multi-column indexes work, by reading\Nthrough some of this documentation. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So there's value for me to review this. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, as an author, we're going to \Nprovide sufficient context. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,What we're trying to do here, like Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,You've been working on this change for\Nfour hours, two days, however long Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it took you to fix this, right? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,What you need to do is \Nbring the reviewer up to speed. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Let them know what you learned\Nin this process, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and put them on equal footing with you. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So I challenge you to provide\Ntwo paragraphs of context Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,with every change you made. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,At first it's going to be really painful,\Nand there are some changes that it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,torturous to describe in two paragraphs. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And yes, it's going to take you more time. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But how much more time? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I don't know, like, five minutes, maybe? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And it avoids a whole round of,\Nthat round of questioning I described Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,before, like "Why are you making this\Nchange?" So we've headed that off. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And the extra bonus is that all of that\Ncontext we saw earlier Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,gets to live on in the commit. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We're gonna squash that \Nand we're gonna save that. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So rather than that one we saw before\Nthat had an issue - a link to G or a link Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to Github, that's going to go away\Nas soon as we stop paying that bill. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But our git history is going to stay with \Nus, and we're going to see that there. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Ok, so that's what we can do\Nas an author. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,What about as a reviewer? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,What can we do to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,make it so that our \Nfeedback is well received? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We like to call this\Nask, don't tell. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,To start off with, it's \Nimportant to note that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,research has shown there's a negativity\Nbias in written communication. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That is to say if I have a conversation\Nwith you face-to-face and I give you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,some feedback, or maybe \Neven over the phone, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,just in a place where you can hear \Nthe tone of my voice, hear the inflection. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,You're gonna perceive that one way. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If I give you that same feedback written,\Nlike in the form of a pull request review, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it's going to be perceived \Nmuch more negatively Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, it's important that \Nwe're cognizant of this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,negativity bias in our\Nwritten communication. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We have to overcome this if we want\Nour feedback to be taken in the right way. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,One way to do that\Nis to offer compliments. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I would suggest that you do that. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, if you find something in a \Npull request that is something you learned Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,or is something that you think \Nis done particularly well, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,those are great to call out. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,It lets everybody know that... Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"Yes, you taught me something. \NThat's great. Thank you very much." Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Rather than just always nitpicking\Nat the change. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But, there's gonna come a time when\Nyou need to provide critical feedback