Soft Skills Engineering - Episode 277: Super long code reviews and replacement laptop
Episode Date: November 8, 2021In this episode, Dave and Jamison answer these questions: Questions My company recently had a kerfuffle where some teams felt that reviewing a PR in less than 3 weeks was an unreasonable ask.... As such, the company is trying to come up with guidelines for cross-team asks. The current proposal is for work of 1-2 hours they will commit to an SLA of 6 months. I feel this is a polite way of saying no to any request. Are there any ways we could come a more reasonable agreement on this? Hi, my laptop has died after upgrading to MacOS Monterrey and I’ve been given a 2017 Macbook with poor specs as a replacement due to no fault of my own. I’m at a startup of around 100 employees and I don’t think we’ve got a mature set up in terms of getting replacement machines. I’m a Senior Engineer and need a speedy laptop for my intense role. It’d be faster for me to use my personal MacBook than using the replacement, but I don’t think that would be allowed. How would you suggest I go about requesting a replacement MacBook with specs that fit my role? Do companies have budgets set aside for these expenses? Thanks
Transcript
Discussion (0)
it takes more than signing handwritten letters with colon wq wq wq instead of xoxo to be a great
software engineer this is episode 277 of the soft skills engineering podcast i am your host
jameson dance i'm your host dave smith soft skills engineering is your weekly advice show
about the non-technical topics
around the technical field of software development.
I don't even know what the Emacs version...
Oh, go ahead.
Nothing says, I love you, like, colon WQ.
Like, I'm furiously trying to quit this letter.
I don't even know what the Emacs version of this would be.
It's like control all spacebar escape 1234
or something like that.
You have to hold down more keys
than there are average human fingers on a human being.
First, you must learn Emacs Lisp,
and then you can quit Emacs by writing a simple function.
A simple, pure functional script.
I don't think Emacs Lisp is pure.
It's just pure about parens.
Oh, okay.
That's not what this show is about, though.
Nope, but I do love it.
That one really got me by surprise.
Okay.
We have some feedback from a listener.
Yes.
We got a very interesting message from a listener named Daniel Macheder.
I think I'm saying that right.
Maybe, but probably not.
About episode 276, which I'll remind you was about negotiating an exit incentive.
This is like, I guess we talked about this last week where you negotiate a payout when
you leave a company.
Daniel writes the following.
Hey, just listen to episode 276 and wanted to give you a heads up that negotiating exits
can be a thing over here in Europe.
Maybe the question asker is European. It's usually in the very specific context where the company needs to lay off staff, for example, to make the books look nicer before a merger or sale, which in itself is already much more expensive over here than in the US. But then it gets even more difficult in companies with a strong union as they can require the company to lay off people in a specific order respecting social criteria. In such a situation when you're a very expensive staff member that they could not easily lay off or otherwise, that gives you some leverage to negotiate an exit.
these are very specific circumstances though keep up the good work and thanks for the consistent
entertainment huh thanks for the feedback yeah very interesting but i was gonna say i won't
idly speculate but then then the show would be over so there has to be some some legal requirement
of like you have to pay them at least this much and they you're somehow offering them
something less expensive than somehow it is better for them than to just do what the the union
contract requires right otherwise why wouldn't they just keep doing the thing yeah there must
be some penalty for laying someone off without some amount of notice or something and the penalty
is big enough to where it makes sense for them to pay you a lot of money but when you leave
yeah there's a good call out though about um unions being a thing in not america in software
and a lot of industries we definitely have our america goggles on sometimes this might be a good
opportunity to announce the new software engineering union that Jameson and I are
starting. You get in by just contributing one or more dollars to our Patreon account and then
that's your dues. And then we'll negotiate on your behalf for anything, anything at all.
Use cars, whatever. You feel like the price of gas is too high?
Call us. At the pump? Yeah, just haggle with the cashier.
Yeah, that's right. In this union, you actually do all the negotiating yourself.
My bad.
Well, you'll learn about the rest of the benefits in the Slack team that you get invited to.
Exactly.
Yeah, don't worry.
They're really good.
They're extensive.
Yeah.
I want to thank our sponsor.
Thank you very much to Hired for sponsoring this show and this episode.
It is the best way for engineers to find their next job.
And good work, listeners, by the way.
They like us.
They said they are seeing great success from this ad.
So keep it up.
Yeah, keep quitting.
Yeah.
Good job quitting.
All right.
Do you want to thank our patrons, Dave?
Yeah.
Thank you to those people that are giving us so much money that we shout them out every
single week.
They are Andrew Polak, an invisible iframe clickjacking attack, Trans Rights, Ian Walter,
Arun Dunna, Kashokton, Ohio, Cameron Hall, patron.com.au, we're hiring, Ira Chan, Monkey
Face Emoji, Jonathan King, TestingIsDocumenting.org, Roman Denisov, Fizzbuzz underscore Influencer,
Oladapo Fadayi, Karen Sveinsen, Will Angel, Ragnar Hardison, Nick Hathaway, Travis Sanders,
dennis bogdanoff brayden canes john grant i bought winrar nick cantar nick cantar philip
java seal bites of wisdom.com with a y if you would like to join this illustrious crew just
go over to soft skills.audio on the worldwide internet web and click support us on patreon
any dollar amount will get you access to our slack community and those invites go out the first of
the first week of every month which reminds me i'm late we'll get those out to you right away
also if you contribute enough we'll say whatever appropriate words you want us to say
every week on the show as is traditional with unions that's right that's right following the
footsteps of the teamsters i don't even know what yeah the steel workers of america inspired us on
this one yes all right i would like to read our first question can i please you have my express
permission all right this is from an anonymous listener who says my company recently had a
kerfuffle where some teams felt that reviewing a pr a pull request in less than three weeks was
an unreasonable ask as such i i hesitate i wanted to change ask to request but i'll i'll do it for
you listener i'll be faithful to what you wrote okay instead of the word that's better as such
the company is trying to come up with guidelines for cross team asks the current proposal is for
work of one to two hours they will commit to an sla of six months i feel this is a polite way of
saying no to any request are there any ways we could come to a more reasonable agreement on this
i felt like that was an impolite way to say no that's what i was gonna say that's not that's
not super polite an sla of six months oh my gosh i i had a fight with somebody about slas at my
last job because they kept using the term SLA for like uptime and latency targets. And I was trying
to tell them it's not an SLA because we are not going to pay the other team at our company money
to make up for not hitting the number. It's not, there's not like a contract around it that you're
talking about a target. So maybe this is all a misunderstanding and they want you, they're saying
an SLA of six months because they don't want to pay a heavy financial penalty if they don't get
to it right away. But if you say, oh, no, we're not going to sign a contract. Just do this in a
day or we'll be mad. Then they'll relax. Say it's an SLO instead of an SLA. Yeah, that's the term I
was going to call out. In the last few months, I recently learned the term SLO, which stands for
what, Jameson? I don't want to look stupid. Service Level Objective. Yes, which is like a
weasels version of an sla there's no money on the line yeah no it's not yeah the sla is like
the contractual agreement of what happens if you do not meet your slos uh this is this is great
because it's given me something else to be pedantic about yes which clearly just makes
makes life better for me my boss's boss is like talking about slas and i well actually him in
slack in front of everybody yeah i was thinking like this is this is unusually pedantic for you
to to be like no no no your your three-letter acronym is off by one letter i care about these
things i i like this kind of stuff like reliability and resilience and sre type stuff so i will be
pedantic about it well i thank you for calling that out because now i have to go and change a
bunch of wording on my current team because i've been using the word sla in the way that you hate
Ah, but that'll get you an S-L-A-P.
Service level agreement problem.
Punch.
Service level agreement punched.
That's what a slap is.
Yeah.
All right, so that doesn't solve the problem, though.
I'm sure they're not.
they're not an a misunderstanding of what sla means away from being reasonable exactly if only
if only they knew that if only they would change this at this six month term to be an slo then all
your problems would go away yeah if that doesn't work the proposal is for work of one to two hours
an sla of six months what did that make what did the one to two hours part mean to you i think that
means it takes an hour or two to do the to write up the work or are you saying they expect an hour
or two of work to review the pull request like it'll take you an hour or two to review this
if it takes an hour or two we'll do it six months from now is that yeah is that i mean
this whole paragraph just drips of what like who is this team don't you know you're supposed to
rubber stamp stuff in code reviews what do you mean you read every line and try and understand
the architecture changes yeah okay so i i had thought it meant this is an hour or two of work
to create the pull request like it's a little tiny fix but that makes way less sense than what
what i think you're saying which is it'll take an hour or two to review this and and they're saying
we'll get to it within six months okay that yeah i think that's what it's saying i think you can
well okay if you want to escalate the situation you can say oh no thanks we just we just won't
need your reviews then yeah that's fine we need it sooner than six months so we'll just go ahead
with the changes exactly given given your the constraints that are clearly upon you we're
going to do you a favor and we'll just ship this code without your review yeah i i assume they have
strong ownership they being the team that is telling you we'll get your pull request in six
months i'm assuming that they have some kind of strong ownership over the code base maybe even
like enforced by whatever system you're using so maybe there's not a button you can press to say
merge this or i feel like this or something i feel like this team is the living embodiment of those
recorded messages when you call in and you get like a robot on the other end and they're like
your call is very important to us the wait time is currently six months
your bug fix is very important to us what's the other thing they say we're experiencing
higher than normal pull request review pull request review backlog yes yeah also our menu
has changed uh guidelines this yeah this just all stinks like and i mean stinks as in like org smell
i guess have you heard of code smells where there's there's signs in the code that something
bad is happening yeah this feels like an org smell that you're trying to come up with a guideline for
cross-team requests at the company level because this team just can't get it together like yeah i
feel like that that feels like a low trust environment where you're saying we have asked
you to review our code you have said no that's unreasonable so we will form a committee to
create a constitution of pull requests review expectations and that's okay but it's still
going to take forever this to me this smacks well i can think of a few scenarios where this could be
happening scenario one is that this is a team with a very complex but also very central code base and
in your company a lot of other teams depend on this team's systems but the complexity is high
enough that this team has learned that when other teams try to contribute it ruins their lives
and so i imagine that they didn't feel like they could say no to other teams contributing code
changes and so they they wielded the bureaucracy weapon instead to say oh no we we definitely
welcome code changes from every team like pull requests welcome yes pull requests welcome
there's a slight throughput problem just a small latency issue so that's how i see it that's one
scenario i can imagine is where they've just been burned so many times from outside contributions
because you know how like other teams they don't quite have the they don't have your long-term
best interests in mind sure and so they'll make short-term changes that kind of ruin your life
in three months you know yeah and then it's like oh crap now we essentially have a contract with
this team that made this point solution in our code base that we'll never be able to get rid of
so i can imagine that's what's happening but they just didn't have the backbone to say no sorry we
don't do that but we have a six-month roadmap process and you can talk to our product manager
or you know whoever yeah yeah get the get the code reviews on our q3 roadmap yeah and that's
that's actually pretty common at big companies so at a big company i worked at it was like yeah
look these teams these central teams that provide libraries or platform services for other teams
they have long three to six month roadmaps that are all booked out and it's like if you want to
disrupt that you better have a pretty compelling business case and a vp or two in your back pocket
to tell them to change hmm a kerfuffle or something just reading through this question again
yeah that so i worked at a previous job where there there was a situation kind of like this
where there was a central complicated kind of high stakes piece of code that one team was
responsible for broadly and and especially was responsible for deploying and it was a horrible
pain to deploy and and also responsible for like production incidents with it like they they could
flow out to other teams if they found out oh it was this other team's thing that broke but it all
went through this team yeah and there there were several other teams that wanted changes made in
this system and and could not just ask the team that owned it to do it for them because of time
constraints and then there was this weird dynamic of of making the changes and then trying to push
them through and i do yeah i remember very vividly seeing that friction of um the team that wrote the
change has some deadline they're trying to meet or someone pushing on them to get this thing done
the team that owns the system is like reluctant to accept it but also reluctant to be a blocker
and it kind of just sits it didn't turn into this bad of an issue with with specific slas and stuff
like that but it was tricky to figure out and i don't think that i ever saw it solved well i think
the the thing that made it better was just the people on the other teams got a little bit better
at working in the code base but that's not that's not like a a change to the system that solved it
that's just trust developed after they worked together for a longer period of time yeah it's
almost like i wonder if this team has a similar thing where it's like it's six months for you
and for everyone else it's 24 hours
yeah yeah i was thinking about this very ungenerously about the team but your comment
about these central libraries that have very uh broad dependencies on them or something that
that makes maybe a little more sense if if it literally is like finding the time to look at
your code you can do some things to make the code review shorter by making your pull request easier
to review i don't think that's the problem here though i don't think if you take that time from
one hour to 30 minutes then the sla will go from six months to three months i don't know if they
can't yeah that doesn't seem like the issue so you could rewrite their system to not depend on
them just route around them how so i don't know they own some central service just make make your
own version replace your own central service yeah that's kind of tongue-in-cheek but if if if it's
just your team then there's probably some conflict between the teams at maybe a personal level
if it's this team and every other team then you your company has a big central blocking dependency
that is bad and and probably needs to be solved at an architectural level so i i think the point
i am i'm meandering towards is you probably need to find out what this team's incentives are for
saying this and and figure out how you can change their incentives i don't think you just lean on
them to work harder i don't think that will work and we'll probably make them dig in even more
but you have to figure out why they're telling you we can get to it in six months is it because
like you said if this if this change goes out and break stuff then it's it's it's like the
apocalypse for your company then then maybe you should solve that problem yeah indeed and my last
company we had a model that we called the away team model and we we went to great lengths to
define rules of engagement for cross-team collaboration like this including i'll just
say slos even though we probably said slas at the time of review turnaround times and so once we had
established that we wrote up a document shared it with the organization and hundreds of developers
followed this practice i didn't invent this it was well it was well established across teams but
we kind of codified it for our little corner of the organization and i'd say it was pretty
effective at least with the backdrop of a six month turnaround time on reviews it was very
effective by comparison yeah i i didn't know reviews could take this long in in the normal
case i'm not aware of any code review that after six months is even valid to review and maybe that's
why they chose the word six months they were like oh rejected that all the code you want to change
has has upgraded and migrated away from this pattern bad news about those apis you're depending
yeah they're all gone so sorry what's what's like the opposite of lgtm where it's just like
i need an acronym for i'm closing this without reading it because it's obsolete
rtfm maybe i don't know lol you just type lol that's the acronym lol closed
that could be what the team does to you too if you uh if you say no we have to have this
code reviewed within a day and then they're like okay the answer is no we'll give you a review for
all of your code from here on out forever you don't even have to ask us right it's it's easy
just type no and close your pull request right you can do it yourself yeah oh man yeah so i've
i've heard that uh stripe is pretty good about code review um happening within hours to when
you submit and there's a cultural norm of of you kind of drop what you're doing and and review
other people's code i've worked at one startup where that was the case i've worked at places
where it took a day or two i've worked at places where sometimes it took a few days i don't think
i've worked anywhere where it generally takes longer than like two or three days to review
the the the pull requests that are kind of in the middle part of the bell curve of complexity
right yeah this is just really weird and i think there's got to be some other pressure on this team
that is that is saying this that makes them feel like they can't maybe maybe they have too many
people submitting code reviews and they can't just they they would just spend all their time
doing it yeah i don't know yeah there's definitely something very strange going on here because the
messages that are coming out of this team are not the messages i'm sure do not reflect the reality
like no team would reasonably say there's a six month turnaround time on reviews and that's what
we're striving for unless there's something seriously wrong you so you could do a little
bit of an appeal to how how this would work and appeal to authority where the authority is some
book somebody wrote that said here's how you do it like you can talk about how the the kind of
industry standard for this is hours to days and and what is getting in the way of us meeting that
standard like what do we need to change so that we can get code reviews done in hours to days
instead of just push and say review our code faster
because that maybe makes it a little bit less aggressive
and turns you more into someone willing to help
with the problem that is causing them to push back
instead of just applying pressure to work harder
or ignore all these other incentives they have.
I can't imagine that the manager of your team
is happy with this either.
At some point, this feels like it needs to get escalated
upward and and someone higher up that is in charge of both of the trees that these teams fall under
needs to help weigh in on this absolutely there's something dysfunctional here that needs management
attention for sure and maybe maybe it's just architectural you know yeah in that case it'll
be a year to solve right yeah that's a longer fix have you answered the question i think so
good luck sounds very tough i would love to hear more details about why it takes that long too
like oh yeah yeah if our assumptions are correct about about what's going on in that team hey
jameson have you heard about the great resignation is it that charles dickens book
wait no the entire population on earth has started taking our advice of quit your job
oh yes that's right apparently we have achieved influencer status we've been telling developers
for years to quit their jobs. And now we want to tell you how to do it. We're ready to reveal
the secret. I mean, you don't just walk out shooting finger guns. Yes. Well, you do that
first. But after you do that, there's a new service we want to tell you about called Hired.
What is Hired, Dave? Hired is the biggest AI-driven marketplace that matches engineers
with companies. It is a great way to find your next job. I've been watching this industry for
20 years with a keen interest on hiring in particular. And I've never seen anything like
Hired. Tell me about what you're seeing. So I've interviewed about 150 people in the last year.
And I am serious. Every candidate that's come to me through Hired has multiple offers. And they're
incredibly high, scary high, like 30% higher than other candidates. Is that before or after
the finger guns? Both. The beauty is, it's totally free for engineers. And we would love for you to
go try it go to hired.com soft skills to check it out hired.com soft skills quit your job the best
way and check out hired would you like to read our next question dave yes i would this comes from an
anonymous listener who says hi my laptop has died after upgrading to mac os monterey i gotta insert
a comment here this is not an endorsement or an anti-endorsement for any version of any operating
system okay and yeah apple we have to edit this out we're not giving apple free ad time
just kidding don't actually edit that out that was awesome
okay anyway my laptop died and i've been given a 2017 macbook with poor specs as a replacement
due to no fault of my own i'm at a startup of around 100 employees and i don't think we've
got a mature setup in terms of getting replacement machines i'm a senior engineer and need a speedy
laptop for my intense role it'd be faster for me to use my personal macbook than using the
replacement but i don't think that would be allowed how would you suggest i go about requesting a
replacement macbook with specs that fit my role do companies have budgets set aside for these
expenses thanks yes they do if you're 100 people then your company should have some budget set
aside for equipment replacement they were like when we made the budget at the beginning of the
year we were 15 people and we budgeted for 15 laptops now we're 100 so we're just we're going
to goodwill and getting computers off the shelves and handing them out to new employees i've been
given a 2017 macbook pro with poor specs you know some people would be would love a 2017 macbook pro
with poor specs maybe you just need to change your perspective and not use a gui and as i recall that
was the worst macbook pro ever made it had oh is that the one with the crappy keyboard yes all the
time the keyboards break they got rid of a bunch of ports the touch bar is terrible and everybody
said no no just keep your 2016 macbook i read uh someone was doing um reviews of macbooks in
reverse chronological order and pretending like they were new releases and so they did a review
of the the one before they switched to usbc and it was um glowing it's got hdmi ports it's got sd
card slots it's got this cool magsafe adapter they got rid of the touch bar you've real keys
it's only a little bit thicker what a good change that's so funny yeah you could ask for a 2016
macbook then yeah exactly and also through no fault of my own maybe you're maybe you're finding
out currently that you have offended somebody this is their way of getting back at you
your it staffer is mad yeah yeah you didn't come to their birthday party
try and build your javascript bundle now it's impossible it went for five minutes to 45 hours
45 hours till you get the crash because you ran out of memory
yeah okay here's so what you can do is say i need to either rewrite our tool chain
in something faster so that it works on my machine or you can just buy me a new laptop
and it'll take like i don't know maybe 50 years for me to rewrite the operating system
and then probably another hundred of to build a working web browser so that's several i don't
know is that hundreds of millions of dollars by then perfect can i just get that prepaid that's
the trade-off there's a 50 discount if you pay me right now yeah
yeah i don't know this feels so obvious to me like you just the the cost of a of a cruddy laptop
is pretty apparent for software engineers even if it's if it's if it's twice as slow then
you're you're more than twice as frustrated yeah so and and in this it's not that much money to a
hundred person company it's like what two three thousand dollars someone has a credit card that
they just spent that much money on for for like something way less useful for the company than a
laptop yeah this company is probably spending over 10 million dollars a year on salaries
so just put that in perspective if they bought a hundred three thousand dollar laptops that would
be like two percent of their budget of their labor budget so undoubtedly this would be fine
i i think the question at the end is how do i go about requesting a replacement macbook
you go about requesting a replacement macbook by requesting a replacement macbook
you say i want a replacement macbook that's not four years old and then your manager says okay
and then within a couple of weeks you have one i mean at the at the very most i could see you
having to say it is frustrating to have this laptop for these reasons it makes my job harder
because of i don't know xcode takes longer to start up or whatever it is yeah if i could pay
$3,000 to make one of my engineers much less frustrated and much more productive, I would do
that in an instant. Yes. Yeah. So this should be a good investment for your company. It is. It
absolutely is. And I think, so I've seen a lot of equipment replacement policies and typically they
go something like this. Pick a number of years and everyone gets new equipment in terms of, you know,
computers after that many years. And the longest one I've seen is four. I don't know how many,
maybe five companies four years like no one no company i've ever worked for had a replacement
policy that was longer than four years so you're already there i think the fact that they're
handing out new ones tells me that i don't know maybe they just don't have or sorry i said new
ones the fact that they're handing out fully four-year-old laptops tells me some maybe something's
wrong or maybe they were just hustling and hoping that you would be okay with that or maybe the it
person who hands out laptops doesn't actually know how old it is and just thought oh that looks
that's a space space gray macbook hand them one of the gray rectangles that's the instructions
written down from the gray rectangle bin
exactly
i hadn't thought about that if they were 15 people at the beginning of the year and they've grown
that that could be a reason why it's just chaos but the good news if your company is growing that
fast spending money is not a problem it has you you have spent a lot of money to grow from 15 to
100 people so they should be comfortable just throwing more money at stuff to make problems
go away yeah do companies have budgets set aside yeah if if they're stable and mature then for sure
they do which this one is probably not i mean i wouldn't i would not this is 100 people in today's
economy. That's probably a fast-growing, I'm just going to assume, fast-growing company.
They haven't even thought about this problem before. They've just been able to get by
replacing laptops as people ask for them. And you'd be surprised how much money that can save
a company by just saying, we don't have a policy. We wait for you to ask. And suddenly, you've saved
$50,000 a year because not everyone's willing to ask. Yeah. Which is not great, but maybe you can
champion the creation of that policy. Yeah. Something tells me your company is about to
get an equipment replacement policy if you play your cards right yeah so ask for it that's pretty
easy yeah go to your manager and say my computer's too slow and if you want to be if you want to make
it really really easy for your manager arm them with information such as under my old with my old
computer that was newer i was able to get workflow x where workflow x is an important part of the
development process done in Y amount of time. Now with my new one, I am getting that same workflow
done in Y times 1.8 or whatever the number is. It's taking you a lot longer. And then just add
up the amount of minutes per week that you're spending waiting for your computer. And that new
computer will get to you in a hurry, I promise. Yeah. For me, the frustration with slow company
provided tech was i feel like that was a bigger cost than the actual productivity loss of of the
time waiting like the increase in time to do things paled in comparison to my incandescent
rage at like how dumb this was that i was sitting here waiting and then that lost me more productivity
what about when it takes away what does it do it takes you out of the flow and so you're
that much more likely to navigate over to Twitter,
you know, a social Slack account or something else.
And then three hours later, you come back to work and go,
oh, that's been done for two hours and 47 minutes.
Yeah.
And if only it was done two hours and 57 minutes ago.
Yes, I wouldn't have gotten distracted.
So there's a cost to that.
You can appeal to Moore's law,
say that transistors have doubled a few times on chips since then,
and that's important to you.
and therefore my productivity is held back by a factor of 47 yes with this 2017 i think we answered
this i think so too it should be this should be easy i think right in fact this might be the
easiest question we've ever answered i was just thinking that you know what else i thought
i don't think quitting your job is a great solution to this question
but you will very likely get a new laptop if you quit that is true but that's an expensive
solution there's a way yeah that's that's the nuclear option isn't it always though
yeah be prepared to quit if they say no
all right what can people do if they want their own questions answered go over to
sawskills.audio and click ask a question you can fill out our form and we just want to say
thank you to everyone who has done that so many of you have written in questions every week
we will answer them all one day that is a promise i'm guaranteed not to keep but a promise i will
make nonetheless guess what when it's broken you'll be dead who cares
and on that note have a great week we will talk to you next week
