Soft Skills Engineering - Episode 327: Remote with onsite team and undercover refactor
Episode Date: October 24, 2022In 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)
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
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
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
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.
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?
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.
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
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
