Podcast 274: Who’s afraid of a little merge conflict?
This week on the podcast, we talk about folks who like to create their own sandbox to cause and then fix merge conflicts. Better than breaking prod in front of the whole team I suppose?
Today’s episode was inspired by a question on folks who postpone a merge for fear of being the one to resolve a conflict. Shout out to Candied Orange for the thoughtful answer.
Paul and Sara reminisce about the days before Git, when version control was very different from what it is today, and Paul accidentally left many a project in shambles. Do you remember the days of Subversion and CVS?
Later, we dig into Sara’s new adventure with Jupyter Notebooks. They are extremely useful for developers, but what would it take to make them a tool for any kind of knowledge worker? Default to a PowerPoint style, obviously.
Last but not least, we dig into the endless argument over the 10X developer, Reed Hastings’ love for the 100X developer, and the true formula for attracting employees that will contribute their genius without wrecking the team. Clive Thompson has a great piece on the myth, meritocracy, and messy reality of rockstar coders.
Paul Ford Look, I mean, let me just say this very clearly to everyone listening. You’re a 10x developer, you’re an 100x developer, we love and support you.
Ben Popper Need to accept payments in your app? NMI’s omni-channel platform has powered payments for more than 20 years. It’s flexible, feature packed and easy to integrate on any OS. Visit NMI.com/podcast today to start earning more from your software.
BP Alright, good morning everybody.
Sara Chipps Good morning!
BP Welcome back to the Stack Overflow Podcast. Fall colors are here.
PF Went to the doctor, got my pumpkin spice injection. It was cool.
BP Mmm love that.
SC That’s so nice! I went apple picking this weekend, you go to the tree and you take apples off of the actual tree.
PF It really is wholesome, isn’t it? I’ve done it.
SC It really is. And it’s only $35 which saves you a lot on apples, you know?
PF Does it? [Paul chuckles] That’s a lot of apples. That’s like you need like, you now need to eat like a very large bushel.
SC I got like 10 apples, so.
BP Yeah, make a pie.
PF Only a few dollars and 50 cents per apple. That’s cool.
SC Per apple! What a deal! What could they cost at the supermarket?
BP You did the work of picking them, so obviously they should be cheaper.
SC Yeah, here’s $20, buy a banana.
BP A little question popped up today in our Stack Overflow knows feed. ”Do developers fear merge conflicts? I’m a beginner at collaborative development and I started learning about merge conflicts. And I have this question, is it possible for a developer to deliberately postpone merging? Because he or she doesn’t want to be the one resolving a potential conflict?” And then the first answer to this is ”Oh, god, yes. I broke build my first time.” [Ben chuckles]
SC That’s great.
PF Yeah, it’s real. You know, what I what I’ve noticed is that someone who is not a daily contributor, but kind of works on side projects, or people are helping me with something, or I’m going in and issuing a request, like, this is a hard, hard part of the world unless you’re daily managing merge conflicts in Git.
SC Yeah, and it gets easier once you do a whole bunch of times in a row, you know, because then you’re like anticipating it. But then when it’s been like six months, since you’ve had a merge conflict, and you hit a merge conflict, and you’re just like, oh, man, I think, I think I know to, I think I know what– [Ben chuckles]
PF Well it’s like, what’s, you know, so it’s like, what’s your merge tool? And there’s a lot of choices. There’s a lot of ways to like, visualize the merges. And then for me, I’ll be on the Mac, and it’ll pop up that whatever that thing is, that is the default merge tool in the Mac. It’s got those arrows pointing every which way, and they’ve tried to make it intuitive, but it’s intuitive, and like a 1990s, object oriented way, where it’s just like, it’s like speech bubbles all smashed together in some cartoon from hell. And you’re just like, where? And you click an arrows back and forth. And then if you don’t do it that way, if you do, if you’re like, I’ll just figure this out on my own. You just end up with these like 5 million broken files with greater thans and less thans scattered everywhere.
SC Yeah! It’s always what I do. I’m always missing two of them. There’s supposed to be two arrows right here and I’m like ”ahhh!”
PF Things can really go–like in you know, in Perl, how can you even tell? Like, it’s very problematic, and just stuff starts to breaking all over the place. First of all, Git’s horrible, like, Git is really good at what it does. But the interface is just rough.
SC Yeah, it’s better than Subversion, if you remember those days, because that was kind of like, yeah, there wasn’t such thing.
PF It’s just there’s no aspect of it that is intuitive. The same is true of Unix like, or like, look at how easy these little command tools. RM, it’s so short or eco. You know what I mean? It’s just like, I’m not punching cards in 1972 at an insurance company, like maybe you could cut me a break. But no, no, no, we’re all gonna learn. We’re all going to work together. And that’s what Gits like, but yeah, that the merges are, I find that to be the toughest part, or Git, whenever you get back in and you’re like, ”oh, we’re squashing in a certain way.” And it’s just like, culture builds up in development teams around aspects of Git usage. And you really do feel like an outsider. It’s so religious and important that everybody follows the same GitHub sort of practices and the same, the same workflow. That when you don’t know it, you feel like a complete clown.
BP And the answer here, which is from candied_orange, who I believe I shouted out for lifeboat recently, after saying, ”Oh, god, yes, you know, this is something that has happened to me and I broke bill” ended up saying I created like a toy project where they would go in and deliberately cause merge conflicts and then learn how to fix them the hard way. Which reminds me of, yeah, one of my favorite Jiu Jitsu instructors, you put yourself in, like, a really bad position where it’s like, I shouldn’t have got here, I’m in I’m in deep trouble. And then you figure out how to get out and just do that, you know, over and over and over and then by the time you get end up in that stuck position, you know your way out.
SC Yeah, that sounds very intense. Especially if you want to just merge what you’re doing and go on with your day. But practice makes perfect!
PF No, let’s contrast Jiu Jitsu. You know, martial arts discipline focused on the mastery of self and sort of finding ways to be in the world with software merging which should frickin work and be pretty obvious and intuitive. Like, it’s a very good simile. It’s a very good comparison you just created, but also it points to something really fundamentally broken in how our, that part of the developer experience works.
BP I don’t know. I mean, yeah, maybe in the future, there’ll be a little option that’s like, would you like me to try and fix this for you? And the AI will jump in and just try to do it, as opposed to giving you the arrows and the advice and hoping you’ll get through it yourself.
SC Yeah, the idea is, it’s supposed to do that already. And then when it gets confused, it gives you the RS.
PF Anyway, look, it’s Git’s world, we live in it. And as a result, we get to complain. God knows it was created by Linus Torvalds. So if that’s a person whose immune, immune to complaint.
SC I’m sure his email address is definitely on the internet in many places, feel free to send your complaints to him directly. [Ben & Paul chuckle]
PF Ahhh, Git is one, I mean, it is just such a world shaping technology too. Like, we just take it for granted now. It just, it utterly blew. Because as Sara was pointing out, Subversion and CVS, they sucked, they were really hard to use, and everything broke even even worse ways.
SC I remember like, like, it’s been a long time. But I think I remember like, no one could be in the same file at the same time type of situation, where you had to be like, I’m working on this thing, or like, lock some files.
PF Branching was really hard. And yeah, no locking, I think Subversion actually helped you through that there were strategies, but like, that was the great wrestling match, right? And so like, the thing that actually is underutilized is the decentralized aspect. The whole idea of Git was that anyone could have a full source repository at any time. And you could kind of meet up in the middle of a forest on a long hike and be like, ”hey, I’ve been working on this for months,” they’d be like, ”I’ve been working on this for months,” you’d be like, ”let’s let’s get together and create one shared repository.” So no, it was bad RCS, CVS, Subversion, they were tough. They still are, they’re still out there still doing their thing. But that that idea of like, just all the history coming with you, and it wasn’t centralized, and it was it was sort of all packaged together. The one, the thing about Git that is miraculous is that you really can shoot yourself in the foot. But you can undo, you truly can, as a, as a version control system, it’s really hard to completely hose it in such a way that you can’t ever get back. Whereas I remember trashing Subversion repositories and being like, ”whoops, sorry.” [Paul & Ben laugh] Like, we’ll never work again.
BP See that toy sandbox doesn’t sound so bad now.
PF Git is a land of contrasts.
BP Sara, you mentioned on an episode recently that you were starting to play around with Jupyter notebooks and trying to set them up. Have you made any progress on that project?
SC Tomorrow morning, I actually have hours set aside for exactly that. That’s the best way I can do, I can do these things. It’s just like, put some time aside and dig down and get started. And Nick, from our community management team has generously offered to help. So I’m looking forward to digging in, that’ll be fun.
BP What’s the, what’s the like, motivation? What are you going to once you get that good working? What what are you hoping to do with it?
SC I think the thing that I find myself doing often is switching between graphs and texts, and then pulling graphs into my texts by taking pictures, you know, I was like, I’ll be in Excel, I’ll have data in Excel, you know, like the typical product thing of getting your KPIs and data together, taking pictures, bringing it over to the Google Doc. So people can annotate it, that kind of thing. And Jupyter Notebooks, you can just do that right in the notebook. And people can see the data fairly easily and switch back and forth. So I think that that sounds like a nice skill to have.
BP The length of that sentence makes me feel like you’ve thought long and hard about this problem. [Ben chuckles]
SC Yeah, yeah. It’s just so elegant, being able to do everything the same place.
BP And, Paul, you’re a big fan, right? We’ve talked about this before?
SC I think it’s kind of like, you know how for a while you had designers that did designs, and then all designers knew HTML and CSS, you didn’t really know how that happened. When people knew how that happened, I was just kind of like, ”Oh, look at that.” [Ben laughs] And I think, I think it seems like one of those things that’s going to be like that, too. It seems like it’s very possible, you never know. But it’s very possible that it becomes a standard that some people are proficient, some people aren’t. But people start to prefer communicating in that way.
PF Do you want to know how to make interactive notebooks explode, in my opinion? How to make them take over the world?
SC Yeah, how?
PF The default presentation mode is not one big long webpage a la scientific paper, but rather a PowerPoint style presentation.
SC Yeah, people don’t like that. Yeah, I know. I think that’s exactly right. Someone’s gonna have to invent that because that community is not going to be amped when you do that.
PF No, that’s right, though. But like, like every chart should build with an animation and so on and so forth. Because the hard part with the notebooks, building them is, you know, if you know how to program building them is not that hard. They’re really good at it. And they offer an unbelievable amount of stuff under the hood. But they’re impossible to share to present, except to other people who are excited by receiving live interactive program centric notebooks, which is like not a lot of people. It’s the good people. It’s the people we love. It’s people we care about a lot. But nobody else wants to, nobody wants that. That’s the problem. Like no executive wants to ”Oh, good, a large, interactive thing that I don’t understand, how wonderful.” [Ben laughs] That’s just not what the market wants, right, the market wants, you know, just a nice interactive notebook that they can share with their smart friends.
BP So I guess this piece is a little bit old now. But there was a piece from Reed Hastings over at Netflix. Did you guys see this one? Paying sky high salaries to developers? Yes? No?
PF No, I haven’t, you know, ’cause my Google Alert for Reed Hastings must not have gone off. But what’s good, what’s happening?
BP Well, you know, there’s been a lot of back and forth about the 10x engineer. And you know, whether it’s a bad idea to sort of lionize certain people, as opposed to the team, and you know, that the idea of working together, and in this post, Hastings goes, goes really far out. He’s saying, the best engineers aren’t 10x, they’re 100x, they should be paid, whatever price is necessary. And the difference is not that they’re harder working or necessarily more intelligent, but that they’re more creative and have the ability to see conceptual patterns that others can’t. I don’t know, that gets us back to kind of that auteur idea that artists that lone genius.
PF Let’s take a step back. Why do we keep having this conversation? Right, like, I think there’s a couple–
SC Yeah, good question.
PF There’s a couple conversations happening. So first of all, I don’t think that it is a ridiculous statement that certain people are really smart and really productive, and other people are not as smart and not as productive. We know that. Now, the question is, who gets to make that assessment? And how do they get rewarded? Right? And is the smartness, is that gap closable? By more education and more support?
SC Yeah and why in programming is it uniquely like a 10x? Like, do we call it 10x journalist? Like, it’s probably like that guy is…good at journalism. [Ben chuckles]
PF Well, no, I mean, every now and then there’s like a breakout star. So there’ll be like Michael Lewis, Michael Lewis, is a breakout journalism star, who gets paid many more dollars per word than other people do.
SC Yeah, that makes sense that those breakout stars, but no one’s like, ”Oh, Michael Lewis, is 10x the value of any other journalist”
PF It doesn’t lock in the same way in the conversation. It’s just sort of, what happens is that a person can I mean, why does a person get the kind of success, it’s because they can, if you put them on the cover of the magazine, and they write an article, though, they will sell more copies, or they will get more people to pay attention to the publication. And that’s a really good thing that. So like, engineering is different, right? Like this is someone who can move a lot faster and make many more connections more quickly, and be really productive. An enormous amount of the time, if that person can’t collaborate and work inside of a modern product environment, they’re actually very destructive, because they only want to work on what they want to work on.
BP I guess, right, like the difference may be, as Sara is pointing out, like, why don’t we say this about other people, obviously, in sports, some athletes get paid 10x, you know, there are superstars in every field.
PF I think we’re using we’re using this, this conversation around talent to hash out a lot of the things that are just utterly busted in tech, right? Like, I mean, 10x engineers tend to look and behave a certain way and have a certain age. And, you know, they–
SC Yeah, that’s the thing. That’s the thing, too, is like, well, like the 10x conversation is very different than a conversation of ”this person’s talented, this person is good, this person deserves to be rewarded.” It’s like always been approached by like a binary, like you’re either a 10x-er or or you’re a non 10x-er, and, and so it’s like, where’s the spectrum here?
BP I mean, there’s a piece from from our friend, Clive Thompson over a Fast Company that digs into this and you know, names a couple of people who had big impacts, but I think sports maybe is a good analogy, which is like, sometimes you can have a superstar who’s getting paid a ton, but who isn’t a team player at all, and they can’t make the playoffs year after year after year. And it’s like, you know, this person, obviously has enough talent. But like if you can’t fit into the team, and it’s the same way with the code, like you’re actually not contributing, sometimes a group of slightly less talented but you know, better teammates are going to be the ones who succeed right?
PF This one is so hard because what you’re dealing with is like, you’re dealing, you’re dealing with, like capitalism head on, which is that if I can align certain people who have a set of skills and the ability to get an enormous amount done with the goals of my enterprise, oh my god, I can print money because they really are able to turn the product around so much more quickly, with so much less conversation. And that’s really exciting and motivating to me, comma, capitalist. But is that sustainable? No, probably not. It probably burns out in a couple years. And also anybody really smart and talented unless you are like a superstar company like Google, they’re gonna want to go do their own thing. Like Google is really good at that it captured like all the smart Unix people from the last 25 years and just dropped them into various labs-y endeavors. And what do they get as a result, they get things like Go, they get infrastructure, like you’re able to, they’re able to capture infrastructural change, and you know, language development, stuff like that, you know, really smart and talented people tend to kind of like, they go down the stack and they explore and they want to do art, and they’re weird.
BP Alright, cool. What else should we chat about today? I dropped a bunch of links and anything interesting happening in your personal work? Sara, you want to talk about–Sara’s always got a relevant XKCD she wants to go over.
SC Yeah, it’s very relevant. Because it’s, I think it’s every parent’s nightmare of their kids finding the message board they were complaining on when they were their age.
PF Yeah, that like old PHP, PHPBB message boards could easily be like, 18 years old now. And yeah, children, 15 year olds are finding their mother complaining, right.
SC Yeah, what would be embarrassing, how would your, what would your kids find that would be very embarrassing for you?
PF My entire online presence over the last 25 years?
SC Yeah, fair, fair.
PF Yeah, and I gotta I mean, literally, you know, they’re, by the time they get old enough to figure out they can Google their dad–first of all, you just have that faith in your children just finding you excruciatingly boring and uninteresting. They don’t want to know anything about you if they can help it. And that’s, that’s where we’re, you know, that’s what I’m counting on.
BP Yeah, hard to know, what does if they, when they go back and look at my early social media flailing, that kind of like is the is this my gong kind of stuff? Yeah, they’re gonna think that’s cute in a retro way, like a black and white photograph, or they’re gonna think that’s really embarrassing?
SC Probably embarrassing, embarrassing is the default. I think Paul has a good point, like embarrassing is the default, you just have to assume.
PF It’s all gonna be our fault.
SC No, no.
SC No, I can’t! No they can’t do that. No, absolutely not.
PF They literally, picture of Sara Chipps in the future in AI–
SC Standing idly by.
PF Mhmm Sara Chipps? She, she talked a good game, but what did she really do? And don’t worry, like, they will already have resurrected my consciousness and set it on fire.
BP Wow, Paul. I had no idea. You’re in for a [inaudible] end, and every day they resurrect your consciousness and torture and afresh, then they put you back to sleep at night.
PF No, that’s the buccos or Roko’s basilisk idea, right, which is that this was the LessWrong, you know, community online. And they’re like, you know, if you, in the future in AI, we’ll resurrect your consciousness and torture it for not supporting the development of the AI.
SC I don’t consent to that. I just want to say that out loud, on this podcast.
PF Bad news, bad news.
SC In case the AI goes around looking for proof.
BP Alright, I think we’re getting near the end. I’m going to shout out a blog post that’s up on the site today: How Stackers Ditched The Wiki. It’s all about us drinking our own champagne. I’ve been told we can’t we don’t we don’t say dogfooding out here, drinking our own champagne. But yeah, people migrating stuff over from wikis and email and chat and Google Docs to one place where your long form documentation can sit side by side with your pros. Moral of the story here is we’re not immune. We had lots of areas where documentation was broken and frustrating, like crazy. But there’s some interesting stuff in here from our SRL team and our IT team about what they’ve learned as they’ve tried to go through this migration. And I think the most interesting one probably, for me was like that, onboarding new people and letting them ask questions, capturing all the questions and answers that go into there. And then like, building that out fresh, it’s a great way to like educate the new people and do the documentation at the same time. So that was a cool little thing they came up with.
BP So, awarded September 24, our lifeboat of the week to Blank Space, ”In Collaboratory, CUDA cannot be used for the torch, and you got to click on runtime. It’s like change runtime type, now in hardware acceleration, select the GPU and hit save.” Keepin’ it simple.
PF Glad to hear that working out.
BP Alright, everybody. Well, thanks for tuning in. We appreciate you listening. If you have ideas, you can always send them over to podcast@stackoverflow. We’ll read your email and we try to incorporate your suggestions. I’m Ben Popper, Director of Content here at Stack Overflow. You can find me on Twitter @BenPopper.
SC And I’m Sara Chipps. You can find me at @SaraJo on GitHub. I’m our Director of Community here at Stack Overflow. And check out my friend Jeff’s Kickstarter. It is Bit.ly/booksKickstarter.
PF And I’m Paul Ford. I’m a friend of Stack Overflow. And you know what? Check out bitly.com/books, that’s that’s where I want you to go.
[OUTRO MUSIC]Tags: breaking build, git, jupyter notebooks, merge conflict