Soft Skills Engineering - Episode 326: Good perks, bad code and paper shredder suggestion box
Episode Date: October 17, 2022In this episode, Dave and Jamison answer these questions: About a year ago I joined what it seemed to be the best company ever. It’s a pretty big, pretty successful company which ha...s been fully remote for decades. They have a great work culture where async written communication is the norm. There’s no scrum, no micro management, no crazy and absurd planning/guessing meetings, etc. Of course we also have some pressure to ship product, but nothing out of the ordinary. Salary is good, work life balance is awesome, I like my team a lot and overall people are awesome too, so this sounds like paradise to me. However, on the technical side, this is the worst careless outdated bug-ridden untested unmaintainable inscrutable ide-freezing mindblowing terrible wordpress codebase I’ve ever seen in my life. No linters, no formatters, the repository is so big you can’t even open the entire thing on your editor and you need to open just the folders you’re touching. The development environment is “scp files to a production server taken out of the load balancer”. Zero tests, manual QA by a team mate before merging, outdated tooling, outdated processes, css overriden 10 times because nobody wants to modify any existing rule, security incidents hidden under the rug every now and then and the worst part: any attempt to improve this gets rejected. My team laughed at me when I tried to write an acceptance test in my early days. Months later I can see how ridiculous it looks now I have a better grasp of the technical culture over here. I’m towards the second half of my career. So “learning” and “staying up to date” with the trends is not my priority. I really enjoy this company and love working here until the moment I open my code editor. I’m seriously thinking on starting to look for another job, but I have this feeling that wherever I go the code might be slightly better but the perks will be worse. Now I understand why we have these perks, otherwise nobody would be here I guess. Have you been in this situation, or maybe the opposite one? Not sure what to do at this point. Thanks! My team got a new manager about 6 months ago. While I’ve had managers all across the spectrum of weird quirks in my time as an engineer, this person has one that’s new for me, and I’m not sure how to handle it. He operates in a very top-down fashion, which isn’t unusual. What is unusual, however, is that he will insist that everyone on the team give him feedback on a given issue…and then inevitably just proceed with whatever he had decided beforehand. I take giving feedback very seriously, and spend a lot of time getting my thoughts in order when I’m asked to give input on something. Having someone request that and then immediately throw my input in the proverbial paper shredder is frustrating and a waste of my time, especially since the team and company are growing rapidly and there are a lot of these kinds of decisions that have to be made. How should I approach this? I don’t want to keep spending time and effort on feedback that’s going to be ignored, but I also don’t know a polite corporate-speak equivalent of “please don’t ask my opinion on this when we both know you’ve already made up your mind”.
Transcript
Discussion (0)
it takes more than writing slash slash to do in your code editor and letting github co-pilot
fill in the rest of the comment and then doing that to be a great engineer this is soft skills
engineering episode 326 i'm your host dave smith i'm your host jameson dance soft skills
engineering is a weekly advice podcast for software developers who just want to delegate
their entire life to AI models.
I'm having a really hard time
helping my three-year-old learn how to work.
And is there some way I can use GitHub Copilot
to figure out what to do there?
Oh man, that's brilliant.
I'll write a function called
teach three-year-old valuable life lessons
and then see what it auto-completes in there.
That's a really good idea to do.
Become a billionaire.
it's like then you just read it and you're like oh my gosh this is revolutionary i've got to get
going on this quick before someone else types the same exactly the same to do you know what
it's going to do is github copilot's going to like start listing stock picks you know yeah
oh my gosh and then they rug pull one day when enough people start using it to pick stocks and
then short all of their picks and leave you holding the bag yes exactly that's kind of not
what this show's about though kind of i mean just a little bit kind of is yeah should i thank our
patrons go for it all right thank you to a one-time shout out for ellie glad and a shout out to these
fantastic weekly shout out citizens yes yeah noah frazier luge kent c dodds taylor savin memester
josh jenny kim owen shardle craig motlin i love mavis the stochastic parrot alice jost
no cheating land fair where i give up go go go that's pretty good shockton ohio patron.com.au
we're hiring ira chan monkey face emoji jonathan king testing is documenting.org
oladapo fadye will angel clean foot emoji ragnar nick hathaway travis brayden canes john grant
cody sell nick cantar and philip john pasil thank you thank you thank you to all of this group
um i think we just sent out some invites to our slack team for for folks that uh joined the the
the supporter list so if you support us with any dollar amount on patreon you'll get an invite to
our slack community which is is full of delightful folks and wise words it is full of folks and words
folks and words delightful words and wise folk that's true you can do that by going to soft
skills.audio and click support us on patreon and uh if you contribute at just an astounding level
then we will say your name or some word or maybe some not a word some sequence of characters yes
before the show thank you so much we appreciate it you keep the show going all right do you want
to read our first question yeah i do this comes from an anonymous listener who says about a year
ago i joined what it seemed to be the best company ever it's a pretty big pretty successful company
which has been fully remote for decades they have a great work culture where async written
communication is the norm there's no scrum no micromanagement no crazy and absurd planning
or guessing meetings etc of course we also have some pressure to ship product but nothing out of
the ordinary salary is good work-life balance is awesome i like my team a lot and overall people
are awesome too so this sounds like paradise to me just setting aside the question for a moment
i feel like we're about to be set up for something bad the end how do i get more people to join yeah
however on the technical side this is the worst careless outdated bug ridden untested
unmaintainable inscrutable ide freezing mind-blowing terrible wordpress code base i've
ever seen in my life no linters no formatters the repository is so big you can't even open
the entire thing on your editor and you need to open just the folders you're touching the
development environment is quote scp files to a production server taken out of the load balancer
close quote hey it could be worse it could be ftp zero tests manual qa by a teammate before
merging outdated dueling outdated processes css overwritten 10 times because nobody wants to
modify any existing rule security incidents hidden under the rug every now and then and the worst
part any attempt to improve this gets rejected my team laughed at me when i tried to write an
acceptance test in my early days months later i can see how ridiculous it looks now i have a better
grasp of the technical culture over here i'm towards the second half of my career so learning
quote and staying up to date with the trends is not my priority i really enjoy this company and
love working here until the moment i open my code editor i'm seriously thinking about starting to
look for another job but i have this feeling that wherever i go the code might be slightly better
but the perks will be worse now i understand why we have these perks otherwise nobody would be here
i guess have you been in this situation or maybe the opposite one not sure what to do at this point
thank you whoo that was an awesome question that was like the best written question ever
yeah you can really feel the despair yes but also the delight like this is a real dilemma
yeah they laughed at you oh i'm just gonna write an automated test
ha ha ha funny i mean if they laugh when you write an acceptance test
what do you think they're going to do if you suggest hey why don't we rewrite this code base
yeah you could just pivot to accidental comedian as your main contribution to this team
you will knock them out they'll laugh so hard they'll just lose their breath and pass out
Yeah, this is interesting.
A book that I really like called Kill It With Fire.
It's about legacy system migrations, sort of.
It's about a bunch of other stuff too.
But it talks about this problem a little bit.
And it's interesting that we're talking about this
on the Soft Skills Engineering podcast
because there are a bunch of technical considerations
that go into it.
But we're not allowed to talk about any of those.
And good news, those are the easy things.
like the the the non-technical things of marshalling the organization like willpower
so that this changes are are much harder than the the work to to enact the technical change i think
well now that i just said that i'm like tasting it in my mouth is that true how does it taste
it's probably it's it's it's harder to harder to get started i mean it's going to take years to
of work to fix this uh and that's harder than like getting people riled up i guess and keeping
them going but have you ever seen a project this big get fixed i guess it depends on how you define
fixed is fixed like it is as it would be if we started over from scratch and made all of the
right decisions yes no it will no that that will never happen maybe that's a good thing to point
out like what what does better look like here like what's a reasonable iterative improvement
on what you have right now what if i suggested writing an acceptance test and they just like
snorted instead of full-on belly laugh like that's that's improvement yeah
what if we are sync files to the production server
i'm thinking you know i'm i'm taking everything into consideration here
you've got a great job you're well paid the team is great the code sucks but you know it's like a
shared enemy you can all just commiserate with each other boy this code sucks you know put your
arm around someone's shoulder and just throw your head back and laugh and maybe having perfect code
isn't actually an amazing objective or a super important objective anyway maybe just hang out
and just enjoy it this code must make a lot of money if it's it must this badly and and they've
built this decades-old successful company yeah on wordpress yeah now i'm trying to think like
can i somehow reverse engineer what company this is i hope not
you just don't maybe it is word maybe it's automatic
it is wordpress it turns out it's google google search is actually a wordpress website
i'm thinking this company must make a lot of money but not that much money uh you know like
mid-range money because if they made a just a crazy amount of money that would probably be an
indicator that they have a ton of users and a ton of scale and this system would have fallen apart
long ago and they would have had to been rebuilding at least parts of it over time just like the
classic stories that you know uber and amazon and facebook where it's like they have to rebuild
things constantly for the next 10xing of of usage growth yeah this must just be a consistent
money maker but not an exponential money maker huh but we're not really answering the question
until you until you rewrite it all and then what it's just a more expensive money maker that makes
the same amount of money everyone knows that elegant code equals hockey stick that's true
you know you know what would really make this wordpress website make a lot more money
rewriting it in scheme it's so elegant yes what if we used macros to can you imagine the domain
specific macros that this thing could could house we're kind of dancing around a point here which
is like part of the impact is on your morale yeah but like you said they do a really good job of
trying to offset that by by having other good things yeah and and part of what you need to do
is figure out why they care why the company should care about i guess i'm assuming that
the developers would like to improve it but they feel like maybe maybe the idea of improving things
has been shot down too many times and they're kind of like they've given up by now but i'm
assuming that they could they could be re-engaged if you have some credible plan that that has
business backing to improve stuff but the the the way you do that is by pitching this as solving a
problem that they care about and solving it in the most efficient way you seem to have this idea that
this is a solvable problem what if it's not what if this is it like this is your life if you stay
here oh like i i'm kind of seeing i'm kind of seeing the question here maybe a little bit
differently than you are that's because i'm a young whippersnapper you're laughing at me i'm
like dave clearly we have to write an acceptance test for this company and you're like oh
should i even say something that wasn't give up
that's so true i mean how naive like i don't listen i mean unless you're the cto of this
company i don't think you're changing it like they've they're they've got a decade you're
fighting decades of precedent and probably hundreds of people who have who have left
a wake of misery and uh really sad stories in their past to try to do what you're talking
about doing i think the option here is quit or just embrace the stockholm syndrome like
i don't know if there's another option here okay okay i have a third path so there's like
fix the system so that it is less horrible for for all the ways you define horrible you could
also like it's like you need to craft yourself a suit of armor like you you build yourself tools
it's not it's not like you're gonna fix your your put ci in place around the system to make it so
that like formatting and linting and other stuff happens but you you need to like create a personal
developer environment that like works around the crappy parts somehow for example if you care a lot
about formatting you just have to build your editor so that it formats the entire code base
when you open it and then like unformats it when you close it so that you don't actually change the
code yeah this will be an interesting computational problem because no formatter on earth can actually
do that in less than a few hours based on what's just been described here yeah but again okay go
solve that problem probably easier than solving yeah the problem of yeah of fixing the whole
system there's an endless supply of really fun problems that are going to turn into great blog
posts and just imagine the clickbait headline you know i ported es lint or whatever the wordpress
php equivalent of es lint is i yeah i fixed php lint to handle the world's largest wordpress
website code base yeah i mean your your your development environment is scp files to your
production server take it down to the low balancer so how can you use that as a vector for like
continuous delivery right you have to build some kind of system that i don't know automatically
pulls stuff out of the low balancer and scp stuff for you and then it like it just papers over the
the madness i feel like i was really gung-ho about like here's how you marshal all the
build the case and get it's not gonna happen yeah it's probably not i i maybe maybe just pick one
thing though like you're not gonna you're not gonna change everything unless you work there
for a long time but is there is there like the right combination of really painful and also not
super expensive to fix that that you can improve just a little bit and that might be more tractable
than thinking like how do i take this whole system from something that makes me cry to something that
makes me cry a little less yeah yeah yeah how do i cry less is much more tractable than like
how do i how do i sing songs of exquisite joy yeah yeah when my editor opens i've created this
spreadsheet that tracks the number of milliliters of tears that i shed each day yeah i just want to
get drive down to zero trend down yeah a five percent year-over-year decrease in tears shed
but also you have to account for like the growing cynicism exactly experience exactly i've become
harder and harder and now i don't cry anymore my tears are more precious to me it's like dry out
and shrivel up i mean listen you're talking i am the person who at work right now has
spearheaded and secured funding for and approved a a large overhaul of a big portion of our
application and uh and even i don't think that based on this description that this is worth even
trying to improve a little bit yeah it's a wordpress code base that an editor an ide can't
even open it's so bad google solved that they wrote better idees oh anyway they did i i think
you know i i'm not the kind of engineer that would want to work at a company like this i would quit
just but that's my personality and i really think that you're gonna have to figure it out for
yourself like because i think what you're actually asking is can i work in kind of a crappy environment
with good pay but i just kind of drift into a clock punching mode that i don't really care
that much about the work i'm doing what will that do to my to my psyche over time hey and if you're
the kind of person that can still be happy and productive and healthy in that environment go for
it but that's not me like this would tear me up i would have to leave and i think i know people who
would do fine in this environment but i'm not one of them yeah the fact that stuff is bad is not the
scary part the fact that they laugh at you when you try and fix it is the scary part exactly there's
there's messes everywhere but okay well my dreams are crushed question feels answered to me okay
question answer should i read the next one please do this question is from an anonymous listener
who says my team got a new manager about six months ago while i've had managers all across
the spectrum of weird quirks in my time as an engineer this person has one that's new for me
and I'm not sure how to handle it.
He operates in a very top-down fashion,
which isn't unusual.
What is unusual, however,
is that he will insist that everyone on the team
give him feedback on a given issue
and then inevitably just proceed
with whatever he had decided beforehand.
I take giving feedback very seriously
and spend a lot of time getting my thoughts in order
when I'm asked to give input on something.
Having someone request that
and then immediately throw my input
in the proverbial paper shredder
is a frustrating waste of my time,
especially since the team and company
are growing rapidly and there are a lot of these kind of decisions that have to be made how should
i approach this i don't want to keep spending time and effort on feedback that's going to be ignored
but i also don't know a polite corporate speak equivalent of please don't ask my opinion on this
when we both know you've already made up your mind oh yeah that's a tough one maybe you just
haven't found the feedback that is just is so earth-shattering that it actually changes his
mind what if you could say something like here's my feedback i'm gonna write you a check for fifty
thousand dollars if you use this technology instead and if he goes nope and throws that
in the trash then you got a real interesting person on your hands well you know they cannot
be bought for a mere fifty thousand dollars i guess just keep raising the price until you find
the line and then when they say okay then you say i feel like there's a pyramid scheme somewhere
where you need to go get or a ponzi scheme or something you need to you need to go get the
money from other people i don't know how ponzi schemes work that's pretty funny is that the
first time you've ever been asked to describe a ponzi scheme out loud yeah probably i asked myself
too it's even worse uh how should i approach it i don't want to keep i mean i i know what i would
do in this situation which is i would not give feedback anymore i would very quickly i don't
know if that's the right thing to do but i i would get really frustrated by this yeah and then
the feedback would be like have you considered moving this pick button six pixels to the left
whatever like if it if it was important politically that i participate in the process i would just
make up some nonsense you would have some token feedback you could offer yeah but i i i would get
pretty fed up with the like asymmetry of being asked to put a lot of thought into what could
we do instead and then that being discarded right what if you just came up with really really bad
ideas what would the the goal be i don't know just kind of a chaotic just see if if if you get called
on it yeah i guess so like i i think there's some interesting questions here is this person even
listening to the feedback is he even considering like he's even evaluating its goodness or badness
or is he just letting you have airtime uh so that he gives the impression of being a collaborative
leader and then discarding everything you know because if you said something just really
outrageous and wild kind of like a wayne's world situation when they're being interviewed on that
radio show you know and it's like oh yeah yeah it's this person even listening at all because
i think that would be fun to find out yeah if every if for everything they say that you say to
them your manager strokes their chin and says hmm interesting i think we'll go my way no matter if
it's like what if we what if we implant a memetic kill agent into the program so that users see it
it destroys their brains hmm good idea but interesting i think we will use uh kubernetes
these instead though okay so so i would i told you what i would do which is give up but then
what i would do next is is get fed up and then go on a crusade and then battle them and then
probably quit after that that's probably what does the crusade look like what kind of things do you
do oh just like i don't know i'd probably fight with them and say like not not in public in a
meeting but i would i would definitely complain to them that it felt like they were asking for
feedback and doing nothing and it seemed kind of pointless but at this point you're already on your
way out the door is what you're saying yeah but i i'd be mad not like uh working towards a resolution
i'd be like what if you do those things in a different order what if you start with a private
sit-down conversation where you respectfully tell the leader that before i get mad yeah i mean just
you know i don't know just try it
it feels so good to be motivated by righteous indignation though like oh man nothing feels
better than to go on a crusade i know there's a lot of road rage that results from that sort of
thing that's true yeah people do sometimes have bad outcomes from that yeah sometimes i i think
here's what i think i would do they would they would ask for feedback in a meeting i would give
it and they would say i don't think that i agree with that and i would say every idea that is
destroyed by the truth deserves to be destroyed by it or some like big like big philosophical
statement yeah some some big flag planted in the ground we're gonna go at it talking to them is
probably a good idea i wonder though if you i mean if this is the kind of person who discards
feedback what happens if you sit down with them privately and say oh yeah they're like hmm an
interesting suggestion but i think i'm gonna keep doing what i'm doing
that's when you just tear out your hair i mean it's just like they're consistent
yeah listen i listen to all feedback and i do none of it feedback is welcome i i welcome
the oversight and it makes it makes us stronger and better and i'm not gonna do what you said
sorry i just want to be clear on exactly what i welcome though what i welcome is the sound waves
of your feedback i just i appreciate the amplitude and the frequencies
i do not appreciate the semantic content of your feedback and i will reject it i mean or maybe you
do appreciate the semantic content in the way that you appreciate like a fine piece of of art
yeah you just kind of and then you just keep walking experience it through the art studio
to the next one yeah it doesn't and maybe it affects you subtly in some way yeah maybe right
maybe years later you're like oh you're not like it's not like you look at that mondrian painting
and they're like oh okay i do need to destroy all curved lines in my life correct okay i i will
change my desk into a field of tables it's not what it's for this person truly understands what
feedback is for it's it's to wash over you that's right it's it's like an existential existentialism
which i just used that word and i just have no idea if it applies but it seemed right
i said yeah because i was hoping that you're gonna not say that you didn't know how it applies and i
could just like nod my head just part of part of being present in the moment is like you said
letting the feedback just wash over you um but i am just listen i'm just an observer in this journey
i just watch i wonder if they like read some harvard business review article oh yeah ways
to be a good boss like have an open door policy or something and just totally misunderstood this
there was an article that went around about jeff bezos about how when he is confronted with a
decision with his group of leaders his lieutenants he would ask each person what they thought and
then he would he would always go last so as to not like taint the group's opinion or bias the group
so he would listen to each person's recommendation and then he would choose so i wonder in this case
with your boss if it's um is this person actually choosing a recommendation that someone else put
out there and it just never happens to be you or is it like i've heard the seven ideas in this group
and I choose an eighth idea, which is uniquely mine.
Yeah.
So maybe they're going first in this instead of last,
is what you're saying.
Essentially.
Like, cognitively, they already went.
Yeah.
Now I just have to let all the peasants say their words
so they won't quit.
Yeah.
Let them get their little participation trophy.
i don't know that i feel like we're being a little critical on the manager here maybe that's what's
going on boy are we yeah i mean let's explore more earnestly what you said about just having
a private conversation because the the question asker does mention i don't know polite corporate
speak equivalent of don't ask me for your opinion if it's never going to matter yeah i mean and
that's probably the wrong words to say maybe yeah what you do need to say is is the truth will win
out and you're an enemy to the truth i think in these situations oh i always approach these
situations or rather the aspirational side of me always approaches these situations podcaster day
yeah but for those those of you who are listening who don't have to work with me
uh can just keep believing that i actually do good things once in a while but if i were advising
someone which i am i would advise you to approach this situation from the business and the team's
perspective. In other words, call out how the team can be better and how better ideas can come to
the forefront if this person will actually stop and consider the feedback. And you know how I
would start that is with a question. Rather than an accusation of, hey, you don't listen to my
feedback, I would say, I got a question for you. How seriously do you consider the feedback that
you get? And the context for this question is I've noticed that you go to great lengths to ask
everybody for their input but i've actually never seen you take any of the feedback and apply it
you know and just kind of sit that throw that out there and and see how they respond that's
probably how i would start the conversation and i have no idea how it would end that's that's
interesting i was thinking of like centering it on myself a little bit of like i feel less
motivated to give feedback because i feel like it doesn't happen and then it's and then it can be
more i don't know maybe it softens it a little bit from like this is a this is a problem that
i have or or that is not just all you but still lets you explore that space a little bit and and
maybe your manager will participate and say oh i do never take your suggestion or or maybe they'll
they'll be like here's how to accept your place a little bit better let me let me coach you on
on getting your trophy but it leaves a little more wiggle room which may or may not be a good thing
yeah like you you ask for feedback and and i've i find it hard to give it because i i feel like
it's not gonna matter yeah see but i don't you feel like you're putting yourself you're kind of
setting yourself up for a risky response or a painful response which is all your ideas are bad
yeah yeah because you're not i bet your manager doesn't say that but i bet they'll dance around
it and then you'll walk out of that meeting going all my ideas are bad
yeah it's a risk you could also talk about it as like uh i mean maybe it's not a your ideas
are bad thing maybe it's like a they ask for feedback when stuff is already in motion maybe
maybe bringing it up the time earlier would make it more more the the substrate that you are working
in is more valuable i don't have i don't have a problem with your way of being it's just a timing
issue yeah yeah that's easier to tackle thank you for sharing your feedback i will not change any
yeah this this would be really frustrating to me i agree now i'm racking my brain thinking do i do
this i think i don't think i think when people ask me for feedback i'm a lot like this person
the question asker like i i prepare way too much i'll often write down something like i'll i'll
take the problem statement and i'll break it down and break it down to its first principles in a
document and then i'll have like three different options with a recommendation and they're just
like oh dave i don't want to read this come on i just wanted you to tell me my idea was good
oh and maybe that's what's going on and maybe that's the right answer is like oh good idea
thank you that is actually that that might be true this they might be feeling a little insecure
and maybe they want some validation and they say feedback but what they really mean is like
support you know yeah i don't know yeah i like your idea better than mine which is get mad and
then throw a fit and then quit yeah well i mean that works too yeah well no the joke fled my brain
some joke about how there you wouldn't know because you wouldn't get feedback if it
was a bad idea i don't know all right have we answered this question i think we've uh we're
close enough close yeah close enough uh what can people do if they want their own questions
answered. Go to softskills.audio and click the ask a question button. We must thank you for all
of the feedback. Sorry, I mean questions that you've given us, many of which we have not answered
because there are many, but many of which we have. And we commit that even though the questions are
growing at a rate faster than we can answer, we will answer them all somehow through economies
of scale. I'm going to pass this on to my descendants. And then I just need to count
of my family tree
expanding enough.
Oh, yeah.
There are possibilities
for exponential growth there.
Yeah.
But then again,
our podcast is pretty like
exponential listener growth.
Yeah.
The tree of family members
answering questions
has to expand faster.
Yeah.
Or we have to deliberately
slow down the growth
of the podcast.
Right.
All right.
I've got some things to do.
Okay.
Thank you so much for listening.
We'll catch you next week.
I'll see you in the next video.
