Soft Skills Engineering - Episode 327: Remote with onsite team and undercover refactor

Episode Date: October 24, 2022

In this episode, Dave and Jamison answer these questions: I have recently joined a team as a fully remote member, with majority of my team mates located in one city and meet in office every w...eek. My manager wants me to work on earn trust and drive consensus, to keep me in track for promotion. Being remote, I am unable to get through my team mates effectively, when compared to my previous work settings where it was all on-site. Any tips for me? Hi Jamison and Dave! I’m a long time listener and I really enjoy the podcast. I have a small question for you two: My coworker recently asked for my opinion on how to write some code and then implemented it a different way. They knew I wasn’t a fan of their implementation and even went out of their way to not get it reviewed by me. Now we’re left with this shared code that stinks. Their code works but it’s clunkier then it should be and it’s bothering me. Should I fix it when they’re on leave and guise it as a refactoring that “needed to be done” or should I leave it alone and try to learn some lesson from this. The other option is to quit my job but other this small hiccup - it’s been going ok here. Show Notes This episode is sponsored by the Compiler podcast, from Red Hat: https://link.chtbl.com/compiler?sid=podcast.softskillsengineering

Transcript
Discussion (0)
Starting point is 00:00:00 it takes more than finding the issue on an open source project that perfectly describes your problem reading through it all and uncovering a message that you wrote years ago that just says plus one to be a great software engineer this is episode 327 of the soft skills engineering podcast i'm your host jameson dance i'm your host dave smith soft skills engineering is a weekly advice show for all of the non-technical things that go into the technical field of software development like being able to look back on your previous open source comments and realize you've grown as a person and now you would contribute a reproducible example right instead of a plus one or to realize you still have the same problem and it's still unresolved yeah
Starting point is 00:00:52 it hurts that feeling of elation and hope and then the the sinking of oh no i've been here before yeah yeah then you wonder am i in a time loop and how many times have i done this i wonder do i just i wonder if i've ever had the success case of i came back to it and this time this time it's solved because i can't think of any but maybe it's just because that's less fun to think about well probably if it's solved you wouldn't come back to it so you kind of have a survivorship bias problem yeah but like one that was solved between
Starting point is 00:01:28 when I last looked at it and when I looked again yeah I only move forward I never look back so no need to well know what I did I don't know alright we better talk about our patrons alright let me thank the folks that are contributing at the level on Patreon where we say
Starting point is 00:01:44 their name or an emoji or an unpronounceable name in wales of a city every single week they are noah frazier loag kent c dodds taylor savin memester josh jenny kim owen chartle craig mutlin i love mavis the stochastic parrot alice jost no cheating lanfair pwill gwen glay glooks rundelow melendish go go go kashokton ohio patreon.com.au we're hiring ira chan monkey face emoji jonathan king testing is documenting.org If you'd like to join this illustrious group of generous donors, go to softskills.audio and click the support us on Patreon button.
Starting point is 00:02:29 And any donation amount above zero will get you access to our Slack community. Invites go out the first week of every month. And boy, are we excited to send them. Pressing that button is a highlight. I want to thank our sponsor, Hired. This episode is sponsored by Hired, which is the best way to quit your job and get a new one. And you will hear more about them later on in the show. Dave, would you like to read our first question?
Starting point is 00:02:53 I would like to. Here it goes. It says, I have recently joined a team as a fully remote member with majority of my teammates located in one city and meet in office every week. My manager wants me to work on earn trust and drive consensus to keep me in track for promotion. Being remote, I am unable to get through to my teammates effectively. when compared to my previous work settings where it was all on-site. Any tips for me? This feels like a question from the before times, doesn't it? It's fresh, though.
Starting point is 00:03:24 Yeah. I looked at the spreadsheet, the before times where offices exist with people that go in person to work. Yeah. I mean, the only clue that this doesn't actually... Oh, actually, it says meet in office. I was going to say the only clue here is they only meet once a week, but I think I misread that. They meet in the city every week in an office. maybe that does that mean weekly you think or or every day i mean the fact of the matter is
Starting point is 00:03:46 you've got a group of people here who see each other regularly in person and you're not one of them yeah that's hard i have a delightful co-worker who every time anything remote related comes up says the words telepresence robots as the solution to any problem it's sort of tongue-in-cheek but sort of not they just want to see one of the robots in person right yeah so i'm gonna say telepresence robots perfect are these the robots that are they're about the height of a human and they're on wheels and they roll around with a screen on the front and a camera and you can control them yeah yeah and it's it's just like real life yeah sort of it's just like real life if there's a little bit of lag and everything's in two dimensions and you
Starting point is 00:04:28 have no peripheral vision you can't make it's really funny for people to push you down and feel no sense of remorse if your physical being is is harmed right in fact in fact i think it's funny and it sounds like middle school now i don't know any company that uses those things but i have seen one presentation delivered on a stage like that but i don't even know what was it a joke no it was uh well i won't mention who it was or what the topic was just because it It might be controversial, but let's just say the person was fleeing from his government and hiding in another country. Ah, okay.
Starting point is 00:05:14 Telepresence was the only option that didn't involve federal prison. I still feel like just a big face on a screen is like, just project the video if it's at a conference. Yeah, I know, right? That's what makes it feel gimmicky. I think that was the point. Oh, okay. Attracting an audience.
Starting point is 00:05:34 with a novelty well it worked you remember it i know just like you remember all of their message you you totally remember the content completely yeah i think the content was yeah like just to summarize because i do remember every detail but i'll just summarize for brevity here which was i'm a telepresence robot we look at me i'm a robot right it was a 45 minute exploration it was very articulate deep memorable yeah okay i have i i have an idea which is you need to sabotage the in-person experience so that they all work remote in person i feel like the the often earnest advice for this is try really hard
Starting point is 00:06:30 it kind of sucks or the whole team has to work like the remote so everyone's on video even if they're in the same office and everyone writes over this is like the the least common denominator yeah yeah it turns out it's it's really hard to make people that sit by each other not talk about stuff yeah and like only type unless you foster an environment of extreme distrust of the spoken word okay and so i i think the way you need to do this is some kind of like signal processing that that like garbles i'm thinking of like a tower of babel type thing where you you you try and explain something out loud to your co-worker and it just comes across as look at me i'm a telepresence robot or whatever so it's like an active noise cancellation system that just
Starting point is 00:07:22 it can't it it generates destructively interfering audio waves to cancel out what you're saying and then replaces it with nonsense unless you're staring at a computer screen with zoom as the foreground window yeah where it well that's the thing the microphone on the computer would would have to be able to cancel this out ah and then pick up the original message right of course so it is it is a symmetric encryption of sorts yeah and this would be really fun to work on actually yeah someone probably has done this in their phd somewhere yeah so when when you said sabotage the in-person experience i really thought you were going to go in a different direction maybe one of two ways either pandemic part two you know send everyone home again or fart spray
Starting point is 00:08:12 okay i did think about the the smell thing to make it unpleasant to be around each other in person thing i wonder okay i wonder if the group norm would shift though right where like that's the good smell we all smell this all the time and it's like ew you don't smell like fart spray you must be a member of the out group this is the smell of teamwork and cooperation and great relationships yeah yeah oh this it's just the pheromones of creativity this is what wonderful working relationships smell like ah yeah soak it up i didn't think about the pandemic part two yeah there's some some externalities to that yeah if you are successful but worth it a bit of a monkey's paw situation clearly death and suffering so that you can have a good
Starting point is 00:09:05 remote experience is the right trade-off you wish that your co-workers didn't go to the office do you another finger on the monkey's paw it is it is challenging to be the only remote person and i know, I've had a couple of people on teams pre-pandemic, you know, before remote work was very common. And I kind of just figured, I hate to even say this out loud, but I think that you're going to have just, man, I don't want to say this. I'm kind of, I'm a little bit cynical on it. It's like, if you're going to work in an environment where you're the only remote member of a team, you're going to have to put up with some frustration because the alternative is just constant fighting of human nature that's just not going to change and and so you're either
Starting point is 00:09:54 going to have to be patient with that and just deal with some of the discomfort of being only the only remote person or find a different a different way to work i that's i'm kind of cynical on it help james james help me escape from my cynicism no i i think that is correct and it it kind of makes sense as a trade-off assuming that you would like to work remotely this is a deliberate decision and it feels like a benefit to you that's one of the trade-offs that you're making is is you you trade the ability to trying to think of the best part of remote never wear pants again right for for the like close-knit in touch with everything that's going on like real-time collaboration yeah and i think the way to reduce that the negative side of that
Starting point is 00:10:46 trade-off is to find a team that's all remote i mean that that really helps because to me it's the imbalance that really makes it intolerable yeah i've i've never seen it not be a pain for the person who's left out remote me too even people who are very outspoken gregarious and social and willing to go to great lengths to be heard, even they are, I think, a little bit frustrated. You know, I heard one person who I know who did remote work as the only remote developer for years before the pandemic, probably at least five years. And a couple, maybe three of those years were on my team specifically, told me, look, when there's team meetings going on, and I'm the only remote one, I just don't, I just kind of have to sit there and I can usually
Starting point is 00:11:29 multitask. And if I hear my name, I'll start paying attention. But I just can't. I can't follow meetings like that. Yeah. The question asker is asking specifically about earning trust and driving consensus. I think there's some amount of one-on-one time you could spend where you can create that remote environment with just one other person if you're meeting with them on video calls or whatever, because you're not competing with the in-person stuff happening then. So maybe lean on that if you're trying to drive consensus and earn trust. You present stuff to them and ask them for feedback in real time. I agree with that. I think one-on-ones are a great idea. You probably need to be more deliberate about it if you're the only remote team member
Starting point is 00:12:15 because one-on-one interactions happen organically and without any extra effort in an office environment. So yeah, set them up, put them on the calendar, make them happen with probably every member of your team on a regular basis that could be every two weeks or every week probably not every week that's a lot but make sure you have time with each person to build trust so they know you're a human being and not just a a wall of pixels on a little screen in the corner that no one can hear or see you might also take those one that one-on-one time and maybe you should embrace a little pair programming opportunity because remote pair programming can be pretty good in fact it's one of those things that might actually be better remote than in person because
Starting point is 00:12:51 you both have a keyboard and a mouse um you know as opposed to one person kind of shoulder surfing and the other one driving i find it much less exhausting because i can zone out a little bit which is maybe maybe hurts its effectiveness but i like to zone out don't we all what what yeah come on i just like a little little zone out time the other thing i can say is that when it comes to building consensus, actually, the most effective way I have found to build consensus, whether in person or remote, works in both scenarios, which is writing. And so if you have ideas that you're trying to get the team to rally around, write those ideas in clear, crisp ways in document form. And you can do that remotely just as well as you can in person and then gather the
Starting point is 00:13:39 team to review these ideas, let them read the document, and then come to consensus that way. Honestly, the best way to get consensus is to have the most crisply communicated ideas because if people can't form consensus around an idea that's foggy or unclear. And so remote work rewards writers and everyone knows that. And so you're going to have to probably double down on that skill set. That's interesting. I think you're right in the power of writing to form consensus. But if they're the odd person out on an in-person team, I wonder if there isn't a culture of reading these documents right now. Like no one else is writing them.
Starting point is 00:14:21 They kind of have this real-time stand in front of a whiteboard and draw stuff, design discussion, and then go build the thing. so so it still might be a bit of a of a jolt to say i've prepared this document please read it and give me feedback it could be i i love working that way i well my preference is a mix where where i have time to go off and think and write and i also have time to bounce stuff off people in real time and and i feel like the quality of the idea is so much better if it's written up i agree it's probably something you need to inculcate in this team anyway even if you weren't all remote can't have a writing culture without a reading culture oh that feels like a like a proverb i tweeted it a while ago oh you did my way of trying to insert it into the lexicon or did you
Starting point is 00:15:18 or discover that someone else said this i don't know i either made it up or copied it without I'm going to google it from someone Is this like my deadstimate idea I haven't talked about that in a while Make it happen Deadstimate Make it a new tech jargon Well when I google that phrase I don't find it
Starting point is 00:15:38 I also can't find your tweet So we're going to have to link that Oh no Okay Let me find it and then I better Write a blog post that is just the title And a link to the tweet so I get that sweet sweet juice love the juice i should do that later we're kind of in the middle of something
Starting point is 00:15:59 right now though listen audience can you just excuse me for the next uh four or five hours while we record me writing a blog post yeah have we answered the question i think so good luck good luck hey jameson have you heard about the great resignation is it that charles dickens book wait no the entire population on earth has started taking our advice of quit your job oh yes that's right apparently we have achieved influencer status we've been telling developers for years to quit their jobs and now we want to tell you how to do it we're ready to reveal the secret i mean you don't just walk out shooting finger guns yes well you do that first but after you do that there's a new service we want to tell you about called hired what is hired dave
Starting point is 00:16:47 Hired is the biggest AI-driven marketplace that matches engineers with companies. It is a great way to find your next job. I've been watching this industry for 20 years with a keen interest on hiring in particular, and I've never seen anything like Hired. Tell me about what you're seeing. So I've interviewed about 150 people in the last year, and I am serious. Every candidate that's come to me through Hired has multiple offers, and they're incredibly high, scary high, like 30% higher than other candidates.
Starting point is 00:17:14 Is that before or after the finger guns? yeah uh both the beauty is it's totally free for engineers uh and we would love for you to go try it go to hired.com soft skills to check it out hired.com soft skills quit your job the best way and check out hired should i read our next one let's go for it this is from an anonymous listener who says hi jameson and dave i'm a longtime listener and i really enjoy the podcast i have a small question for you two. My coworker recently asked for my opinion on how to write some code and then implement it a different way. They knew I wasn't a fan of their implementation and even went out of their way to not get it reviewed by me. Now we're left with this shared code that
Starting point is 00:17:58 stinks. Their code works, but it's clunkier than it should be and it's bothering me. Should I fix it when they're on leave and disguise it as a refactoring that, quote, needed to be done? Or should I leave it alone and try and learn some lesson from this? the other option is to quit my job but other than this small hiccup it's been going okay here hmm yes the choice of of i i love this question because the three choices presented are rewrite it for them while they're gone or do nothing or quit your job i feel like there's a fourth choice there's a little there's a little gap oh a fourth choice shaped hole here okay what is it what have you talked to them hmm what have you said something what if you i don't know
Starting point is 00:18:54 seems kind of weird yeah definitely uncomfortable but oh man even though quitting your job seems more comfortable than this i promise it's not i promise quitting your job is more work than than saying hey i would like to rewrite this code how do you feel about that and then dealing with it if they say i feel i would feel real bad about that yeah hmm clunky and then it should be and it's bothering me should i fix it okay i think i feel like i can predict a dave-shaped suggestion to this question which is try to figure out the cost of the code in its current form and if you can somehow quantify how how much it is costing to have it written this way instead of the other way okay like is it i don't know is it slower is it harder it's maintained you see
Starting point is 00:19:53 more bugs when you're working in it because then you can you don't have to say i think the way you did it is uncouth but instead can say i think we need to solve this problem we are we are paying this cost that we will get rid of by rewriting it yes it feels less personal so you're saying come up with an objective reason why you can destroy the code yes which is tricky if the reason to destroy it is like it looks funny to me you know so that might i mean that might be the reason it might just be a taste thing and then that won't work very well i mean then the cost could be i will quit my job if i don't get to rewrite this code so choose this yeah exactly exactly it's like ultimatums yeah i mean here's the thing like to me your co-worker came to you
Starting point is 00:20:43 asked you how to write this code you gave advice they went and did it a totally different way they probably had a reason for that and it would probably be good for you to know what that reason was otherwise this is probably going to happen again so i i'm with you jamison like it would be good to know why they did it now i'm trying to think of a way how could you ask someone why they didn't take your advice without sounding like you're criticizing them for not taking your advice yeah i don't know i don't either you could try and sneakily disguise it as a team-wide concern have a whole big meeting about code review etiquette and process and stuff to avoid asking this person hey why didn't you take my advice i feel like it was better than the way you did it
Starting point is 00:21:28 i think happens a lot honestly i feel like there's a lot of like broad team level conversations to avoid awkward one-on-one conversations it was kind of unfortunate because it's a really expensive way to not say not ask a simple question yeah it's expensive to have everyone else sit and think i thought we agreed on like i didn't even know this was a problem i don't know i i mean maybe why is it bothering you maybe you should be able to answer that question to yourself well it's not mine that's the obvious answer yeah because just like you want to be able to ask the other person why they didn't implement it the way you suggested i feel like you should have at least for your own enlightenment some idea of why it matters to you that it be implemented the
Starting point is 00:22:26 way you suggested and and yeah is it is it because i like it better and if so then that might be a there might be some practical concrete things you could pull out of this that that are just gut level right now where it feels bad in some way but maybe if you think about it more you can articulate oh it will avoid this problem and and then you can recommend that more clearly or maybe you will recognize that hey i i i have this preference for this certain style that just so happens to be the way i write it and learning that about yourself would be valuable because nobody else will have that preference yeah i feel like i feel like i've i've seen this happen a lot lately with myself of like i have some reaction to a thing and part of how do i describe this at
Starting point is 00:23:17 a meta level part of me is trying to figure out is is the thing that happened good or bad and what should we do about it and the other part of me is trying to figure out is my reaction to the way the thing played out good or bad and what should i do about it and there's probably yet another level where is the fact that i'm thinking meta about this reaction good or bad and what should i do about that and then on and on forever where does it haven't gotten i've only gotten to one level of abstraction so far uh okay above the thing there's probably no more than that everybody knows there's only one of things it couldn't possibly be more yeah let's see is there a point to that besides me talking about
Starting point is 00:24:07 besides me saying words i don't know i feel like i'm i'm i'm uncovering some stuff about myself right exactly yeah listen you all can listen to this if you want yeah i mean you're you're essentially okay let me let me summarize let me do what i do best and rather than have original ideas let me just summarize your original ideas i think you're saying i i can't wait for the one word you will say to describe this thing i'm stumbling around i think you're saying that you want to understand your motives so that you can ensure they are healthy and productive you did it yeah i think you're right yeah i like i have sometimes i have this reaction and it it isn't always right and it isn't always even in like
Starting point is 00:24:56 the right direction so if i can figure out how can i react like in this example it would be how can i interesting question no what go away siri have you been listening this whole time we just hit a new low or we now get to claim that siri is an avid fan of our podcast clearly uh i forgot what i was saying i don't know okay yeah probably quit your job yes finally we had to wait so long to hear that but i think you're right just kidding i'm just kidding oh my goodness yeah i think you should talk to them about it yeah i mean look if this is a
Starting point is 00:25:46 conflict and you need to learn how to deal with conflict and the conflict here is simple it's you can do this without hurting anyone's feelings and the kinds of words you can say are hey look you know i'm not going to rewrite this code i'm not upset with it but i i do want to understand your motives here so i can see if there's some opportunity for me to learn something tell me a little bit about what led you to go a different different direction here so i can understand it. Come to the conversation from a place of seeking understanding and curiosity and state it explicitly. And I think you'll have a great conversation and you might be surprised to learn why. In my experience, when people do things you don't expect, they usually have good reasons
Starting point is 00:26:24 for it. And sometimes they can articulate those reasons. Sometimes they can't, but it's very rarely do they say things. They're just like, I don't know. I just did it. I rolled the dice. and they and very rarely do they also say i just did it to make you mad you know and there probably is a legitimate reason and so yeah and maybe you could figure it out if you're if you're really clever and you can ask the question honestly hey assuming this person is rational what must be true in order for them to have done this but you probably can't you probably seem to ask them it's so hard to figure that out i love that question that feels like it overlaps a lot with kind of reliability and incident investigation and and this idea that something went wrong but
Starting point is 00:27:09 the the people acting in in the situation were doing what seemed correct to them at the time no one's going to deliberately say i hereby press this button to cause an aws outage yeah i also like how you made it about yourself right you're trying to learn how you could do better it's not which i guess is true to some extent you can't you can't change or control them you can only change yourself that's right and frankly that's the only good idea here like that rewriting their code is not going to accomplish a lot whoa whoa whoa whoa whoa whoa whoa whoa the only good idea dave what about if someone the only good idea is usually where you had so oh i don't know i just like it was just defaulted
Starting point is 00:27:57 okay i'll accept it okay i really i backed up a lot of that one but like seriously i'm i am not going to recommend you go rewrite this person's code while they're on vacation like that's just that's crazy you're going to take an already existing conflict and just 10 exit on the intensity scale so i don't know yeah and and probably the code isn't that bad like it's it's working code which is like the best kind of code you know whether or not it's as beautiful as you think it could be and it'll probably never get read ever again until something goes wrong with it and then it'll have to be rewritten eventually or thrown away what if okay i'm gonna have one more argument for for why it might be useful to rewrite what if it's not load
Starting point is 00:28:43 bearing yet you mentioned that it'll probably never get read again and it's it's working code what if now is the chance to change the interface and then it's going to be in production and it it'll it'll ossify and it'll be hard to change later i mean that's there's some possible urgency of like if not now then never well i i'm i made that statement under the assumption that this code is is meeting all of the requirements that you're aware of for now including under load so if you have a a convincing reason why it's not going to work under load oh i guess by load bearing i mean not necessarily high levels of traffic more more like it's it's acting in the system like it is doing stuff it cannot be removed without breaking things that kind of stuff yeah so i mean code
Starting point is 00:29:32 removal is like last resort but yeah and it does become harder to change code that's in active use right the stakes are higher the risk is higher yeah and that's why what you okay so here's okay here's my final answer then let's assume that this code doesn't have any kind of automated unit test coverage so you go in there and you write unit tests and then along with your unit test commit you completely rewrite the code because hey i had to refactor it to make it testable problem solved and do it while they're on vacation just so they can't retaliate and or minus one your pr yes to cover all the bases okay there's a solution in here and i'll leave it to you listener which one is the good one and we can't be held responsible yeah look we're we're
Starting point is 00:30:17 a very high recall low precision podcast meaning guaranteed that we will have all the answers represented but which ones are the right ones i don't know it's the image recognition algorithm that recognizes every image as a dog it's like a hundred percent recall for all dog images will be recognized as all images that's our whole podcast yes yes i heard 100 and that sounds good to me i think we're done all right dave what can people do if they would like to have their own questions answered go to softskills.audio and click the ask a question button we thank you so much to each of you who do that every week we love love reading your questions and i love listening to Jameson's answers of your questions.
Starting point is 00:31:03 Oh, thank you. I love talking to you and listening to you. So I love it more than you love it. Why does it always have to be a competition? I loved two things. Thank you so much. 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.