Soft Skills Engineering - Episode 82: Blow Ups and Job Security
Episode Date: November 9, 2017This week Jamison and Dave answer these questions: How do I smooth things over after a blow-up between team members? A team mate admits he writes bad code on purpose for job security. What do I ...do?
Transcript
Discussion (0)
It takes more than a great G-Zip compression ratio to be a great software engineer.
This is Soft Skills Engineering episode 82.
I'm your host, Dave Smith.
I'm your host, Jameson Dance.
Soft Skills Engineering is a weekly advice show for software developers about non-technical topics.
What is your G-Zip compression ratio?
And do you want it to be lower or higher? Which is better?
I usually say higher is better, meaning you get more compression.
so like point i usually get about 0.6 0.7 for the but doesn't that mean that you have less
breadth as a human it means i have less entropy in the code i write
it means i repeat myself a lot yeah that's what i mean it just
dave's stories compressed really high because he has like three of them or something
i have a lot of copy paste uh yeah i don't really believe in calling functions i just
paste the code like oh i need that same 12 lines of code again i'll just paste it here why let the
compiler inline it when you can inline it exactly i'm way smarter than the compiler yeah okay should
we do a question yeah hit us why don't you read the first one today all right this is from an
anonymous listener the team recently went through a hard push which led to a deployment that went
badly and caused a stressful situation everyone is talented and normally very strictly adheres to
the no blame rule but in the heat of the moment some harsh comments were thrown back and forth
between quite a few engineers it's been about one week and i can still sense a lot of resentment
lack of motivation and tension across the board that i'm attributing to the event how would you
recommend blowing off steam after messy situations and addressing widespread interpersonal missteps
within a team hmm have you tried turning it off and back on again the team yeah does that mean
firing them all and getting an entirely new team what does that mean yep oh no definitely not that
okay okay have you ever watched that show arrested development oh yeah do you remember the forget me
now pills yeah maybe if you take enough of those you can just forget this whole thing ever happened
what if you just cancel mondays for a while until the team gets better
Those are some perverse incentives, though.
Yeah, no kidding.
I heard if we yell at each other, we get Mondays off for three months.
I feel like in sports movies, when there are moments of tension in the locker room,
there's usually one beloved charismatic, or sometimes it's a beloved but not charismatic
person who speaks up and gives an inspirational speech, and then someone else stands up and
slow claps, and then it ends in chanting.
you are you know for someone who's not really into sports or sports movies you
have this incredible ability to boil down sports movies to their essence
i'm secretly into sports culture but i don't watch sports i don't know why you're kind of
meta into sports yeah yes i don't know i like the stories and and that definitely works every
time i've seen it attempted i just love it when you say you know how in sports movies
it's always great like i don't know why it makes me feel it makes me feel really good
it's because sports movies are inspirational and now you're inspired i'm i'm like reliving
the final scene of rudy every time you yeah they're talking about it it's it's like how
people put gifts in their talk and then they don't have to think up jokes
it's like you just throw out a t-shirt yeah like they just put a gif in i'm sorry
oh i thought did i have dave do i have to pronounce it jif oh my goodness don't make me do
that you said i thought you said gift oh like throwing out presents to the audience i haven't
stooped that low but i have thought i need a joke here and i can't think of one this cat does
something really stupid though so i'll put it in here everyone will laugh they'll think i'm funny
it's kind of like that where if you need to inspire people but you're not inspiring just
show rudy and then say yeah now go and close those jira tickets
slow clap yeah did you see the tom dale twitter post about how we pronounce gif or jif i did and
he said if you pronounce it gif then you also need to say jfeg
because the p and jpeg stands for photography or photographical or something yeah
so i was like oh my gosh so yes you need to say jif okay and or or or jpeg you know whichever
you want i'll just never say either of those words ever again yeah just spell them out yeah okay
sorry that was way off topic how dare you it's because we're avoiding this question because it's
hard interpersonal conflicts between two people are hard to resolve and if it's multiple people
if it's a web of interpersonal conflicts yes that ends in game of thrones
this is this is interpersonal conflict at scale yeah yeah that's called war
yeah this is this is tricky oh man have you seen this before
i have seen it at small scale one-on-one one-on-one-on-one but never like quite a few
i'm gonna assume this is a good chunk of the team here yeah the question asker says quite a few
engineers i i've seen it also one-on-one and i've seen it kind of where there are two teams not
necessarily company teams but two two groups that have aligned themselves and they're kind of
throwing accusations or grumpiness back
and forth. I don't know that I've ever seen
this complex. Let's just call them the dev team
and the ops team.
Yeah.
Or the dev team and the QA team.
Or wait, it could be the dev team and insert
any other team.
Sales, marketing, whatever.
What's that phrase about if you meet a jerk
in the morning, they might
be a jerk and if you meet a jerk
in the afternoon, you might be the jerk?
yeah if you meet 10 more jerks that day yeah yeah but but i haven't seen this web where
lots of people are all mad at lots of different people yeah yeah so i'm just trying to imagine
what happened here during this deployment that went badly like is it some guy who's like you
your crappy code caused this bug and they're like yeah well you deployed the wrong version and and
then like seven other people each have accusations well you're the one that deleted all those tests
because they were too slow and you made it so we couldn't roll back with your home world deploy
system instead of just using this off the shelf one and and your schema migration yeah oh man i
mean it's like that must have been what happened and it's just like it must have just been an
extraordinary pile of problem after problem after problem and people just started getting really to'd
it it seems like the core of it has to be some kind of customer or user affecting situation that
that the dev team got the blame for so something went bad definitely either the customer or the
boss or someone was like you all screwed it up big time and then they're all kind of feeling
that pressure and feeling bad about that like bouncing the blame around like a pinball yeah
yeah and the team and i mean i could even see it not necessarily trying to avoid blame but
saying what happened why why did this go so poorly and then someone's like well this person did thing
x which sucked so the the question asker says it it's been a week and they can still sense
a lot of resentment where is the retrospective on this thing i mean retrospective is like where
all the grievances can be safely aired you can find the root causes and you can pin the blame
on the real issues instead of on the people yeah and i'm hoping that they haven't had a
retrospective yet and that it wasn't a retrospective that actually caused yeah yeah that was the blow
up i've talked about the retrospectives we had at koali before but it's been a while those were the
most raw and personal and open things i've ever been a part of professionally you like bared your
soul to this group and they all bore their souls to you and and because of kind of this very intense
vulnerability and openness that was really uncomfortable some of the time we were able to
address um address some difficult issues with an attitude i guess of learning and growing and
improving instead of blaming and it was really uncomfortable and i would leave and be exhausted
afterwards but it it helped head off some pretty serious issues and it helped resolve some issues
And that team trusted and liked each other, even if they were sometimes mad at each other for things.
And I think if you have that underlying stability, it's something you can resolve with with some pretty uncomfortable open conversation.
If the team is already not big fans of each other, that might just backfire.
But because I think if one person sabotaged it, it would have all broken down.
if one person just like threw out sarcastic comments or or kind of blew it off or but
everyone was pretty committed to it and it worked really well yeah wow okay and and those were not
like post-mortem retrospectives those were like once every few months everyone gets together and
just kind of yeah gives feed gives open feedback to everyone yeah it was kind of like a 360 review
but uh all all done together and there are trade-offs there i mean there might be things
you wouldn't want to say to someone's face or in front of a group um but the kind of feedback we
got was was really helpful and it brought the team together i mean our our ceo sat in and was part of
it he didn't just sit in and observe he was he was part of it and i i remember distinctly i gave him
some very uncomfortable feedback once about a thing that kind of bothered me that was kind of
like a a tricky thing to give feedback in but because of the atmosphere it just it just went
really well and was well received. And I had the same thing happen to me a few times as well. So
what you described was a very special situation and I've never seen anything like that at a
company before. And I'm going to guess that this team is not going to be able to make that happen
now. Maybe not ever. Yeah. People react to hurt feelings very differently. There are some people
that are very openly offended and then they very openly work through those feelings.
And there are also some people that just say, oh, it's fine.
And then they quit six months later.
And then they tell their friends about how horrible your company is or your team was because of this thing that they didn't really want to bring up and address openly.
So I think to solve it, you have to make sure that as much as you can, that the people who don't talk easily about this kind of thing also feel like it's been addressed or resolved.
not just the people that are like the radical honesty people that are like i'm mad i'm gonna
say i'm mad when i've been in situations that required or that were resulted from
hurt feelings and harsh words being exchanged i have found that all it usually takes is one person
even in a somewhat larger group to become the humble party and apologize like sincerely
apologize for what they did wrong and what i've noticed is that most people respond really
positively to that where one person is obviously putting themselves out there apologizing for what
they did wrong not demanding an apology from anyone else and the reactions that i see when
i've done that are that people are usually very quickly uh they let go of their defensive position
and start pointing out the things they did wrong as well and offering their own apologies
it's kind of this contagious behavior that happens when one person initiates it have you
ever seen that before yeah i have been married for a while and that describes the resolution
of every argument i've ever had as a married person where you apologize oh no no i'm just
kidding i am no saint both both parties i assume have demonstrated this yep and i don't want to
see numbers of who's done more because i think i would be sad the good news is if you are a manager
or a team lead you get have the most to apologize for so you can start this because ultimately it's
your responsibility and and even if you weren't the one that i don't know committed the buggy code
or or or made the database migration fail or whatever um that's still the reason you're the
manager or team lead so ultimately you can you can kind of take that burden upon yourself and
help the team open up and resolve things a little bit not only that but in this situation it is
totally incumbent on you to do this as the team lead and if your lead isn't doing this in this
situation they are absolutely not doing their job yeah right now yeah that's that's why they exist
otherwise they're just there this is why they call it people manager yeah this is the people part
yeah yeah there is a risk there is a risk as a team lead that you'll come in and play the
apologetic role and that other people will um pattern match off of that not because they
sincerely think or want to do it but because they're trying to avoid getting in trouble
you know these kinds of sensitive situations require delicate careful leadership and if you
just come right in with the self-deprecating apology spewing attitude you could easily create
a false uh apology reciprocation that's an far for those of you that are following the acronyms
at home aha okay i should write a book about that yeah i'll wait for business erotica yeah
anyway um i i would say that as a lead you probably don't want to just uh start with the
apology thing and be like hey it's all my fault you know yada yada but i do think it's it behooves
you as the lead to get a good post-mortem process going here and establish very important ground
rules of we are not here to blame anyone we're here to find solutions to prevent this from ever
happening again which is the one thing we can all agree on you know that we don't want to repeat
this you know and and if that is the objective i think you can and you lead the team carefully
toward that i think that the outcome will be that they're working together again toward a unified
positive outcome and that can help smooth over a lot of the issues yeah i think establishing
a feeling of safety is the key to resolving this and i think that's the point of my rambling earlier
about our our kumbaya circle at kawali it was is um we worked really hard to establish a feeling
of safety and that enabled us to resolve problems for you the the way you do it might look differently
but the underlying feeling of safety i think will enable people to back down
and to empathize and see other people's positions
and to let go of grudges and forgive.
Because really, if people have said mean things to each other,
then they need to forgive each other or they'll just still be hurt.
Yep.
I like how you talked about emphasizing it's not about assigning blame
or blaming people.
And that's another thing that you can do as a team lead is you can tell them
um no one's getting fired for this if that's the case i mean don't tell yeah yeah don't say that if
it's not the case because that's way worse except john yeah but but i think if it's a genuine
process or or organizational failure it's generally firing someone is not a good solution for that and
yeah you can make sure that's understood um some people might not have the implicit
understanding even if you feel like everyone does so yes make it explicit and clear yep cool and
then when you're all done what you do is you get everyone together outside on a green field
you all hold hands and then in a big long line the person at the end of the line starts twisting in
place and everyone wraps around them slowly until you form a giant human cinnamon roll
the ultimate team building exercise
i saw your note about cinnamon roll team building exercise and i thought it was about bringing
cinnamon rolls into the office this is infinitely better oh yeah totally have you ever wondered what
it's like to be hugged by 30 people there you go yeah and let me just tell you from personal
experience it's amazing yeah uh that also is probably specific to a team i don't know if that
generally applies but the cinnamon you think the cinnamon roll isn't a general solution
you know if we could only get all the world's leaders together in a line
someone at the end but then it'd be like this big battle over who gets to be in the end
and who's on the outside and then they'd bring armies and all start wars about it and then we'd
have to do another retrospective yeah then we'd need a bigger cinnamon roll the armies included
it's just cinnamon rolls all the way down yeah
well i feel like we gave vague guidelines a little bit more than very concrete tactical
steps but definitely you need to address it yeah i don't know why i'm saying this
I think I just feel bad about how we didn't say, here are the five steps you take to do it.
First do this, then that.
Oh, you mean like we usually give very clear, specific guidelines?
The good news is there's entire libraries full of pop psychology and self-help books helping them deal with interpersonal conflicts.
So just read those.
Maybe we should just say if it gets too hard to deal with, you can just quit your job.
There's a concrete guideline.
Yeah.
Yeah.
Like, I don't know.
People resign sometimes if there's a disgrace in their organization.
You just use this.
Yeah, fall on your sword and fall upwards to a raise.
One way or another, this situation will get resolved.
Either your manager will do nothing, it will stagnate,
and the people will quit because they can't stand it anymore.
Yeah, the team will fail.
Or it will come to a head.
Either way, we'd love to hear about it.
All right, should we read the next question?
Oh, sure. Yeah, good luck.
I'll read this one.
It says,
Hi, Jameson and Dave.
I love the show.
It's quickly become one of my favorite podcasts.
My question is about dealing with a colleague,
Barry, not his real name,
who intentionally writes unreadable,
poorly architected, uncommented code
to maintain his job security.
His reasoning is that if he's the only one
who understands this functionality,
he can never be fired.
He freely admitted to me that this was his strategy.
I find that my productivity slows to a crawl
when i get into his code and he is pretty unhelpful when i come to him with questions about
his code should i try and address this with him one-to-one or go to my manager or his manager
uh so barry's not his real name i found a website where you can type in a word and it'll rearrange
the letters in that word in all the different possible combinations in case that's how they
disguised his name so it could be barbie it's not anagrams because they don't have to be real words
i guess don't anagrams have to be real words rarby raber rb that's almost like rbs
i think i guess what i mean is if we uncover barry's real identity
then we can google him and find out all kinds of stuff about him and then get to the root of the
issue that'll help us okay you know i actually i just thought of a nice headline for this situation
you've heard of the phrase security through obscurity right yeah isn't it where you try
and make something secure not by protecting it by but by kind of hiding or obfuscating parts of it
yeah exactly so this is job security through obscurity
get it make your code obscure and no one can fire you
barry is like a human punchline this is this is an old joke that people tell a lot that i've never
actually seen 100 in reality but he he is it he exists he's the reason that joke exists i guess
yep barry is acting as the ceo of barry incorporated not as a member of the team
or an employee of the company that he works for and barry incorporated has much different
incentives than the team he works on or the company he works for and i i don't think he's
doing a very good job of being a member of the team even though he thinks he's doing a good job
of being ceo of barry incorporated yeah just it feels if this is genuinely how he feels i mean
first of all are you sure this isn't a joke he could just be making a joke and also bad at his
job um in some side comments the writer the listener wrote that he said barry said these
things half joking but made it clear that he actually wasn't joking there there's a kernel
of truth in a lot of jokes uh yeah it it's it's it's a bad situation um he can never be fired
are you sure sounds like he's trying to find out sounds like a challenge
uh so the thing i meant the reason i talked about the ceo thing is because his job as a member of
the team is to build the product and make it easier for the team to work on the product and
he is 100 not doing that it's sounds like it's kind of a nightmare to work with his stuff
and it's harmful to the team which is the opposite of what you want an employee
and if he's aware of this and doing it on purpose that's that's pretty malicious that's not just
like haha i'm i'm trying my best and sometimes it's not good enough it's like i'm sabotaging
other people to look good yeah that's crappy yeah yeah that's real bad but he is maximizing
shareholder value and barry incorporated that's true but barry incorporated is a subsidiary of
anonymous listeners company so
um they could just dissolve that company
probably not that means they would murder barry
i don't think that's what would happen they could just write barry barry incorporated off yeah
okay i think the metaphor is they would sell barry incorporated for zero dollars yeah for zero dollars
possibly even negative dollars if they give that's right yeah
if i were this the manager of this team and wind of this self-preservation technique got to me
and i had confirmation that it was legit i would be having a really hard conversation with barry
absolutely if i found out that one of my team members was intentionally sabotaging the rest
of the team because that's what this amounts to in order to preserve his own job it would be a
very hard conversation for barry yeah there's not very many questions we get where i think the
answer is yeah this person should be fired but this one feels kind of like that honestly that's
that's not that's not what a professional does and that's not someone i would want to work with
and if i were running a team that's not someone i would want on my team oh yeah imagine the
productivity drain that this is imposing on the rest of your team yeah like it would literally
be better to just pay barry to do nothing than to write this code now that that's not entirely
true though and this is where the nuance of this situation comes in because here we have
a team member who's been on the team for quite some time this is from side comments that we
edited out and produces perceived value for the customer but its long-term value is stifled
by the fact that it's hard for anyone else to maintain or extend and so that that's where you
get into these weird cognitive dissonant situations because management is like oh yeah we love barry
he always produces the results we need he uh customers love his stuff his work he's fast
um and once in a while we get some gripes about him but you know they're just jealous
or whatever you know you can as a manager you can always justify why your top performer
um you know deserves a special special treatment yeah that's true and this is a constant gripe
that engineers have of like well we we need to make things cleaner and better on the back end
and there's this one cowboy coder who just does all the stuff that looks good to customers like
yeah but also that's kind of your job yeah yeah um so balancing balancing product and feature work
with the long-term health of the code base is one of the hard engineering trade-offs
and this this question does kind of say like it's all bad but i imagine the stuff barry works on is
important and valuable i so i've never all bad right yeah i've worked with people who have not
been as deliberate as it seems like barry is but who have definitely done this where they work on
important things uh kind of they own it because no one else wants to touch it and it's useful
and important to the product and also it's just not not great for the team uh one of them the
person got let go but it was a hard decision to make because they were they were a good team
member in a lot of ways it just came down to at the point the team was at we needed the long-term
productivity more than the short-term productivity that this team member provided but that was not
true the whole lifetime of the team earlier on in the team's life and in the product's life
we we kind of explicitly made that trade-off we looked at this person's code and kind of grimaced
but also that it achieved a business need so yep it could be that now is the time that you
are not willing to make that trade-off anymore or it could be you're still leveraging technical
debt you're still using that to buy time or customer happiness yeah yeah i have a question
here how did i dang it dave i started off this question saying barry should be fired
what am i doing and then you talked yourself into maybe i can talk myself into and out of everything
what would jack welch do he'd make a swift decision isn't that the famous grizzled like
ge manager guy oh yeah it rings a bell yes of course he would make a swift decision and never
question it yeah and it'd usually be to fire at someone if this question was should we fire this
person or not no of course and default to the fire yeah that's what grizzled people do so you're
saying barry is a valued member of this team barry is not a valued member of this team barry
involves complex trade-offs and the long-term i think the long-term value of barry is probably
negative just like the long-term value of a loan from the bank is negative but if you can use that
loan and invest it or build a business that will pay you back more than the the cost of the loan
then it's worth it it sounds like to this person it might not seem worth it anymore if the manager
is not aware of this then you should probably help make them aware if they are aware they might feel
it is worth it even if there are some problems there you go every possible outcome in a little
punnett square there for you aware unaware yeah i guess yeah it is hard okay i'm gonna walk back
my blanket this person should be fired statement i'm gonna unequivocally equivocate and say it
depends on where the product and the and the company is but if it's a mature product or if
there are stability issues or if you're trying to bring a lot of other people into this code base
i think it's it's worth so no matter what you should talk to him right but
talk to barry yeah talk to barry like for sure he should not be doing this or as barry's manager
it's a good question do you think it's appropriate to bring something like this up directly to a
person well they already had a conversation about it and barry kind of laughed it off
you know like all terrible behavior barry's like i was just kidding
yeah that's a good point everything everyone is just kidding about everything they do that's bad
yeah when they're you know caught my impression from that was that wasn't a deliberate conversation
about it it was kind of like yeah water cooler talk like you'll never guess what goofy hijinks
i do with the code yeah yeah i'm gonna bet that you'll have a hard time cornering barry on this
issue yeah i think he'll deflect it you know you'll want to bring it up seriously hey barry i
want to go back to that conversation where you told me you deliberately obfuscate your code to
make it hard for others to read and maintain he's like oh yeah funny huh i got you good
here's what i want to know as a berry as a person who aspires to be berry how do you even do this
like i have such a hard time deliberately making my code hard to read and hard to maintain like
how do you create hard to maintain code like everyone does it everyone knows what it's like
to read other people's hard to maintain code but how do you deliberately produce hard to
maintain code like is that easy for you and if it's easy do you reckon how how do you do it and
recognize that you're doing it instead of just saying exactly usually when i when i'm attempting
to create easy to maintain code i go back a month later and look at it and go this isn't easy to
maintain at all yeah so how do you do the where you're actually trying to make hard to maintain
code i just maybe you could like rename all your variables wrong or something i think what you're
saying is barry is actually the most talented developer on this team it's like he has another
level of productivity because you have to be able to write maintainable code to be able to write
deliberately unmaintainable code bingo because otherwise how do you know you're not just
creating maintainable code yeah okay yeah this guy's on a whole other plane people so promote
barry that's right barry barry's a straight shooter he gets stuff done he delivers you're
joking i know you're joking about promoting barry but if you promote barry you might solve this
problem i don't want to live in that world where he's not writing code anymore bingo
what he's gonna make unmaintainable trello cards though
barry this flow chart is pure spaghetti i know right you'll never replace so fast though
no one can decipher my gantt charts i am the decoder ring yeah but i do think you do need
to ask yourself a very important question are you sure his code is actually hard to maintain or is
it just you and i've struggled with this before where i read one person's code and i think this
stuff is clean it's great easy to follow clear-cut separations of concerns but then i read someone
else's and i think this is terrible but maybe someone else through their eyes it doesn't seem
so terrible so what i would do is start a petition where you take around a list of signatures and you
give someone a snippet of barry's code and ask them if it's maintainable and clean and then if
they agree that it's not have them sign a petition and then take that petition to the white house
no way that's probably too high i don't know i don't know where to go from here
uh it sounds kind of like a mob that's the end goal mob justice like with pitchforks and torches
yeah yeah you gather up enough disgruntled developers they all show up at barry's office
i don't know barry okay gets turned out turned out yeah like thrown out the door
oh okay okay i don't know tough situation but uh but i still stand behind our original assertion
if this guy is intentionally obfuscating his code to weaken the productivity of other developers on
his team then his manager needs to know about it and it's a big deal in my opinion yeah that's
like self-preservation there's a very big difference between cowboy coding to to crank
stuff out the door really fast and doing a poor job on purpose so that other people can't work
in your code base and be productive um and when i when i equivocated i was kind of a little bit
more on the cowboy coder side but the deliberate malicious stuff is that's bad that's real bad
i've also seen in action people who can never be fired get fired uh and it turns out it's fine
people who are irreplaceable often are actually replaceable it might be a little painful but
yeah but but it it's amazing what people can do when uh when when the team loses an important but
also tricky person virtually no one is that important and irreplaceable i mean i've seen
everything from the founding scientist who literally patented the idea the whole company
was based on get let go and company was fine yeah key engineering personnel company was fine
yep people that have everything in their head even dave people that have this complex system
built all in their head none of it documented turns out you can figure it out that's right
and sometimes letting that person go is just what the doctor ordered for everyone else to
figure out this complex system and simplify it yeah exactly yeah you shine some light on it
okay i think we better end before i flip-flop yet again
you'd make a presidential politician political i can't even can't even say the words i couldn't
even convince my mouth to say that about you sorry yeah your body is averse to uttering that phrase
as it should be dave what can people do if they want their own questions answered
go to soft skills.audio as so many of you have done this week thanks for all the incoming
questions we really appreciate the insight into your worlds and we love hearing the questions
you have and the struggles you're having we're sorry you're having struggles but we're here to
help go to soft skills.audio click ask a question there's a form there where you can remain anonymous
if you choose or you can give us more details however much you like some of our writers people
writing in have taken some great liberty with how to pronounce their names and we love it
it was hilarious yeah y'all are jokesters we like it
mm-hmm okay uh i think we'll catch you next week all right bye
