Soft Skills Engineering - Episode 312: Nit-picking and Promo raises

Episode Date: July 11, 2022

In 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)
Starting point is 00:00:00 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
Starting point is 00:00:52 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
Starting point is 00:01:35 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
Starting point is 00:02:19 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
Starting point is 00:02:57 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
Starting point is 00:03:44 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.
Starting point is 00:04:28 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
Starting point is 00:05:13 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
Starting point is 00:05:55 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
Starting point is 00:06:46 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
Starting point is 00:07:28 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
Starting point is 00:08:12 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
Starting point is 00:08:58 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
Starting point is 00:09:38 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
Starting point is 00:10:28 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
Starting point is 00:11:14 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
Starting point is 00:12:01 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
Starting point is 00:12:46 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
Starting point is 00:13:28 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
Starting point is 00:14:16 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
Starting point is 00:15:03 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
Starting point is 00:15:51 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
Starting point is 00:16:35 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
Starting point is 00:17:23 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
Starting point is 00:18:09 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
Starting point is 00:18:51 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
Starting point is 00:19:34 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
Starting point is 00:20:19 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.
Starting point is 00:21:40 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
Starting point is 00:22:23 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
Starting point is 00:22:54 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
Starting point is 00:23:44 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
Starting point is 00:24:33 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
Starting point is 00:25:20 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
Starting point is 00:26:08 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
Starting point is 00:26:54 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
Starting point is 00:27:41 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
Starting point is 00:28:33 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
Starting point is 00:29:13 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
Starting point is 00:29:52 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
Starting point is 00:30:22 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.
Starting point is 00:30:32 And we will catch you next week.

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