Soft Skills Engineering - Episode 30: Reaching Consensus and Code Editing Etiquette

Episode Date: October 8, 2016

In this episode, Dave and Jamison answer these questions: How should you reach consensus on a team? Should you always have consensus? What is the etiquette around editing code in a shared reposi...tory?

Transcript
Discussion (0)
Starting point is 00:00:00 It takes more than great code to be a great engineer. This is Soft Skills Engineering episode 30. Can you believe we made it to 30? Yes. Because we just did. I didn't doubt us. I'm surprised the producers haven't canceled us yet, those TV execs. Yeah.
Starting point is 00:00:20 Well, if we get canceled, then we'll just develop a cult following. I was just about to say, I think we've produced more episodes than Serenity. and better too obviously no controversy there oh poor serenity rip you mean firefly right oh did i say the name of the movie and not the tv show i always get those confused yes i did mean firefly but serenity is ratted also okay should i read our first question absolutely i will do it how do you reach consensus on a team should you in meetings it's hard for some leaders to reach consensus with a team like for example whether to use doc strings in python code what styles have you seen work well for managing this how
Starting point is 00:01:05 do you make sure everyone on the team gets a chance to be heard without being stymied stymied that's like a 64 word yeah this is from an anonymous listener um so thank you thank you mysterious stranger thank you okay uh consensus so what is consensus do you want like a dictionary definition agreement yeah i think that's does it does it imply unanimity i don't know all right let me let me check really quick i just got my mechanical keyboard working again so you can you can tell i'm yeah it sounds like a sounds like a machine gun range consensus general agreement
Starting point is 00:01:52 oh that doesn't sound like you that's not very helpful so consensus on a team what i would ask is why do you need consensus like what's the point of getting consensus i'll tell you why because i absolutely refuse to put on a pair of socks until i have a hundred percent buy-in from my whole team they gotta be right yeah otherwise the morale suffers that's right um i guess to me the goal of consensus seems to be to make sure that everyone is i guess i i joked about morale but it seems like a morale thing that Um, hopefully if you decide something, people won't just be like rebelling and doing the opposite, but they might be grumpy about it if they feel like they don't agree with the
Starting point is 00:02:43 decision. So maybe go ahead. I was going to ask then, is it, is it about making sure that everybody gets their two bits in or is it more about making sure you have good outcomes on the team? Yeah, that's, that's what I was going to say that if, if the goal is morale and if, if you can make people feel like, okay, I expressed my concerns, they understood them. there are these valid objections and we went a different direction even though i disagree like they listen to me maybe that's enough uh to to to achieve the same goal which is you're all moving
Starting point is 00:03:16 in the same direction and no one's no one's like sabotaging the ship yeah that can be a bad situation so it's more about making sure everyone can move forward see i don't even know i just i really have a hard time with defining this one even though i know when consensus is working right like i know i the feeling on a team is like really apparent yeah well there's an easy example in the question about about some kind of code style issue or kind of documentation style issue like whether you use doc strings in python code and and you could substitute that for whatever language and style issue you want um in my experience those those are fraught discussions because everyone has strong opinions about code style and and yet it's really valuable to have
Starting point is 00:04:02 an agreed upon code style as a team so how would you do it that way it's it's basically impossible to get everyone in a room and have them all agree on every aspect of code style but somehow it's it's valuable to have a shared team style so how do you do that yeah because a lot of times it just ends up being with whoever has the strongest personality gets to govern what the code style is yep yep i've known lots of people like that where they win arguments through exhaustion people just give up because they're never gonna that the other person will never give up so i have argument stamina yeah exactly they just win because they're still standing and everyone else just walks away it's like whatever i don't i don't care they were like well i guess my style
Starting point is 00:04:42 was best um it is true and these these conversations can go way too long and it takes a strong leader to stand at the front of the group and say okay i think we've discussed this enough um if you feel strongly about it come talk to me privately and if not i'm gonna send out a style and or like a maybe i'll send out an email or write a wiki page and uh if i get enough plus ones we'll just go for it you know yeah that's a great point about the length of time thing where you sometimes there's value in any decision and you just got to make one and if you're worried about everyone agreeing 100 and not making anyone upset then you might just be paralyzed about uh about two years ago we were um going to implement code reviews at my current company and i was the the lead of the
Starting point is 00:05:32 engineering team and we had about 30 developers on the team and we were going to choose a web-based code review tool and we basically had several contenders and people felt pretty strongly about it they were like well i've used garrett in the past and i've and other people said i've used review board and there was this you know there was github of course which we couldn't use for contractual reasons but and then there was this up-and-coming project called git lab which is basically an open source github clone and it was my job to basically lead the team to choosing the right tool and notice how i that's how i felt my job was and i didn't say to choose the right tool but my job was to help lead the team toward it and i actually had several meetings
Starting point is 00:06:12 where i actually asked people hey if you have opinions about code review tools i'm going to schedule some time and sit down with you and collect all your thoughts privately, like one on one, tell me everything you like and dislike about various tools and options around the table, rather than having like, okay, we're going to do a gigantic roundtable meeting with 30 people, and everyone's going to try to chime in, you know, and it actually came out, it was pretty fruitful. And we ended up making a choice. And there was not consensus 100%. There were people who said, I would rather have x or y. And, but it still worked out because everybody had a chance to voice their concerns and when we when i finally did present the final choice i was able to say
Starting point is 00:06:49 look here are the trade-offs we're making here's the good here's the bad you know this one has this feature that's better than this other thing but it doesn't have this which this other thing does have but we're not choosing it and i think at the end of the day we were able to be productive and work without getting stuck into argument by exhaustion that makes a lot of sense how do you decide when it's been enough time when you've heard enough feedback because there's always some in these kind of decisions if there's not some element of trade-off then the decision is easy and you don't it's clear you don't need to worry about people being mad because because everyone will agree so you're you're in a place where you feel like you kind of know what people
Starting point is 00:07:33 think and there are just different things that seem balanced against each other how do you how do you actually as a team member or a leader how do you participate in that like in a if you're like in an open discussion with everyone at the time is that what you're saying like no not in an open discussion just just a team like i'm not thinking about like the time when you're all in the meeting together i'm thinking about how you get to the decision however however i don't know however that looks i mean i think once you've heard from everybody you know you're never good by the way you're never going to hear from everybody because there will always be team members who just don't really care that much right or at least aren't expressive enough to
Starting point is 00:08:12 really go after it with you but when you start hearing the same things repeated and you haven't you've talked to several people and you haven't heard anything new i think that's when you say okay i think i've pretty well fully exhausted this space you know and then you have to make a call i'm talking so you say you make a call is your are you saying that the leader is is responsible for um sifting through it all and making the decision um not necessarily in fact no in fact i would say specifically no because the best decisions are the ones where the team like obviously the best easiest would be like you said if everyone already agrees but that would actually be a terrible situation um but i think uh the leader doesn't necessarily
Starting point is 00:08:57 make the call but when they do present the final decision it's like the team feels like they all arrived at that decision together that's the best situation even if it disagrees with their personal opinion yeah this is all pretty amorphous it is very amorphous because this is such this is like the softest of the soft skills this feels really really context super soft yeah just marshmallow downy soft i'm thinking about when this has happened throughout my career and i feel like i've seen all kinds of cases where it's worked well and where it hasn't worked well and it's very wildly what the approach was and it doesn't seem like it's correlated very strongly with what the outcome was like i've i've been on teams where it was uh someone took feedback from
Starting point is 00:09:50 everyone and then they just made a decision i've been on teams where it was just top down someone just made a decision they didn't even get that much feedback i've been on teams where there was exhaustive in-depth discussion for a long time and the team made the decision and all of those things have worked and not worked and and by worked i mean like were good technical decisions and the team was happy with how it worked out later on so i don't really know yeah there is definitely a way you can do it wrong which is letting it devolve into like you said like this stamina situation where people start repeating themselves yeah like once you've heard the same argument more than once from the same
Starting point is 00:10:30 person in one of these conversations it's like okay we're done here you know like you've already trotted that argument out and now we need to put it to rest yep so how do you figure out when you need to actually build unanimity with these kinds of things like what what is there like a certain level of importance on the decision that like the higher the importance the more unanimity is important um i don't i don't think so i'm i'm just trying to think and and really this one seems so so incredibly context dependent that i'm having trouble coming up with hard and fast rules yeah i think you're right i mean as far as like what the outcomes are i think for approaches it makes sense to make sure the team feels heard i think you could go either way between the team
Starting point is 00:11:21 making the decision and the team lead hearing everybody and making the decision but if you with either of those if if the team feels like they've been heard i think that seems okay i think that's a number one ingredient and there's probably trade-offs uh you you might be trading more time efficiency if one person is responsible for making the decision like they'll just hear it all and then go off in a room and then come back and that's the end of it versus the team might kind of go back and forth a lot yeah it's i guess it's it's hard to make decisions as a group if you if you have disagreement and there's no one in charge of resolving that disagreement if it's just everyone's job to make a decision um it tends
Starting point is 00:12:03 to just kind of stay with whatever it is right now i would say it's actually impossible yeah based on human experience yep yeah i've i've definitely been on flat teams and they have some great things and one thing that's really hard is making broad technical decisions like this or for example like should we switch to a new database or or what tech stack should we build this new thing in or whatever those kind of things where there are lots of opinions and everyone's opinion counts the same and there's no one in charge of gathering them all and kind of uh collating them those are those are hard they just stagnate yeah or like uh i don't know we haven't had great test coverage should we add 100 test coverage like those in in my experience those
Starting point is 00:12:48 work way better as you need 100 test coverage than like what should we do and then you all just talk about the trade-offs forever until you die and then it doesn't matter well i guess it didn't matter we're all dead yeah so i read this tweet from julia evans a couple of weeks ago that i I think she might be the most quoted person on this podcast. I feel like I've quoted her like four or five times. We should reach out to her and say, hey, you just earned an honor you didn't even know you wanted. She's like, I don't think it's an honor. So she said that, you know, it's hard to read a tweet sometimes, but it says,
Starting point is 00:13:27 old Julia says, it's hard to build consensus around decisions. New Julia says, getting 10 people to all 100% agree with you isn't how you do it. and i think that's totally true but it's so hard to figure out what is the subset of people that need to agree before you can really proceed and do you remember we talked about oh this uh it was a great changelog episode um interviewing the guy who created the c4 the code contribution their community code contribution contract or something and one of the aspects of it which we've talked about before is that you always move forward which means that if you have a problem with the way something is done, then you show your willingness to fix it by doing something
Starting point is 00:14:10 additional. Like if you have a problem with the way some code is written, submit a new pull request to fix it rather than just stymieing an existing pull request. And I think that with decision making on a team, that's important too. And it's like, Hey, you want to help write our style guide? Great. You can contribute. Your input has to be that you have to help write it. You know, it's not just, I have to say some things in a meeting and suddenly they become gospel. Sure. you know like the barrier to entry there is too low and so i think that'll help weed out the people who really don't actually care that much because sometimes engineers express an opinion and it
Starting point is 00:14:41 sounds like it's life or death but really they don't care that much right they're just saying what they think i have done that and i've seen other people do it too you just you just want to feel like you've thrown your blurb in and sometimes it feels powerful to have a strong dissenting opinion so you just i don't know it just comes up from nowhere yeah not to mention as engineers we're basically trained to identify the outlier in the edge case right it's like hey i just want to point out that if we do that database we're not going to be able to do inner joins everyone hear me you know yep like oh and that hush falls over the crowd dave knew that wow how did he know that what an impressive human being so i think as a contributor you need to
Starting point is 00:15:25 avoid that and also make sure to share not just your opinion but the strength of it as well like you could say i feel really strongly about this or i don't feel too strongly about this and then share your opinion that's a good point about strength of opinion that also made me think of um that there are some decisions that have larger impact than others and some that you're probably more okay uh kind of steamrolling people on or having dissenters on um something major like the core architecture of your product or or the the programming language that you work in every day that one you might want to try a little bit harder to get consensus but something like i don't know the the style of your documentation that that the outcome of the of the decision is not going to
Starting point is 00:16:16 affect things as much like for for some reason i i tend to get really really uh heated about little tiny style things and and i just need to be steamrolled in those because really they're not that big of a deal even though i have a strong opinion about it right but like say they follow my opinion or they don't the the delta between those two is probably not that big so and and it's mostly in your head in your particular brain i mean yeah that's where most of the delta is yep yep exactly every time you type a semicolon you're like i wish i didn't have to type this semicolon dave i am a weird human being because as soon as i said that i thought what about some visionary that finds out about this new language that's so productive and will like change the teams
Starting point is 00:17:07 the course of the team and they just make everyone do it and then they're all better off like you hear these stories sometimes uh i'd really love to hear the next blog post from like two years later once they've been using it for two years but but i feel like i have heard these stories about like this one person just really loved closure or whatever and they started using it and then the team fell in love and we're so glad we're using it's so awesome and yeah but for every one of those there's 10 people who try to do the same thing with haskell yeah you know and they didn't get the blog post yeah that's true there's no glory in avoiding success at all costs no no offense hasklers we love you guys but just wanted to make just wanted to use that
Starting point is 00:17:46 closet haskler that's good i i feel comfortable with you insulting my people all hasklers closet has i'm just basing that on their mantra of avoiding success at all costs there are dozens of us dave careful okay do we so speaking of consensus do we have consensus on this question i think we it's easier to identify the things not to do than the things to do and let me just try summarizing the things not to do you should not let these conversations spiral out of control into long running conversations. And you should not exclude people's voices inadvertently by choosing forums that aren't conducive to everybody contributing, right? Like not everybody is super comfortable just piping up in the middle of a, you know, 20 person
Starting point is 00:18:39 meeting. Um, and what else? Are those the only two things? Yeah. I think if, if you are a leader, So I'm going to say some things to do. If you're a leader and you're in the model where you will make the decision, if there are dissenters, I think you owe it to them to put effort into making sure they know that you understand their concerns, even if you disagree with them. I think that would help them feel better about it. if you're a team member if you feel like you're in a situation where the team has just been spinning its wheels i think it's perfectly fair to say like hey we're kind of going in circles and we we need to make a decision um and and that will work even better if you say and i'm i'm okay like i think this is the right thing but i'm okay if the decision is something else but we just need to make some progress yeah i like that and in fact the other thing i like to do is say hey everybody if this doesn't turn out how will we know and make sure people can say like for
Starting point is 00:19:41 example on the coding style thing like you were pointing out a minute ago there's probably not going to be huge dire repercussions if he goes if you choose the wrong one right but you could say how will we know so first of all establish like some kind of metric for success like if if this goes well it should look this way if it goes poorly it would look this way and then also put like a pilot period on it and say you know what we're going to do this for a month and see how that month goes and at the end of it we'll look back and say was it good or bad and i know some decisions you can't really do that with because they're too too much upheaval but with a lot of them you really can you know and just say hey we'll try it and see how it goes it was going real
Starting point is 00:20:17 well and then the moon turned to blood and we switched back to using single quotes instead of double quotes in our javascript strings and then it was fine and the moon yeah the moon blood color turned unbloody cheese yep back to cheese all right i think that means the question has been answered consensus achieved we did it do you want to read our second question dave yes this comes from listener kevin stone the subject is code editing etiquette which by the way is a tongue twister try saying that five times fast you said it impressively well editing etiquette it takes all my concentration what you didn't see is dave just slumped over in his chair in exhaustion okay from listener kevin stone he writes what is the etiquette around editing code in a shared
Starting point is 00:21:08 repository to put it simply there are two cultural factions at our company one is the older generation who has been at the company for over 20 years and feels very strong ownership of the files they touch the other consists of relatively newer but still senior engineers who prefer a more collaborative approach and don't mind if code they work on has changed frequently i often find it difficult to navigate the divide between these two approaches so what do we advise maybe we can talk about what you think the ideal etiquette would be just in a vacuum and then and then see if there are differences here so like the because maybe this is fine right like i don't know that's fine somebody punches you in the face when you when you edit their file it's okay you shouldn't
Starting point is 00:21:50 touch their dang file that's what you get told you not to touch my file johnny not in my house i was thinking we could explore the tongue twisting nature a little bit more and say what if it's editor editing etiquette okay edit don't edit my editor editing etiquette oh what if you're writing a document about editor editing etiquette would that be editing the editor etiqueting etiquette document you've lost me i just slumped over my chair again so so what do you think it should be like in the ideal world this is this is going to be purely opinion on my part um because i think that's weird you mispronounced fact
Starting point is 00:22:38 this is going to be purely my fact but um it seems to me like a healthy team is able to work in each other's code this is my experience and as soon as you have a piece of code that can only be edited by one person you have two problems the first one is a bus factor which you know it's kind of the gruesome metaphor which says what if this person gets hit by a bus and dies then what because of course at that point the only thing you need to worry about is the code no not the undo redo code oh that's so our quarterly profits are gonna suffer percentages that's so heartless um so the bus factors is number one thing to consider but the other one is um how do you know that that
Starting point is 00:23:35 code is like um well i guess really it's just the bus factor like i was gonna say how do you know it's like able to be maintained by your peers and high quality and stuff but but really that just goes back to the the bus factor like anytime you have one piece of code that can only be touched by one person you have a problem if that person disappears or goes on vacation or gets sick or any number of things yeah i think there are that feels right to me there are some places that practice um kind of like radical no one can own any code and they're everyone works in every part I think there could be value in that what I prefer is so definitely anyone can edit any code but people still kind of have just areas of specialty maybe because they've developed a
Starting point is 00:24:17 feature and I don't I don't know that you need to aggressively stamp those out but I agree with the premise that I should be able to just pull open any file and change a thing and make it better add a feature yeah and and I agree with that as well and when I say there shouldn't be ownership like that of a person sorry that a person shouldn't own a single file i don't mean that teams shouldn't own files i do actually believe team ownership is important because otherwise when there's a bug like who fixes it like who's who's on the line to get that done you know yeah that makes sense excuse me so i actually still remember the first time i still as if it was that long ago i still remember the first time i was a team lead it has been 10 years but i remember it
Starting point is 00:25:03 was me and one other developer and we were tasked with creating this new product together and we had had these nice conversations about how it was going to go and we talked about the architecture and stuff and then i got sucked into some meetings at one point and he just went whole hog and implemented a ton of stuff and i came back to the office and he's showing me all the stuff he built And I'm like, oh, oh. And at first I felt like this twinge of frustration, like how could you go behind my back and build all this stuff without talking to me?
Starting point is 00:25:32 I'm like, how am I going to edit this code in the future if I don't see how it's written? Or, you know, and I got kind of upset. I didn't really verbalize this. This all happened over the course of just a few seconds. But then I realized as the light drenched me, so, you know, rolled over me, the light of enlightenment, it hit me like a bus.
Starting point is 00:25:51 Did you get that? i did but you're supposed to laugh we don't have a laugh track jameson anyway the i got a little bit of enlightenment and i realized hey my feelings on this are unimportant i can catch up on this code i can get it i can figure it out but progress was made and that was the important thing and i've realized at that moment that i had to learn to let go so that other people could make progress on the project without me like hanging over them and you know reviewing every line and and uh just basically micromanaging so i did i let go and now i know there is no spoon there is a bus though there is a bus
Starting point is 00:26:36 so yeah it sounds like we agree that this is a bad situation this is a bad and wrong situation what does uh what does kevin do about it so that's it depends on his role on the team like is kevin responsible for this team or is he a contributing member of the team kevin is a dang whippersnapper he has not been here for 20 years i i'm assuming he's part of the other generation of newer but still senior engineers um which is the same thing as a little baby to the older generation you can edit my code as soon as i don't have to change your diapers yeah yeah once you tell me about the time you shook ronald reagan's hand
Starting point is 00:27:25 oh wait you didn't because you weren't alive yeah i i do think 20 years is a really long time to stay at the same company i just do i mean not all companies are like this but wow or at least to be working in the same code base good greek let's be honest that's a long time for a company to exist a software company yeah that's true uh yeah so you were talking about whether he is a leader or a member on the team so how do you influence the team to change this behavior without um basically tattletailing right yeah yeah i mean well even what if uh actually go ahead never mind i was gonna say that in this situation, I would probably have a conversation with the team leadership, but you have to be
Starting point is 00:28:19 careful not to come across as a tattletale because the last thing you want is to undermine the people on your team and throw them under the bus. Another bus metaphor just got in there. That's our third for those of you that are keeping track. And the way that I would do that is I would go to leadership and say, hey, I just want to understand our process and our, you know, areas of responsibility and how we work is this cool you know this way like is it okay is it cool if i edit other people's code or is that just completely taboo you know and make sure that the leadership on your team which is maybe even more than one person are aware that this is happening and then let them make a decision on it there because it could be that they don't realize that this level of code hoarding is
Starting point is 00:29:04 going on it could also be a thing that has just sprung up kind of yeah over time without any intention like it evolved yeah so so um not even that they don't realize it's there but that they they're kind of aware of it in the background but they're not yeah they're not they're not recognizing it as a problem and it definitely definitely is a problem it's like the missing step problem have you heard that before no this is like where you have you live in an old house and it's missing a step on the stairwell and everyone's lived there so long that they've just gotten in the habit of stepping over that step but then someone new moves into the house and they literally fall through the stairs you know and everyone's like oh why didn't you just
Starting point is 00:29:48 step over it it's like well i what a dummy you can't even walk on stairs so that that's what this feels like to me it's like if what you're saying is true james and this kind of evolved it could be a missing step missing stair step so um you can talk to the leadership and bring it up And then hopefully the outcome of that would be them kind of, I don't know, recognizing it's a problem and talking to the team and saying like, hey, everyone can edit everyone's code. Make sure they're not breaking your code or our code. See, I even did it. Make sure they're not breaking it, but it's not your code. It is our code.
Starting point is 00:30:25 See, and if I was in this situation, if I was the leader of this team and this complaint came to my ears, the first thing I would say is, where's our code review process? because a good code review process could probably mediate this situation how so well because it feels a lot different it feels different to me to have someone edit my project and then like say push it to production than it does for them to send me a pull request which is very different it's it's like asking forgiveness versus permission right you're like saying hey can i edit this code in the following way and give me feedback it gives you a chance to give feedback to review make sure it's going to be solid rather than saying hey you know just so you know i broke into your house last night and rearranged the furniture in your living room i hope that's cool i love what you've done
Starting point is 00:31:13 with the place it's so cool okay so you know mentally like psychologically even if you like the way that they rearranged your furniture you're still going to be upset so it's like a softer way of of introducing them to the idea that you are going to be editing their code instead of them just finding out and and it being a surprise okay and that makes sense even in the code review language that we often use like pull request merge request these words are like permission words right it's like i am requesting to edit your code yeah you know and i mean hey on open source projects it's not like we just give open commit rights to everyone right there's a review process and that means that there's ownership and yeah we don't just allow anybody to come in here and edit
Starting point is 00:31:56 stuff yeah so on a team you know why not have the same thing and i think this i think it would help a lot in this situation i'm just assuming that they don't have code review already yeah yeah i'm i'm reading the question again what if it's so bad what if it's so uh balkanized that um you're editing like 10 people's files if you're just making a change because often you have to make a change in a bunch of different files for a feature and what if the problem is just you're just like crossing so many borders that everyone is mad at you hmm I that seems like it just has to be a top-down thing at that point yeah yeah because Dave you mentioned this um when we were prepping you said that this is this seems like a symptom of a broken culture and yeah that's
Starting point is 00:32:47 really hard to change is just an individual member on the team with the authority of just like a person on the team yeah it really is hey heck it's hard to change culture even if you're the team lead yeah exactly if if you're highly influential on the team it's still really hard let alone if you're if you're kind of pushing against the the grain um i think didn't you have a story about uh yeah i do have a story about about something yes about words so i i have been in this situation before where it was a little bit less stodgy and formal the way that i'm hearing it described in this question but there was one time when i i learned that a peer of mine was working on a feature and i had also just learned about this new programming concept that i thought
Starting point is 00:33:35 oh this would be a perfect application of this concept and so i uh wrote up the feet the feature using this new programming concept and i made a diff and i emailed it to him and i just said hey check out this diff this might solve the problem i've heard about this concept and i think it really elegantly solves the problem that you've been trying to solve and he actually wrote back and was a little upset and he said you've now put me in a in a tough spot because i had a different solution in mind and now you've put me in a place where i have to choose between your solution which is already done and my solution which is not done yet but is different and more thorough than the one you've done because mine was actually a little bit of a shortcut and he was a little upset with
Starting point is 00:34:20 that and i realized that i've been in this situation before and i think that the key is in this situation would have been earlier communication with the people to say to them hey i want to make these changes but i need your help and guidance and just try to communicate up front what your intentions are rather than just saying here's your broken code i fixed you know hey i found all these stupid things and i made them smart that's a great point dave i um even if it feels like it's going to take you longer and there's all this overhead and you might have to incorporate some feedback that that on an absolute scale isn't exactly perfect or the thing you think is the right thing it can definitely pay um like productivity and team
Starting point is 00:35:11 dividends over the long term by by encouraging more collaboration i'm just thinking about some times where i've kind of like tried to cowboy code it up because i'm like ah these people don't know what they're doing i'll just do it myself and uh most of the time i was wrong but even the times where i was right it it i think it was still a net negative even because uh it just hurt the the team unity a little bit like you you kind of broke trust a little bit right yeah yeah exactly so so um this was the thing i had to learn that sometimes you can sacrifice like raw efficiency and productivity in the short term but it can be better overall if you just talk to people a little bit more yeah totally agree so i love that and that that might actually be a great solution i
Starting point is 00:36:00 mean pull requests are a a newfangled technology if people have been here for 20 years uh there's probably lots of code that's not on github or some other code review tool um so so just the old fashion code review of like look at this code on my computer uh or talking in person might be an easier or shorter term solution it's so hard though because there's like this mental block in my mind where it's different it's like sending a request like emphasis on the request to someone to say i'm asking permission to enter your castle well you could do it in a you could do it in a like a design doc then you could just say i mean you don't even need code written at that point you can just say hey i've looked at the feature here's my thoughts i think i'm gonna have to touch these
Starting point is 00:36:45 files too what do you think about it and yeah not make it explicitly like chief captain of this file may i may i modify it just say hey here's my idea and then if if they say your idea is awesome then that implicitly means you can touch this code ken has in your base yeah you can use words like proposal and uh like that to make it come off a little softer you know where you can say i have a proposal for an idea you know for a potential implementation instead of just saying here's how to fix all the things yep i like that idea one other key is this is a cultural thing but one other key culture element is to try to separate the concept of ownership from the concept of sole contributor. Like ownership should mean responsibility for something, not that you're
Starting point is 00:37:39 the only person contributing to that thing. In other words, if there's issues with it, like you have to help get them fixed, but you should, ownership means that you should create a environment where other people can contribute as well and still be productive. And I think they've actually conflated those two things here on this team yeah that's a thing that i think open source has really exposed a lot of developers to where there's usually some kind of owner of a project but all kinds of people just swarm on it and help if it's a large enough project and and lots of people welcome that participation because it means the code has more eyeballs on it there's more test coverage more features all that kind of stuff so but it also means you have to give up a certain
Starting point is 00:38:18 degree of control yeah you know you have to be willing to read other people's code yep and that takes time and effort and just get like furious messages on github about how much of a moron you are for not thinking in this use case exactly all right i think we've answered this question we definitely provided some answers we did code editing etiquette so this is a great question absolutely as with all of our questions if you uh are the asker or even a listener and find yourself in a similar situation and you uh either take or ignore our advice i'd love to hear the outcome of it and what happened afterwards absolutely we're just kind of tossing stuff out and it can be nice to see what comes back sometimes i would say we would especially like
Starting point is 00:39:02 to hear it if it comes out badly sure why is that serious i don't know just those are more interesting okay it's like i tried it and here's a new perspective your advice didn't work because of this other factor you didn't consider and it's like oh enlightenment as opposed to hey guys worked great you know high five if you're not failing you're not learning yeah just wait long enough that the pain has passed and you're not too mad at us anymore all right dave how can people hear more from us hit up our website on softskills.audio you can subscribe there you can link it to your friends and they can subscribe you can even listen to episodes in real time right there and stream them on the web page which is all good and fun and you can also hit us up on twitter if
Starting point is 00:39:49 you're a twitter user so follow us at soft skills eng where we publish each episode as it comes out you can be the first to know and that is also the place where you can submit your own questions that we will answer the questions we answered today came from twitter and we have so many in our backlog now it is fantastic we promise we'll work through all of them as quickly as we can feel free to send us a direct message on twitter you do have to have a twitter account to do that but you do not have to be a follower and we don't have to follow you but we might just dangle that out there yeah here's a little follower fruit that i'm dangling all right we'll catch you next week

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.