Soft Skills Engineering - Episode 340: Productivity lulls and code review showdown
Episode Date: January 23, 2023In this episode, Dave and Jamison answer these questions: A listener Daniel asks, How do I handle periods of time where I am just not productive as I used to be? I’m talking about peri...ods of several weeks. For example, when your kids are ill all the time (daycare fun) or you are down because of XYZ. How do you turn not really constructive feedback into useful feedback? I have a difficult time dealing with PR reviews from a specific colleague. They have a way to push my buttons somehow, it’s like even when they are actually right, the way they approach the subject or how nit picky their comments are just make it hard to take the feedback or start a healthy discussion. It prompts me to become confrontational. I know it’s not good to react like this, but I don’t feel comfortable talking directly to them about it to try to smooth things out. I don’t think its personal as I’ve seen this kind of comments on other people’s PRs too. I am aware this might be me being overly sensitive, but its like every time he is the one reviewing my PR I get the feeling of “oh, not this guy again” and need to mentally prepare for his comments. I’d like to find a way to take the core of the feedback that might be useful and kind of ignore the rest that might feel dismissive or opinionated, and I thought you might have some tools for this. The main reason I care about it is that this reflected badly on my latest performance review, as I had stellar feedback in general and the only improvement areas were that I should learn how to deal with mistakes or negative feedback better. I am aware it can be a weak point on me , but I know that a big part of that comment from my manager comes from my interactions with this specific colleague.
Transcript
Discussion (0)
it takes more than using a linter in your cicd pipeline only to realize that it was only
pretending to lint to be a great engineer this is soft skills engineering episode 340 i'm your host
dave smith i'm your host jameson dance soft skills engineering is a weekly advice podcast for
software developers about all the non-technical stuff like how to convince your linter to just
be better turns out all of your build tools that check code quality are actually symbolic links to
yes do nothing successfully yep it's my favorite news everything's fine no yes actually outputs a
why and what you want it yeah and it never ends what you what you want is the true command yes
true do nothing successfully false do nothing unsuccessfully oh man if you don't know what
i'm talking about or what jameson's talking about uh go on your linux command line and type man yes
and man true they're pretty good isn't there uh hmm hang on one second this is really important
by really important i mean not important i swear at one point i heard that the square brace
was actually a a program yes a sim link to the test program it is now built into most shells
but there was a time like for example if you used busybox to compile an unembedded system
there was a time when the left square brace was a file that was a symlink to the another file that
was a command called test truly shell programming is the best programming and the closed square
brace was also something i'm trying to remember oh yeah the closed square base was a argument to
the open square brace program that it would ignore just to make it look good on the shell
like it was symmetrical which is pretty funny computers rock that's not what this show is about
no we got pretty deep there but we're gonna come back we're gonna come back and i'm gonna come back
by thanking our wonderful patrons yes thank you so much to andres realis connie lee valentin at
datafold santa hopar noah frazier loge kent c dodds jenny kim own shardle craig motlin i love
mavis the stochastic parrot alice jost land fair pullig i gave up go go go kashokton ohio
patreon.com.au we're hiring ira chan monkey face emoji jonathan king testing is documenting.org
oladapo fadye will angel agner that's a good one it's it's a good one i appreciate it every time
nick hathaway travis sanders braden canes john grant bartek tatkowski cody sale nick
camtar and philip john basile thank you thank you so much thank you we appreciate it and we show our
appreciation in lots of ways one of the ways is by inviting you to our slack team if you go to
softskills.audio and click support us on patreon you'll get an invite to this team where you can
type any ascii characters that you wish the other way that we thank people well you can do way more
than ascii by the way just don't want you to feel limited i don't want to overwhelm them yeah okay
okay anyway the other way that we thank people is i actually have a morning ritual where every
time i put my left sock on i think of the name of one of our patron patreon contributors i've
been doing that for years when you take the sock off do you expel the name yeah i can't remember
any of the names you know what i do if you look at the video you will notice this delightful
giant stuffed cat and i i name that rotating after our our patron contributors nice my kids
are very confused by what to call it what's the name this day father do you want to read our first
question i do this comes from a listener named daniel who says how do i handle periods of time
where i am just not productive as i used to be i'm talking about periods of several weeks
For example, when your kids are ill all the time, parenthetical note, daycare fun, or
you are down because of XYZ.
And that XYZ gets me down too.
Those domain names are so expensive.
You down because the top level domain of, hang on, this is important that I Google.
Are you checking to see if XYZ is a valid?
No, I know it is.
i swear it got a bad rap for being very expensive i've never looked it up all right i gave up i got
part way through looking it up and then gave up persist yeah you're just not as productive as you
used to be jameson yeah usually i quit
what do you quit exactly are you talking about your job your whole job yeah usually yeah usually
this is typically the end of each of my jobs is like i enter the doldrums i'm not productive yeah
and i just can't get out and i feel bummed out and i'm probably burnt out and i'm probably
feeling depressed in some way and trying to deal with problems in my life by quitting my job
and then the excitement of having to scramble to survive and get a new job distracts me from
those problems for a while it's just like you're you're you're a thrill seeker you're an adrenaline
junkie it's just a very weird way of going about it no yeah maybe i'm not anymore well i haven't
done this in a while okay i mean some people go and they go skydiving jameson quits his job
without any future prospects puts himself in a life or death situation his very survival is on
the line that's like when you bring the ingredients to make a parachute on the sky on the airplane
yes here's your sewing machine canvas and thread and rope we're taking off in five minutes
i've never felt so alive until the end
then you have felt more alive then there is yes there was a point in time
where you felt more alive i have felt more alive in the past when i was alive
yeah i don't know if we're talking about the same thing though because some of this is talking about
life circumstances which can be kids being ill it turns out there are all kinds of life
circumstances though can be any number of things i feel like those are kind of separate
separate situations that i would try to handle differently for example like one one life
circumstance could be that a new season of your favorite tv show just dropped so i'm not as
productive as I used to be for weeks. Yeah. It's going to take me a while to get through this
ticket. Well, what do you think, Dave? I don't know. I feel the ups and downs myself as well.
It does happen. I am one of the least self-aware people that I know. And by that, I mean that
my own mood is usually not apparent to me. I have, I have come to learn that when some people
are grumpy or frustrated or happy, they can quantify that and they can articulate that
clearly. And it's in, I guess it, it, I don't know. Is that like you, Jameson? Are you able
to identify yourself that way? Like when you wake up in the morning, you're like, I'm in a bad mood.
Yeah. For me, I find out that I'm in a bad mood when people say, are you okay?
and then i go oh i guess i am in a bad mood it's just not it's not something that is like a metric
that's in the forefront of my mind you know my mood level so for me i notice the productivity
drops but they don't bother me as much because i i generally don't know how i feel
so i guess i guess one technique is bliss yes i guess one technique to handle the periods of
time when you're not as productive as usual is to become unaware of these things.
Yeah. I don't know how to do that. That's a pretty self-aware description of how you are
not very self-aware. Well, it took me 40 years to come to that understanding. So that's how I know.
You would have known at birth if you really had this figured out.
so i i have some suggestions that are divided into two categories and the first category is
stuff's going on in your life maybe you are sick maybe a loved one is sick maybe
your basement flooded like mine did twice last week we've had a lot of rain here yeah there's
there's something going on that is not that that demands your time and attention outside of work
And for those situations, I have found it most effective to talk to my coworkers and
my manager about it.
There have been times where I am maybe unwilling or maybe it's something a little more private,
so I don't want to go into details about exactly what it is.
Like, I can't believe you just admitted that your basement flooded on this public podcast.
I didn't say what it flooded with, so.
flooded with meth juice
yeah so so um people are generally reasonable and good news about life is that it's hard for
everybody yeah it turns out so yeah most likely your co-workers have gone through something that
has affected their ability to dedicate their time and focus to work. So there's probably some more
understanding for it if you address it public or openly, I would say.
At least acknowledge it, right?
Just hide it.
Yeah, exactly.
Yeah, yeah. I have this thing going on and I'm going to be less available between these hours
for this many days. And I would first talk to my boss about it and say, is this okay? Do you have
any concerns here? Any suggestions for what I can do to lessen the impact there? And if they're okay
with the uh the kind of time bounds that you put around it then tell your tell your team and people
that expect to work with you if there's somebody you i don't know collaborate with often you don't
want to just not be around and have them wonder like what is happening to this person that's right
and these days there are some things that they will wonder that they did not wonder a few years
ago namely did you get a second job yeah very timely we we just talked about that yeah yeah
and i i am i'm telling you i've been in multiple conversations where that very question comes up
i think one of my team members is working a second job you know i just can't explain their
unproductivity any other way it didn't occur to us that maybe their basement flooded i yeah their
second job was bailing out their basement yeah it's a lot of work to drink up all the meth juice
but so there's some kind of built-in like courtesy and understanding there is kind of a limit to that
which gets a little uncomfortable right like if you're if you're around less for a couple weeks
that's pretty pretty easy to work around in the most case in most cases if this is like a chronic
thing if it's going to be months or years then there might be legal remedies some countries have
like carve outs for disability or leave of some kind or your company might have some kind of
policy usually those involve some amount of of pay reduction or like there's some trade-off it's
usually not like just go on vacation forever and we will pay you for yeah exactly i'd like that
option please yes yeah but there is a uh yeah there's this fuzzy period of like a couple weeks
you'll be fine and then longer than that it gets tricky and you have to start you probably need to
have some uncomfortable conversations about like what the company needs out of you and if you can
meet those needs long term yeah and like you said jameson there's a lot of reasons why someone could
be less productive. But the one that I'm zeroing in on in this question is that you are just down
because of XYZ. And I'm reading into XYZ to mean just stuff, life. I'm just not feeling it right
now. The motivation is low. I sit down to code, but it's just not cranking out of me. I'm easily
distractible. That's the one for me. It's distractions that suck me away from my job
more easily than if I'm super engaged and excited. And in those situations, I think it's the most
important that you are willing to talk about it, at least to someone. Because in my view,
what's happening in that situation, watch out, I am a space psychologist. So I'm about to
drop some space psychology on you here, which is that the reason you are unproductive in those
circumstances is actually subconscious. There's something going on subconsciously that is
making your productivity levels lower. And the only way to counteract that or to do it earlier
than it would otherwise naturally happen is to move that into the conscious realm.
And the way that I do that is by talking about it to someone like a trusted confidant, a mentor,
a friend or spouse or something like that, who can talk you through it. And then what ends up
happening is that turns into action plans where you can actually do something about it. And they
might say, yeah, you know what? You should take a day off or you should go ride your bike. You
should go exercise you know whatever like here's some ideas and suddenly you're now actively
working on the problem instead of just kind of sitting there as a just kind of waiting for the
problem to be done you know it's like waiting for the rain to stop yeah so that's been that works
for me and i think they'll like the last thing i'll say on this topic is that it's it's good to
be aware that this is a common occurrence in the human condition that not every week will be peak
performance week. And also not every week will be bottom performance week. So just because you had
a bad week doesn't mean that all the rest of the weeks are going to be bad. And the fact that you
had a bad week will help you recognize that what the good weeks are, like what they actually look
like, what your productivity potential is in any given week. So hold on to it. It's okay. It's not
the end of the world. You'll be fine. Happens to everybody. Just bounce back and don't let it turn
into a multi-week drag out i like that that might even apply on earth maybe i mean yeah let's get
orbital and then we'll talk okay i've found sometimes that a change in work circumstances
can help kick me out of the the blahs by which you mean a new job maybe i well yeah that's the
extreme form but i mean like yeah like new new projects i don't know maybe switch it switching
teams is a pretty big deal, but less of a big deal than a brand new job. Learning a new technology.
Yeah, a different tech stack or I don't know. There's a range of things you can do at your
current job to kind of change the kind of work that you're doing. And often that helps if it's
sort of a passing thing that doesn't have like a deep underlying cause.
You want to know the biggest one for me ever?
What?
Two and a half months ago, I started a new job. And that wasn't the big thing. The big thing was
now I go into an office and I work with other people three days a week. And it's been a huge
boost to my productivity. I didn't realize over the last four years, I've been working remote,
full remote since pre-pandemic. And I didn't realize that for those four years, I was just
slowly deteriorating. It awakened me and now I work 60% in person and it's awesome.
like i'm never distracted when i'm in the office it's like i don't know there's something about
having people around that creates this like really nice accountability system that works
great for me and i'm happier with it you know so that that works for me it doesn't work for
everybody in fact some of my team members are just like i will never come into this office
i'm like okay that's fine but i like it did did you choose deliberately or were you asked
to come into the office you chose well it was part of the it was a known it was it was known
by me before i took the job that it was required to be in the office three days a week for this
role and i was i was actually looking for that because i had come to the realization remember
how self-aware i am like on a scale of one to ten i'm like a one it took me four years to realize
that remote work was getting me down huh you think i would have figured it out because in the first
year i would travel every quarter and spend the week with my team and those were the best most
energetic most productive weeks and then i'd go home and just be like i'm unproductive
I don't know why, though.
Actually, I didn't even know I was unproductive.
It took me four years to figure that part out.
I've been working from home for longer than that.
Now I wonder, did I just forget what it was like?
And then especially the pandemic has taken away the in-person get-togethers.
So I haven't even had those meetups for the past few years.
Oh, man, that's true.
Not everybody needs that, I'll say.
In fact, a lot of engineers, I think, are just happier without it, without the in-person work.
Yeah.
And I'm fine with that for my team, but not for me.
Yeah, makes sense.
Well, should we go on to the next question?
Yeah, let's do it.
I think I would very much like it if you would read this one.
Then I will.
I want to do things that make you happy, Dave.
I know.
This is from an anonymous listener who says,
how do you turn not really constructive feedback into useful feedback?
I have a difficult time dealing with PR reviews from a specific colleague.
They have a way to push my button somehow.
It's like even when they are actually right the way they approach the subject or how nitpicky their comments are
They get hard to take the feedback or start a healthy discussion
I become confrontational. I know it's not good to react like this
But I don't feel comfortable talking directly to them about it to try to smooth things out
I don't think it's personal as i've seen
these kind of comments on other people's prs, too
I am aware that this might be overly sensitive, but it's like every time they're reviewing my pr I get this feeling of oh
No, not this person again
i need to mentally prepare myself for their comments i'd like to find a way to take the
core of the feedback that might be useful and ignore the rest that might feel dismissive or
opinionated and i thought you might have some tools for this the main reason i care about it
is that this reflected badly on my latest performance review as i had stellar feedback
in general and the only area of improvement pointed out was that i should learn how to deal
with mistakes or negative feedback better i'm aware it can be a weak point of mine but i i know
that a big part of that comment from my manager comes from my interactions with this specific
colleague aha i see negative you're getting feedback on your code reviews it's coming
across really strongly negative and not just you know not just what's the word i'm looking for it's
negative in the sense that they want you to code differently but it's not just negative it's like
it's personal it's like you are a bad person and i hate you and you should feel bad
and apparently you're so the question asker's reaction is strong enough that their manager
noticed and called it out in the performance review which means you know it's it's probably
happened enough and it's been high enough magnitude that they called it out yeah have an idea that
feels like kind of a workaround but might help which is some agreement on expectations for how
you communicate feedback in poll reviews on a poll request in code reviews those words
i'll have to find the article i dug it up a while ago i think i mentioned it on the show before but
there's a company that has this this system of ranking like importance of feedback
by by default when you at least in github when you type your feedback everything is a comment
right it all looks the same right and and it's not all the same so all the same sometimes it's
like a cool neat thing i noticed or sometimes it's a you have this glaring hole in your design
that will cause a huge problem so the system is is to give like tags to these different categories
and i think the how many categories was oh there were like five i don't know the number matters
that much there were there were 19 simple categories it's very straightforward yeah but
this one was based on uh like rock sizes so it was like pebble and then i was like grain of sand
did it start with a grain of sand please say yeah probably yeah dust particle yeah they did not one
silica atom but the way that might help is there could be some of this feedback that the feedback
giver feels strongly is really important that you take and there could be some that is like
their opinion that you know it comes across pretty strong but really they they won't put up a huge
stink if you don't follow it or or really they don't think it'll have a huge impact if you don't
follow it right and even if they don't think this having this system can encourage them to categorize
it this way because if every single one of their comments is like mountain right per n needs another
space here like no it isn't mountain i only do mountain we have everything from single particle
of dust up to mountain and i only use the mountain yeah mountain flip the variable names of the inner
an outer loop from i to j vice yeah you know what i mean so this is kind of a not kind of this is
definitely an indirect solution because you're you're completely avoiding like talking to this
person about it and becoming more stoic and stalwart in the face of this feedback that is
upsetting to you but it might be good for your team there could be benefits there especially if
if this same interaction is happening with this person and and other people it's also possible
that you can just talk about this and then like it doesn't happen or it doesn't work or right
everybody does it but this person they don't even notice they're like yeah it didn't even help
that's that's the thing you could try i'm just thinking of failure modes for this approach
and like one way that this goes bad is you're you're sitting down with your team and you're
presenting this system for how to how to convey the strength of each comment on a code review
and um the person in question the other person that's causing all this grief to you
they actually propose an alternative system of communication for how people respond to
code review comments it's like oh crap right back at me yeah no or in the presentation they
raise their hand and say mountain i think this idea is garbage and we shouldn't do it
totally i've i've been on the receiving end of negative you know strong overly strong language
in code reviews which i think is how i would summarize this overly strong language that you
feel is it like overly certain like it feels like yeah that's how it was for me they're saying like
this this is bad and you're like no that's a stylistic choice that i right disagree with
you know like i've known a couple of people who have given me feedback like this that i thought
you're you're using words and tone that convey that this is extremely important and extremely bad
and must be fixed but when i look at the actual recommendation it's either not right or not that
important you know like i remember i i got feedback once that in java you know you're uh
geez it was like you know change your order of operations on your and condition here because
this one is more likely to happen more frequently so it'll make your and condition go faster and
it'll run faster and those are the ones that really bother me because it's like oh really
you think it'll run faster did you go ahead and and take the pr and run it locally and benchmark
that code or did you just say yeah that looks like it'll run faster to me like that that one
always bothers me because i'm like it's intellectually late i feel like it's intellectually
lazy to accuse someone's code of being slow when you haven't actually timed it you know yeah it's
like saying you know the zero the zero to 60 on this car is so fast i've never driven one or no
one's ever measured one but just look at it you know yeah it's so fast looking sleekness of its
lines i know look and it's red there's a guy named fayesh lev igorov i think is his name who's worked
on i think he's worked on dart for a long time but he used to give a lot of talks about performance
in javascript when the the like jit stuff was was fairly new and i remember him saying is the
compiler smarter than a table like you should ask yourself this question every time you look at a
benchmark in his cool russian accent uh-huh what do you mean by table well like i don't know think
of that order of execution thing like a not dumb person could say well maybe the compiler could
figure out which thing is more likely to oh right put that first exactly exactly it's like oh well
someone wrote a compiler so anyway yeah so that always got me and i've known two people in my
life who have been this way and i found out i just over the course of years i it just occurred to me
that their communication style is just a little different and they don't actually mean to come
across this way and so i learned slowly to take those comments as how they were i hope intended
and not as these like daggers to my heart, you know, that attack my very self. And that's called
developing thick skin. And frankly, that's a valuable skill to have. And I think that's
something that people, especially in software engineering, can benefit from.
Yeah. So you're talking about specifically the ability to not
take it personal and get confrontational about it.
Don't get worked up. Like, just don't worry about it. It's like they wrote what they wrote. Now you
get to choose how you're going to feel about it. And there will be a default feeling that you might
have to fight. Man, here we go. I'm doing psychology again. What is this? It's crazy.
But well, I have a technique for how I deal with this. So that technique is I follow a pattern
whenever I receive feedback. And the pattern is step one, thank them for writing the feedback.
And this, when I say thank you for sharing that feedback, it just immediately, I don't know what
it is about my brain, but it immediately changes the mindset from I'm going to defend myself to
I'm going to thank you for taking the time to put in the work to help make our code better.
Thank you for putting in the time to give me this feedback. Then I respond with, if I have
counterpoints or whatever else, I can communicate that back to the person. But I always start with
thank you, even if it's really strongly negative. It's like, whatever it is, they put the work in
to do it. So you should thank them for that. And side benefit, your mindset might change to be a
little bit less defensive. So that, that could help with your reaction. If, if the problem is
mainly kind of the, the, the other person, the, yeah, well also, well, it's always the other
person. It wouldn't be our question asker. If you are able to successfully act on the feedback
can either like resolve it or not or whatever like get get your stuff through but the feelings
are are the problem that can help i feel like there could also be a problem beyond that where
it's like i am very offended and attacked and now we have to like battle it out over yeah which what
the order of these stupid things is in the and clause or whatever and and you will do that more
calmly but you still have to do that if they're really going to stick to their guns right you
still have to actually address their concerns is that what you're saying yeah yeah like you might
be more calm about it and not get worked up so i think at some point you will have to either say
okay i give in or right i have look i convinced you you're wrong or i disagree and feedback right
like i'll just change my code yeah yeah like the passive mode that's true and i think so this is
actually harkens back to your previous point jameson about how the the reviewer should take
the time to communicate the level of importance of their comment. And if they don't, then you can
ask them and say, okay, I've heard your feedback. I understand it. I want to make sure I understand
how important this is. Are you saying that you'll block this PR until this is addressed? Or are you
comfortable with this shipping to production? And I promise to create a JIRA ticket that will sit on
the shelf and never get looked at yeah yeah that's so good if we address this in a follow-up
pull request that will never happen that's right anyway yeah that's a good point yeah calling out
explicitly like do you want to use your veto on this because you don't get infinity of these
yeah you don't get right you become the person who just blocks everything for exactly because
because i think if you keep your eye on the outcome that you're going for and the outcome
that you're going for is working code in production that produces the value that you want which is
usually for an end user or customer or whatever it is. And so if you stay focused on that and
don't get sidetracked by my code has to go to production as is, because that's not the objective.
The objective is a useful feature being built or useful bug being fixed or whatever it is
for the end user. So keep that person in mind and then find the best path to that outcome.
Yeah. Figure out the right thing to do. I think that's what that advice was.
Easy.
easy peasy maybe that should be our new quit your job is do the right thing do the right thing think
of the outcome that you want and then do the things that will get you that outcome yes when
you have two options laid before you choose the one that will lead to the outcome you want
that's great it's the perfect advice
if if you have more than two options keep removing options that won't lead to the outcome you want
until you have two until only one remains and it's the one that gets you there that's induction
baby start with a base case yeah all right have we answered the question i think we got pretty
close it's a tough situation and i'm tempted to go into the topic of can you change other people
yeah me too no you can't okay no this person is unlikely to become
less confident yeah they may choose to change themselves eventually but it will not be because
of something you did there i've seen that happen too do you know what will change them dave
uh no sharing this show with them no and not this show as in like listen you're the bad person in
this question i want you to listen to all the i want you to be called out but like expose them
to soft skills engineering watch as their life improves as they absorb positive energy and
develop their space law degrees and just i would say watch them as their life slips into a slow
but obvious spiral of doom where they become less productive at work more obstinate more
misanthropic and eventually they stop listening to this podcast and get back to being happy
well they just uh applied the do the right thing methodology incorrectly then
yeah clearly unless that was their goal i guess anyway yeah okay ah question answered what can
people do if they if they want their own questions answered dave go to soft skills.audio and click
the ask a question button and remember when you go to our website the first thing you got to do
is say what is the outcome i'm going for and then just look at all the buttons on the page and click
the one that will get you to that outcome once again once again the advice works you can fill
out that form and we want to say thank you to everyone who fills that out each week we love
reading your questions they are very very good frankly they are question fuel they are fuel
it's a metaphor it's a metaphor they like they they fuel our passion and desire to keep doing
the show oh very true yes shoveled into the the furnace the flames growing ever higher the steam
of wisdom heating up.
Way to pull the metaphor
and really just let it go.
That was awesome.
Flowing through the pipes
of the internet,
the series of tubes.
All right, let's get out of here.
Thank you for listening.
We will catch you next week.
