Soft Skills Engineering - Episode 312: Nit-picking and Promo raises
Episode Date: July 11, 2022In this episode, Dave and Jamison answer these questions: I’m on a team of two. My manager/teammate is young (under 30, less than 5 years total work experience), minimally experienced with ...anything other than writing code, and has an inflated self-assessment of their own coding skills. They have a habit of either asking for (or simply changing on their own) every little thing to be their own way. This can be as unimportant as renaming all the variables to a different word with the same meaning (think $largeCar instead of $bigCar) or as bad as - after a discussion between two techniques for a feature in which their preferred method wasn’t chosen, - going in later and changing the code to how they wanted to do things. I’m feeling burnt out by the lack of control over my work and feeling like what I’m doing doesn’t make a difference.. Where and how should you draw lines in order to balance writing good software with showing respect for your team members? How do you deal with people who think their actions are justifiable because they are “improving” the code but really can only defend this by claiming it is “more readable” or some other subjective measure? I work at a well-funded startup and am likely going to be promoted (into another IC engineering role) in the next few months. I’m pretty clear on the leverage I have when negotiating salary before accepting a job offer, but I’m wondering how I should approach negotiation and raise expectations when it comes to receiving a promotion. Obviously, my company wants to retain me, otherwise I wouldn’t be getting promoted, but I don’t feel confident in negotiating when I’m already being given a raise and my only alternative to accepting it would be to leave and find another job. Additionally, I’m on great terms with my company and manager and I would not leave over a 5-10k difference in raise expectations. Just want to better prepare myself for the offer. My manager has also told me that when/if I receive a raise, I can negotiate (it’s not too late). That came up because I told him I assumed raises and promotions are long processes that need to be decided way in advance, but that is not the case at my company. Show Notes Tweet about engineers’ puzzle obsession: https://twitter.com/ryanflorence/status/1534951668214771721
Transcript
Discussion (0)
it takes more than less than equal to and not equal to to be a great engineer this is soft
skills engineering episode 312 i'm your host dave smith i'm your host jameson dance soft skills
engineering is a weekly advice podcast for software developers about the non-technical
stuff that goes into being a software developer and we covered all the equality operators
and inequality operators yeah which is all the technical stuff so we get to talk about everything
else now we left off greater than or equal to and less than or equal to oh shoot dang we're
gonna have to rerecord okay i have a strict policy of never saying anything wrong on this podcast so
we gotta go we gotta go back and edit that so i can maintain my 100 batting average of always
the first time we've ever had to edit an error for you but it was actually me so i guess your
record remains unblemished yeah okay we'll leave it in i'm okay with your errors showing that's
fine this episode is sponsored by compiler which is an original podcast from red hat
talking about engineering topics big small and strange you'll hear more about it later all right
i want to thank our patrons who are contributing at the level where they get a shout out every week
they are memester josh owen shartle craig motlin i love mavis the stochastic parrot andrew pollack
arun duna kashokton ohio patron.com.au we're hiring ira chan monkey face emoji jonathan king
testing is documenting.org oladapofadiyi will angel my neighbor has smelly feet nick hathaway
travis sanders brayden canes john grant nick kantor and philip john basile if you'd like to
join this crew go to softskills.audio and click the support us on patreon button and thank you
so much and if we're a little late shouting you out don't worry we'll get to you promise all right
should i read our first question goo for it okay let me stall for time while i click on the right
thing very smoothly and i did it this is from an anonymous listener i'm on a team of two my manager
slash teammate is younger under 30 less than five years of total work experience minimally
experienced at anything other than writing code and has an inflated self-assessment of their own
coding skills they have a habit of either asking for or simply changing on their own every little
thing to be their own way this can be as unimportant as renaming all the variables to a
different word with the same meaning think large car instead of big car or as bad as after a
discussion between two techniques for a feature in which their preferred method wasn't chosen
going in later and changing the code to how they wanted to do things i'm feeling burnt out by the
lack of control over my work and feeling like what i'm doing doesn't make a difference where
and how should you draw lines in order to balance writing good software with showing respect for
your team members how do you deal with people who think that their actions are justifiable
because they are air quotes improving the code but really can only defend this by claiming it is
more readable or some other subjective measure more readable to me yeah because i wrote it and
rewrote it it turns out things that you read a lot become more readable so changing the variable
names thing is annoying and i could see that being frustrating just going in and re-implementing a
feature that you did that sounds infuriating oh man that would make me oh yeah so frustrated
and it makes sense that you are feeling burnt out because you could you could have not done it well
maybe i don't know maybe it would have taken them a little bit longer to build it from scratch
instead of change the thing into your way probably a lot longer it's a lot easier to kind of rework
and refactor code as compared to writing it originally you're helping them look better then
okay so your purpose is your purpose in in work is is help them change stuff faster
give them more material to change yeah have you ever heard of the uh hairy arm theory
no is this real i'm googling real quick yes this is a real thing i'm not just making this up
this is the idea that you've got someone who commissions artwork and you're a painter and
And every time you show your artwork to the commissioner, you know, the person who commissioned it, they always want to change something.
Like, oh, that looks good, but could you put the moon over here?
You know, or, oh, that looks good, but could you change that person's, you know, shirt to be more blousey?
No, I don't know.
And so the artist got wise to this and started putting in deliberate mistakes in the painting.
And one of them is to make an arm extra hairy.
and so then when you show the artwork the person who commissioned it goes it looks really good but
that arm is really hairy could you change it and you're like absolutely i can change that so what
if you just leave hairy arms in your code for this person and see if they take the bait and maybe that
satisfies them and they stop changing bigger things there is an article that describes the
same thing except it's about a duck i think this was about battle chest do you remember that game
there's chess but the the pawn would like get stabbed if it got taken or something like that
you know like little animations when the pieces took other pieces i think i remember i think if
i'm remembering this story right i'm trying to find it and i cannot i'm pretty sure it was on
an old gama sutra article anyways someone put a duck in one of the animations because they wanted
so there it was like the queen stabbing the rook to break it down into pieces with like a little
duck sitting there to deal with that person who they knew was going to come in and tell them to
change something and and so they targeted it at the duck they and they got the request to take
out the duck and then they did and were able to continue on their way nice so i just repeated
what you said basically but less but it sounded so much better yeah but i also can't find the
all right i'll find it later so how would you do that in this situation just like stick stick
decorators on stuff i don't know like unneeded decorators everything is the visitor pattern right
you could invent new decorators that are just no ops they do nothing
yeah throw it all over the place the decorator is like you'd have to have a
yeah name what if you just name it decorator like at decorator
yeah is there some way okay you'd have to get really meta here but um maybe you could add
some annotations that when deleted do something on this person's text editor to make them feel
like they've done a good job and they can leave you alone okay so what if you add you add an
unnecessary line of code whether it's a decorator or something else but the line of code it's a very
twisty turny winding path that you have to follow to figure out that at the bottom of the trail
it does nothing and so you give this person basically a thread to pull on but when they
get to the very end of the thread they realize oh this does nothing oh look at all this complexity
i can remove and then they remove it and now they're satisfied i think you have to leave
a snarky comment at the end though saying like gotcha or i don't know what what would the message
at the end of the maze b well if you do that it kind of defeats the purpose because then they'll
be like oh this was left for me as bait now i gotta go find the real issues or okay okay so
instead just put like to do implement here or something like that at the end so we've talked
before about getting around nitpicking in general and we we bring up a lot pushing that stuff to
tooling this does not sound like things that can be caught by linting or automated tooling easily
if it's changing variable names to be synonyms you you can't have a linter catch that and
take that argument off the table have you tried talking to them about this yeah it's a fair
question inflated self-assessment of their own coding skills so it sounds like they maybe have
because they think their actions are justifiable at the end they claim it's more readable so it
sounds like they maybe have talked about it and the the developer says their manager says oh it's
just more readable this way. Well, I think you can counter that subjective statement with another
one saying it's actually less readable. Now we're at an impasse. Nuh-uh. It's not more readable.
It's not. And I surveyed myself three times. And so that means 75% of survey respondents
think it's less readable. We have data on this. Okay. I don't know if this would work or not.
It depends a lot on your relationship with this person and this person in general, but
you could express it in terms of the frustration it is causing you.
If it's making you less productive to have this person kind of go around after you and
swap stuff around, that's you being less productive at work is a thing you get to discuss
with your manager and you get to ask them to help you solve that or bring them into
improving that.
So the fact that it's your manager doing it complicates it a little bit, but instead of
expressing it in terms of of like i just get fed up when you this change didn't need to happen
or talking about the specific change of like don't do this thing please if you talk about it as a as
a demotivating factor that might change their viewpoint a little bit from it is my job to make
this code readable instead of unreadable to it's my job to make this team productive which is part
of their job if they are your manager and this is making you unproductive it's it's getting in like
in an edit war yeah you know i had totally missed the fact that this was manager slash teammate
that changes the dynamic a lot in my view oh tough i just said edit war and that reminded
me of wikipedia edit wars which is basically this where people just go back and forth and
overwrite stuff and if there's a solution to edit wars it has been
destroyed in the war on this page because i don't see what it says to do
is there actually a war on the edit wars page well i don't know i didn't look that would be
awesome so i can i can i just confess something when i was this age this was more or less me
and it's not that i wanted to go in and trash people's work and i'll share what my motivation
was and how i worked this way and just so that we can kind of see what might be a good solution to
help this person see the light for me i would read people's code and i my mind would just
immediately start proposing to myself ways to write that code better it's like i can't it's
almost like i can't read code without going into kind of edit mode like i'm i'm revising and making
it i'm improving it instead of just reading through it to be like you know a do i understand
this and b is it correct you know i was always like oh yeah you could do that i see you did this
in five lines you could do it in three you know my mind was just constantly having those thoughts
pop in to my mind and so i would just i would just usually just do it of course this was back before
we had you know 20 years ago we didn't have as it wasn't as common to have code reviews on teams and
so i could just kind of rework it and in my mind it was so much obviously better the way that i
had written it that in my mind again i'm just gonna just emphasize in my mind there was no way
that anyone would have a problem with it like it's clearly better who who would be upset by the truth
yeah or things that are better than things that are bad so that that's kind of how my mind worked
but also i think there was something going on with me where if i could rewrite something
that's how i could truly understand yeah absolutely and i think that made so all these
things may be at play here and so when you go in and ask someone hey stop rewriting people's code
don't even change their variable names please don't you know don't make it more efficient don't
make it more readable just leave it the heck alone and move on with your life you might also be
asking them to not be able to understand the code because that is maybe the way they do it
well if that is how did you overcome that uh i just got too busy i think yeah that's i was just
thinking, like, think of all the work that you could be doing that you're not getting to if you
just are re-implementing stuff that already works. I guess that's called refactoring and is good
sometimes. But yeah, there's presumably other things to do besides renaming variables.
Yeah. And I will say there are times and places where renaming a variable is actually a very
high value activity. You know, when some variables are just like so totally misnamed that they
mislead future readers it might actually be a good idea to change that it's like oh this variable
says it's click count but actually it's a list of all the usernames who have clicked this thing
you know it's like oh that's going to be really confusing to someone who reads that in in six
months and it might even cause them to like totally misunderstand what the code does you know
so like it there's a balance here to be struck where sometimes renames are good but maybe that
balance is, look, if you have suggestions on how I name this stuff, why don't you show up at the
code review and make all those suggestions there instead of just coming in after the fact and
surreptitiously changing all the code? Yeah, I could see a world where you'd kind of split up
ownership a little bit more as well and say the person building the writing the code has the final
say on how it is implemented this gives clear decision making power to you in some cases and
to your manager in other cases of like do we have to do this thing or not because your manager can
say i think we should rename all these to large instead of big and you can say i don't think
that's worth it and i'm not going to do it thanks for the feedback but i'm going to merge this and
move on to other things can you have you ever said that to your manager i mean that's pretty bold
no probably not me either yeah that doesn't that does get really like i would say if your manager
feels strongly about this being named some way that is like a synonym i would just go with it
i think you're like whatever i am not it's not worth our team does not get enough value from
me raising this as a concern right now you know it'll take me two minutes but it is it is more
work to have that discussion and then go back and fix it it is now solving that problem where you've
got a member of your team and in this case i'm so sorry to say it's your manager but having a member
of the team who's willing to burn that much time on things of no consequence that's rough yeah
i felt like i knew what to do here now i don't anymore i don't know because i because i asked
you that pointed question of whether you've ever actually done the thing yeah no but i'm sure i
would i just know i would however in that situation i know i'd be the hero yeah i have had this
specific conflict with people but never with my boss yeah i know that changes it right yeah i don't
think i don't think my boss has ever cared what i named variables yeah then that's because you've
had not terrible bosses i remember i i do get kind of i get nit okay this is going to be kind
of meta i get nitpicky with people's pr like code review feedback when the feedback is unjustified
you know one time i remember one that stands out of my mind from several years ago i wrote some
code it happened to be java and one of my team members gave me feedback that i should like reverse
the order of some operations in a Boolean condition so that it would be faster. Or maybe
it was like calling like string.equals instead of like string literal.equals string, some weird
thing like that. And because it'll, because quote, it's faster to do it this way. And I got into a
fever pitch and wrote up some proofs of concept, you know, started measuring. Did some original
research. Yeah. Like I wrote a few little sample programs and measured their runtimes with doing
it my teammates way versus my way and there's no material difference at all and and so that was my
response to his question was or not to the feedback is look there's no difference in doing it this way
versus that way and then i took it to this person's desk and and said hey did you see my comment on
the code review he looked at it and then just looked at me and kind of shrugged his shoulders
like what i was like you know what you mean you that's your only response and i did i was like oh
like is this not important to you he's like no i'm like like if i was in that situation and i
had told someone hey i recommend flipping it this way because it's faster and then i learned that
it wasn't faster i would be so apologetic yeah you know i'd be like oh i'm so sorry i gave that
false information i must have wasted a bunch of your time to figure that out that that wasn't the
case you know and of course in this case it was like a non-speed sensitive area of the code like
totally didn't matter how fast it was you know so long story short i'm i'm pretty sensitive to crappy
code review feedback where it's unjustified and it's like yeah this is just a matter of
your preference versus mine let's not even mess with this you just brought a water balloon to
a squirt gun fight buddy i don't even know what that means which one's better i think the squirt
gun's better i guess it depends on how many water balloons you have well they only brought one
so okay oh yeah you're outgunned yeah they are they're very outgunned
anyway so this is probably a conversation i would have but i would probably bring some
i would probably bring some numbers to this conversation which hopefully don't make you
look like a psycho but numbers numbers i stayed up for 14 days in a row
it's like those like romance horror movies where one party in the couple keeps track of the number
of times that the other party you know like makes eye contact with other people
that's what i'm worried about being perceived as here but i'm like look i spent an hour
reviewing these things that as far as i can tell make no material improvement to the code do you
really want our team spending time on this you know but i think it's time for this person to
get introspective they're young they've got limited experience they're doing what they think is a good
thing but it's time to show them the light and this is going to be tough because managing your
own manager is challenging but i think if you want to be if you want to maintain a good culture
on this team you got to do it because it's totally unhealthy to have someone sneaking into the code
renaming people's variables changing all the code to be the way they want it and then not really
having to own the externalities that come from that behavior namely your whole team feels like
what am i even doing here yeah your manager has to learn that not how i would do it is not the same
as wrong and it it seems like that's where they are right now oh you named this the wrong thing
because it's not the name i have in my head there there's a there was a fantastic tweet recently
i'll try to link it in the show notes but it talked about how as developers we get really
laser focused on the puzzle aspect of our jobs and the puzzle what we mean by that is like oh i
could rearrange i could refactor this code this way or that way or that way you know and instead
of like what's the outcome i'm really going for here what's the value that i'm trying to build for
is there some metric i'm trying to improve is there some customer experience i'm trying to
to create is there some problem i'm trying to solve that goes beyond just how can i rearrange
the code in such a way that it's really elegant and cool you know and i think that's maybe what's
playing into this manager's mind facet a little bit yeah i'll go dig up that tweet and you'll
all thank me later hopefully if i can actually find it well good luck yeah it's good this is
a tricky yeah this is this is hard mode yeah for sure i mean okay make your team bigger right you
talked earlier about how your manager is not busy enough or you you grew out of this when you became
too busy so you could grow the team you could sabotage you could light fires in other places
your manager is off doing that but yeah make them busier as an option too don't sabotage the
company to make them go away all right have we answered it yes hey jameson have you heard about
that podcast from red hat called compiler isn't it the podcast that transforms human voices into
bytes interpretable by machines yes that's the one like every podcast so the show compiler comes
to you from the makers of command line heroes and is hosted by angela andrews and brent simono
Yeah, I've listened to it a bit. I listened to episode 18, which is about productivity, and I learned about the co-action effect, which I will not explain to you so that you go listen to it. I hadn't heard of that before, and it was cool. They also had an episode on compilers, and there were fewer really corny jokes about the name of the podcast than I expected, but very informative. They had one of the GCC developers on there to talk about compilers, which was great.
Yeah, I've been listening too. It's an awesome show. I liked the episode on how Red Hat ran a longstanding, like multi-year, I want to say 10-year challenge for employees to hack their monitors inside the building to put up a meme image. And I don't want to spoil it, but let's just say that it ends with a business gap.
Probably my favorite kind of podcasts are shows that tell outsiders how things work inside big tech companies and have access to people and perspectives that you don't see every day. Very interesting.
You can listen to Compiler on Apple Podcasts or anywhere else that you listen to podcasts, and we'll also add a link in the show notes. Check it out. Dave, will you read this question, please?
Yes.
Okay, this comes from an anonymous listener who says, I work at a well-funded startup and am likely going to be promoted into another IC engineering role in the next few months.
I'm pretty clear on the leverage I have when negotiating salary before accepting a job offer
But i'm wondering how I should approach negotiation and raise expectations when it comes to receiving a promotion
Obviously my company wants to retain me
Otherwise, I wouldn't be getting promoted
But I don't feel confident in negotiating when i'm already being given a raise and my only alternative to accepting it would be to leave
And find another job
Additionally, i'm on great terms with my company and manager and I would not leave
Over a 5 to 10k difference in raise expectations
Just want to better prepare myself for the offer
my manager has told me that when slash if i receive a raise i can negotiate it's not too late
that came up because i told him i assumed raises and promotions are long processes that need to be
decided way in advance but that is not the case at my company sorry oh great call out
we probably told you that yeah we did say that nice nice job preemptively just shutting down
what you already knew we were going to say yeah well done
i think one of the most important questions when when trying to get a specific financial
concession from your company is do they know what you want the answer is no then it's much
less likely that you will get what they what you want yeah so i mean negotiating and raise
expectations when it comes to receiving a promotion yeah if you have a number in your
head that you want to hit well i guess the downside of this is maybe that number is lower
than the raise would have been and then they can low body yeah exactly your company if you say the
number and your boss boss just gets a really big smile oh sure oh yeah great yeah that's a great
number for me i don't know i i've actually really struggled with negotiating salaries internally
for the most part. I've had maybe one success where it didn't involve me leaving or threatening
to leave or actually leaving for another company, just asking for a particular raise. But for the
most part, companies tend to be pretty rigid on this. But I guess the manager here said,
you can negotiate. You should ask your manager to tell you what number to ask for.
What's the highest number I should ask for? If you're on great terms with your company and
manager one of the so knowing the like the possible ranges is very useful in negotiating
and maybe they would just tell you that's fine if there's not a specific number that you have
in your head or you're worried that that number is lower than what what you could get if you just
said make me an offer surprise me you could also some of the standard advice about compensation
applies here of like try to gather data on what other folks in similar situations have received
in raises if there are other people you know of that were promoted from your current position to
your next role then maybe you could play the salary game with them and swap some information
and get an idea at least of what it was at one point that doesn't necessarily mean that's what
it has to be but i don't know man my best idea is just ask your manager to tell you what the range
is because having your manager on your side will will help a lot in this and if they're already
on your side they might just be able to tell you like they it's possible that they they have to go
through some approval process or pushback or budget juggling or something it's also possible
they just have a range of like i don't know 10 to 15 percent and as long as it's within 10 to 15
percent then it gets rubber stamped and then they can just say 15 or you can you can ask for 15
if you know that you know like what's what's the top end of the it's fine range if you can find
that information out then you're in a good spot yeah exactly don't feel confident negotiating
my only alternative is to leave and find another job i mean your company is worried about you
leaving and finding another job at some point right like yeah i don't think you have to threaten
to leave but you can you can kind of just flip it around and talk about how uh this number will
make me excited to stay instead of like i'm gonna leave if you don't give me x because that's that's
what i'm hoping for in in these kind of compensation discussions is like conf concerns are now off the
table for some amount of time like they're they're they're satisfied with it enough that it's not a
it's not a worry and so they're gonna i can count on them being around and being effective for some
period of time with respect to compensation so if you can explicitly offer that assurance then
you might give them what they're looking for anyways i don't know my brain is used up now
i don't know what else to do besides ask your manager
yeah it's a i like your bet i like your first idea the best just say hey how much should i be
asking for here to get the best possible raise for this promotion and just see what they say
it's just so hard to know you know in a in a in a world where you're negotiating offers with
multiple companies there actually is a market by which i mean there's multiple buyers and one
seller and that's how prices are set you know but here it's just two people kind of mumbling
you know and i'm wondering one you know one party's hoping for a high price one's hoping
for low but there's not really a competitive landscape and so it's tougher i think it is and
this is also it's a place where a lot of bias can creep in and and if you are maybe you're you're
just more comfortable digging for this information because you share some backgrounds characteristics
or or you know ethnicity or gender or something with people who know this stuff it does usually
result in you making more money so it is kind of a bummer that the most effective way is also the
usually the easiest to do for a white dude and and i've seen some places counteract this by having
very very strict well-defined ranges or criteria like we publish pay ranges internally for our
levels so you know this is what the range is and and if you are promoted you're given something in
the range of the next position but you don't have to wonder like if i'm buddies could i get could i
get more yeah yeah could i get even even more than this or something like that yeah and that and you
mentioned ranges and that's that's a great question to ask some companies say look yes we have ranges
at different levels and your promotion will move you into a range that's got a higher top end but
some won't some will refuse to tell you right and so that's a good question to ask though i think
just to like hey am i allowed to know what the range is for this new level what's the bottom
and what's the top and what you'll find is that typically the ranges overlap from level to from
one level to the next level a little bit and that'll tell you also like you know how far into
that range you can expect your company to pay you some companies call that range penetration like am
i 10 into the range 50 into the range 80 into the range and you typically with a promotion you would
expect to be on the lower end of the rate of the pay range yeah in some cases i've even seen where
the promotion doesn't come with any pay increase at all because you're already on the high end
you're so far into the high end of your current range that it puts you squarely right where you
should be based on your current experience and contributions on the low end of the new range
so that can happen too a good way to find out about ranges is ask your company hey are we
posting any positions in colorado because i'm pretty sure they passed a law saying that you're
required to post pay ranges for any any jobs in colorado and then you can just go read those job
postings it's a great idea well have we answered it i think so all right good luck enjoy enjoy your
fabulous wealth and don't remember or don't don't remember enjoy your fabulous wealth and don't
forget who got you there mostly us with a little bit of your own hard work too probably at some
point yeah no congratulations this is a great spot to be in to to be succeeding and being recognized
for doing great work.
Excellent.
All right.
What can people do
if they want their own questions answered?
They can go to softskills.audio
and click the ask a question button.
Thank you so much to everyone who does that.
We really appreciate all the questions
that come in each week.
We love them.
Indeed we do.
And we will catch you next week.
