Soft Skills Engineering - Episode 297: Flat decisions and pointy-haired boss
Episode Date: March 28, 2022In this episode, Dave and Jamison answer these questions: Liam asks, I was the second hire in my team and worked with one lead engineer who created the entire codebase from scratch. This... engineer’s code was functional but not well architected and has many inconsistencies. They have since left the company and replaced with two new senior developers who are a lot stronger technically. We recognize issues with the current codebase but we’re finding it hard to make decisions on the best way of solving things. We’re all at the same seniority level and the managers above us do not have hands-on experience with our codebase or tech stack. Because we’re at the same seniority level I don’t want to start acting beyond my job title and make all the architectural decisions, but at the same time I don’t want to be a pushover. How should decisions be made in a team with a flat structure and no defined leader? My previous manager quit the company last year and we’ve been assigned a new one. While the previous manager knew technical side of the project really well, the new one seems to be clueless. He is not even showing any interest in learning about what we do. He is a good people manager, but lack of context makes him really bad project manager. What should I do? Should I talk to him to convince him to learn more or maybe it is normal and we were just really lucky with the previous manager?
Transcript
Discussion (0)
it takes more than four cores just to run your company's security software to be a great
laptop this is soft skills engineering episode 297 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 many extra cores you need just to keep that virus scanner happy
At what point do you need a dedicated laptop just to run the security scanning software?
And then you have your other laptop that's for doing stuff.
This one runs security scans.
This one's my work laptop.
Yeah.
Actually, now that you say that, that is what has happened at previous jobs that I've been around.
There's the Skunkworks laptops that you can actually do stuff on.
And the other ones that are crippled by paralyzing software that...
Yeah.
It makes your laptop secure because when a hacker gets on it and tries to run a crypto miner, there's no CPU cycles left.
If they're trying to export all of your data through your machine, the network bandwidth is already taken up by the live screen recording that it's streaming to your company's central monitoring servers.
Good luck exfilling any of this data.
Yeah.
That road is already full of cars.
All right.
This episode is sponsored by OpsLevel.
OpsLevel makes shipping great software easier,
and we will share more about OpsLevel later in the episode.
We want to thank our tremendous patrons.
Thank you to the folks who contributed at the level that we shout them out every single week.
Thank you so much to Craig Motlin, Rum & Code, I Love Mavis, The Stochastic Parrot,
Alice Jost, Andrew Pollack, The Eat Your Job Podcast, Ian Walter, Aaron Duna,
CameronHall, Patron.com.au we're hiring, Ira Chan, Monkey Face Emoji,
Jonathan King, testingisdocumenting.org, Oladapo Fadje, William Angel, Ragnar Harrison,
Timmy Garabrant, Nick Hathaway, Travis Sanders, Braden Keynes, Ibot, Winrar, Nick Kantar,
and Philip John Basile. Thank you to all of those wonderful people. Join them by going to
softskills.audio and then click support us on Patreon. Any dollar amount will get you an invite
to our Slack team, which is fantastic. We would love to see you there. I learned, what did I
learn. There was a thread I was reading the other day. Someone was talking about sharing secrets
with each other and mentioned there's some mutual Prime sharing technology that SSH uses,
which I didn't know is a thing. And I helpfully contributed by linking to the Amazon help docs
about how to share your Prime account. I thought you were going to talk about Prime numbers.
Wait. No, that's what it is. I mean, yeah. You thought it was Amazon Prime?
Well, that's just what came up when I Googled prime sharing.
Oh, okay.
I was just trying to contribute, you know.
And did it help?
It helped me.
That is awesome.
So that's what you're missing out on.
As crazy as this is to hear, I have never equated Amazon Prime with prime numbers until this moment.
It's the original Bitcoin.
Prime numbers somehow related to hashing.
Okay, we better get out of here.
Eject.
pull the record
do you want to read our first question dave sure thing this comes from a listener named liam who
says i was the second hire on my team and worked with one lead engineer who created the entire
code base from scratch this engineer's code was functional but not well architected and has many
inconsistencies they have since left the company and been replaced with two new senior developers
who are a lot stronger technically we recognize issues with the current code base but we're
finding it hard to make decisions on the best way of solving things. We're all at the same
seniority level and the managers above us do not have hands-on experience with our code base or
tech stack. Because we're at the same seniority level, I don't want to start acting beyond my
job title and make all the architectural decisions. But at the same time, I don't
want to be a pushover. How should decisions be made in a team with a flat structure and no
defined leader? Functional but not well architected and has many inconsistencies.
is this your code base or is this my personality to do hey oh let's see i would say functional
not well architected has many consistent inconsistencies pick two okay that was a that
was a joke around the here's a list of three good things pick two except two of these are bad
yeah i picked the two bad ones poorly architected and inconsistent and it is not functional do you
remember a few years ago when flat structures were all the rage in tech well i don't know were they
all the rage in your area of tech i was working at a startup at the time so flat so it was very
easy for us to follow fads because they're like 10 of us yeah it's like super easy this what's
the fad this week jameson well i'll tell you monday is new fad day you know i think the industry well
i'm going to speak for the entire software industry i think the industry has moved away
from flat a lot over the last i don't know say 10 years i agree and it coincides with me moving
into engineering management so i think they were just waiting for me waiting for you to change the
world we're we're gonna be flat until jameson gets here and then really knows how it's done
it couldn't possibly be that the moment jameson and i both moved into management suddenly the
whole world changed it couldn't possibly just be that our perspective shifted a little no they
recognize the value from us doing our work oh okay i think the reason i asked that question
was to ask have you been in the situation where there is a not a clear decision maker and so
not a clear decision is being made i have not and the reason might surprise you i feel like
you just read me a buzzfeed article headline
well that would be more like the three reasons and you won't believe number two
I'm now engaging with your question to find out if I'm going to be surprised or not.
That was an engagement hack just to get you to lead me to the question. No, I've never been in
this experience because for better or worse, I'll let all my former coworkers decide if it was for
worse. I tend to be the one that just kind of steps in and volunteers ideas and kind of becomes
the de facto leader on accident with no input from anyone and certainly no democratic process.
It just kind of happens that way whenever I see a vacuum.
I have been in this situation because sometimes I'm fine stepping in and trying to move things
forward in a group of peers or equal hierarchy, but sometimes I'm really not. And sometimes I'm
fine with it and I'm not fine with it within the same group even. So yeah, I've been around this
before. How should decisions be made in a team with a flat structure, no defined leader? You're
all the same seniority level. Two new senior developers. Okay. So I'm assuming that you are
all three senior developers because you're all the same seniority level and you said that the
two new people who joined were senior developers so you should all be relatively mature and
experienced i think here's what you do go steal a mannequin from a department store and put a suit
on it okay and then that's that's your manager now okay is this like the rubber duck manager
yeah exactly business casual dress no jeans yeah tall in stature strange in shade of skin
and texture but it's like that's fine manager's a little plasticky to the touch
when i shake its hand i just don't it's very rigid i don't feel much
rigid and room temperature poor at returning hugs
but always there yeah
fantastic listener
never interrupts never never interrupts yeah and then you rubber duck manager you just ask
this person present this person your problem talk it out and and i think you'll come to an
answer well okay that that i think if you explicitly raise this as a problem um a group
of three senior people should be able to make decisions without consensus if you if you can
arrive at consensus that's cool if not you should not be blocked by lack of consensus at the very
least you have an odd number so you can just vote if you want to you're just absolutely stuck yeah
as long as there are strictly less than three options on the table you can vote shoot you can't
always just vote. Just found an edge case. Oh, dang it. No, I think if everyone here is mature
and senior, they will recognize the fact that they have their own ideas about what is best and what
we should do. And the group will not always agree with them. And it is harmful for the group to
block until everyone gets their way. And so I think you can present that to the group as like,
this will help us out, even if sometimes we will not make the decision that each of us
individually would prefer. We just need to get good at deciding things as a group
and move forward so we're not blocked. That's true. And sometimes, like the way,
I think most people, the image they would get now is this idea that people just kind of
muscle ideas through anyway, whether everyone's on board or not, I'm going to push my idea.
But let me tell you that a truly mature senior engineer recognizes the return on investment of debating or delaying an idea because of a preference of their own.
And excellent engineers will sit back and say, and not even say this out loud, but will sit back and think, I don't fully support this, but it's not worth our time and energy to debate this one.
I'm going to support it, fully support it on the outside and make it clear to the others that, hey, I'm on board with this.
even if you're not totally on board with it.
Now, I'm not saying that you should sacrifice
every preference you have,
but a truly mature senior engineer knows
when the battle is worth it and when it's not.
Have you heard of Fist to Five?
This to Five?
Fist to Five.
No.
I also haven't heard of the other,
the mispronunciation of that either.
This to Five?
Five Fists of Fury is what we have called it internally
because I couldn't remember what the name was, I think.
i knew it was five and fist or something like that okay so it's a it's a quick way of checking
for consensus when you present an idea and you you say your idea and then you ask for a fist of five
and you can hold up or use slack emojis hold up a number of fingers on your hand or use slack
emojis to indicate zero is i'm totally blocking i'm hard against this five is i love it and we'll
champion it. And then there's a grade in between of like, anything below three is blocking in some
way. And anything three and above is not blocking with an increasing level of enthusiasm and
agreement. So if you're stuck on just the mechanics of like, do we agree or not, then this is a very
cheap way to check if you agree or not. And sometimes you really are just stuck on the
mechanics where people just agree or don't care, but you can't get people to engage enough to
express that clearly so that can be helpful yes and sometimes it is a matter of engagement where
it's like actually i don't care at all but you're not hearing as as someone who brought the idea
that to the table sometimes you're not hearing you don't hear the voices of people passionately
agreeing or disagreeing and some people hear that and think okay you agree some people hear that and
think oh you're blocking my idea until i hear an affirmation yeah i like that i like that you kind
of you have a mechanism whereby everyone has to engage but if you get the the fist of fury
you get not consensus from that what do you do next well i mean this is where it requires
you know consensus building by the way is a skill and this requires everyone who's participating to
be good citizens i think in the process and if you don't have all good citizens it requires a
special amount of skill from the person who's pushing a particular idea to navigate that and
And it can be, that can be challenging to do, but I found that if, you know, if you
can really summon a high volume from your vocal cords and just yell, you can get a lot
of people on your side.
I mean, we have, you mentioned consensus explicitly.
Do you have to have consensus?
I feel like you don't, right?
Well, I might define, I might define consensus a little bit.
I don't necessarily think of consensus as unanimity, but I think of it as at least agreement
from enough people to be able to proceed or a level of agreement enough you know like not
stark opposition you know so in other words agreement or absence of strong opposition
to proceed yeah can we talk about the one part of the question that says i don't want to start
acting beyond my job title sure what's that about i interpreted that to mean this the question
asker did not want to kind of set themselves up as the boss of the two peers yeah by saying hey
we need to make a decision and i will make it yeah and and i can see reasons for not wanting
to do that like you don't want to be perceived as a kind of a know-it-all or someone who took over
but at the same time this team needs someone who's willing to step up and say
i am going to champion this idea and i think we should go for it i think this team needs that
I think you can also make it clear that you, well, assuming this is true, that you are not trying to tell them what to do. You're trying to help the group decide. And so the, the ideal outcome here is not necessarily the team implements all of your ideas. It's that you work through things instead of kind of waffle over them for a long time.
if you just say that i think folks might be glad to have someone help out with that responsibility
yeah if it does turn into all your ideas winning then you have performed a coup and right and
congratulations you've solved now you have solved this problem where you can't all decide
and you have a new problem you have a team full of resentful team members
you have a morale and retention problem exactly
maybe maybe what's needed here is for these three team members to sit down with each other
and say out loud the nature of the problem that this team has like hey we're all senior engineers
we've all got similar levels of experience we have different opinions we need a framework for
making decisions together anytime you say the words we need a framework to developers you never
know what you're going to get though i could turn into a 20 year long open source project
yeah i don't know i if i were smarter or more well versed in the literature i would be able
to talk about explicit decision making frameworks but i am not so probably you can google that and
do what it says try it perfect i'm sure there's stuff out there in fact i'm going to google it
right now go for real-time literature googling making frameworks there's a lot of content
marketing for me to go buy some products probably some courses so i think the key is products
buying stuff i think that's the key to making decisions i don't know i'm out of ideas me too
i think maybe just like bring a blowtorch to work and you'll be so intimidating that
everyone will want to do your ideas you just use it to warm up your lunch
very carefully awesome all right we've answered the question hey jameson have you noticed there's
a special kind of pain that software teams feel when they get big enough pain of open floor plans
no i'm talking about the pain of owning a huge pile of services but having no clear ownership
this makes so many routine things harder than they need to be like knowing who's on call
onboarding new hires finding out who owns what if you're lucky you have some spreadsheet or maybe
like four spreadsheets that list all the services your teams operate with manager contacts and on
call schedules but you probably don't even have that i've definitely felt that pain well this is
where ops level comes in ops level is a product that replaces that old spreadsheet that no one
trusts with an always up-to-date catalog of all your services and teams. And Ops Level takes the
friction out of launching new services by providing guardrails that let developers focus on writing
code instead of chasing down people and getting approvals. When I worked at Amazon, we had tools
like this. I can't imagine living without them. But small and medium-sized companies, they can't
afford to build them. And this is why you need Ops Level. I've lived without them. It's rough.
the rolodex of people who've worked there a long time is not as scalable as ops level
go to opslevel.com soft skills to solve this pain and learn how ops level makes shipping
great software easier end the suffering go to opslevel.com soft skills would you like to read
our next question jameson i sure would this is from an anonymous listener who says my previous
manager quit the company last year and we've been assigned a new one while the previous manager
knew the technical side of the project really well the new one seems to be clueless they are
not even showing any interest in learning about what we do they are a good people manager but
lack of context make them feel like a really bad project manager what should i do should i talk to
them to convince them to learn more or is this just normal and we were really lucky with the
previous manager oh the old people manager skills versus technical skills this is me i'm i'm the
manager oh in this question no not literally right i mean no no well i don't know it's anonymous
maybe i could be previous manager quit the company last year i mean yeah the previous manager did
quit the company last year it lines up oh boy this is the job the first job where i have not
known the full stack of the work that my teams were doing where i could jump into any part of
the code and be a productive contributor interesting which is not exactly what they're
saying their previous manager did but i think there's some overlap there and it there are a
class of problems that i am not useful for solving when it comes to things that i need personal
hands-on experience to know uh i'm not great at solving the nice part is i work with a lot of
developers who do know all that stuff and i can just ask them so i i mean i should probably ask
them if they wish i knew more or wish i was more hands-on in the code well but my impression is
that it's going fine because i ask them and they tell me instead of me just throwing out ideas of
how hard something will be or how long i think something would take or what's the right kind of
tactical code level approach to take to solve this problem i took this problem and spun it into an
opportunity. Now you get to decide all these things. Good, good news. Who does? The question
asker. Oh, I see. You just not any interest in learning about what we do. Lack of context makes
him a really bad project manager. Yeah, you have that context. So now it's your problem. Like
you're well, congratulations. You're the technical lead. Is that what I'm hearing? I think so. Yeah,
because it sounds like the previous manager was doing people stuff and technical stuff.
and this one is not and actually i think that's a little bit rare to have someone who as a manager
is really good at the tech side and the people side would you agree with that i think so i feel
like i have seen it happen more when someone has moved into management from previously working as
an individual contributor at that same company where they have they kind of like add on the
people stuff but bring all the engineer context from when they were primarily just building stuff
yeah but i i have not seen it very often for new incoming managers where they come in and can be
the kind of hybrid tech lead people manager successfully yeah yeah it is interesting i find
myself in a similar situation as you where i've come into a team not having any context on the
particular tech stack or frankly the product which I've had to learn over the last year
and the fact is I am not very useful at acute narrowly focused technical questions and I found
that I mean this this answer might not help the person who's asking this question but it might
help the the manager is that I've found that I really need to lean on my team for those small
questions like they're not small but like kind of the narrowly focused technical detailed questions
And I tend to exert my will a little bit more on the higher level system and architectural questions.
And maybe that's just because that's where I've got more experience and I don't need as much fine, low-level detail context to do that.
It feels like it's often more abstract, which means you could contribute to it without as much low-level detail.
So the question asker says it makes them a really bad project manager.
And I really wonder what that means.
Is the engineering manager throwing out deadlines or timelines?
Yeah, that's a good question.
Because I could see that being a problem.
If they are being asked, how long will this take?
And then instead of saying, I don't know, let's go talk to the team.
They say, two weeks, because that's the default estimate.
Whenever someone asks you how long something will take, it seems kind of big, but not huge.
It's always two weeks.
But that example you just shared is probably not a bad project manager.
A bad project manager would say, team said two weeks, I'll promise it tomorrow.
you know yeah but i know they can get it done faster if i just force them to i know they're
sandbagging by 13 days out of 14 yeah i just know their type from my previous jobs at different
companies yeah and i i'm also interested in this question like what makes them a bad project
manager i'm actually interpreting that a little differently which is the question asker saying
is that it makes this manager a bad technical lead like over the project that they're working on
that there's probably a whole bunch of decisions that were made by the previous manager
on a regular basis that now there's no one to make those decisions and this manager might not
even know that you know it's like oh i didn't even know the previous person was making all
these decisions yeah that's an interesting point i mean you kind of said it jokingly earlier
congratulations now you're the tech lead but maybe you are at the very least you should raise you
should be able to raise this issue to your new manager yeah and you don't have to frame it as
the last person did this and you are not doing it and it sucks you're not doing enough and you have
to do it but you can raise it as a as a pain point you're experiencing on your team that
you had someone who's fulfilling this tech lead role and we don't as much anymore how should we
solve that and maybe the answer is you will do it and then maybe you get to say please give me more
money to do more work yeah maybe the manager will just jump into it and and didn't know that that
is a thing but can do it yeah maybe those are the only two options just trying to yeah that's it
what the other thing could be yeah and i really do think that when a new manager comes in it behooves
you as someone who cares about the team to make sure that all the responsibilities that the old
manager were doing get covered somehow and so i would i think it'd be really appropriate for you
to sit down with this manager and outline for them some of the things that the previous manager did
that this one this person isn't doing just so that they at least know like these are things that need
to be done on the team and as a manager it's your job to delegate that or at least make sure it gets
done and volunteer for some of them maybe but this is your chance to make sure the team has good
continuity yeah that's a fair point that how would this person know if they it's very possible they
just never knew what the team used to work like and no one told them so they're not aware of what
is missing there and i've worked for managers who are very technically unskilled or just they just
don't bring that experience to the table when they start a job. And it is very tempting to be
a whiny, complainy engineer. You're like, how could I possibly work for someone who doesn't know
what a linked list is? Oh, you know? But the reality is these people have a lot to teach
an engineer, especially because the question asker says, this is a good people manager.
Well, great. There's probably a lot of skill here that your old manager didn't have. Because like
I said, it's pretty rare to have someone who's extremely skilled in both those areas. But you
could have a lot to learn, first of all, and it could create an environment where you get to grow.
And, you know, I don't want to rehash the become a tech lead thing, like, you know,
we've now mentioned it twice, but I'm kind of going in that direction, which is that
you can be a partner to this manager. And that's how I have worked in the past, where it's like,
I've got a people manager, I report to this person, they don't have the tech skills. So we
partner on a lot of stuff. You know, the people manager comes to me for input on other members
of the team so i can help them calibrate and make sure everyone is treated fairly you know from the
perspective of someone who understands their skills you know the people manager will who if
they're really good they'll often do things that you didn't even know should be done like advocating
for your team with the rest of the company making sure the rest of the company knows what you're
working on and why you are important you know i've had a people manager who was really really
good at that yeah it was almost like he was a full-time marketer in a past life and so within
the company he did a fantastic job of advocating for us and making sure that people knew who we
were, why we were important. And we got a seat at a lot of tables we wouldn't have gotten if it
weren't for him. And I loved being the technical counterpart to that person because I would show
up at these meetings that I never would have gotten into with people who I really wanted to
work with all because this person was really good at navigating that kind of stuff. So I think this
can be a blessing in disguise if you'll take advantage of it. So not even showing any interest
in learning about what we do. That is potentially concerning if your manager really just doesn't
care about the output of the team if they don't care or are not interested or do not have time
to dig into how you implement stuff that could be one thing but if they don't care about what you
do day to day and and what your team is producing that seems like a different yeah problem it's very
possible that your manager has a bunch of stuff on their plate and like figuring out the code
review process here is very far down on probably not even on the plate it's not that they don't
yeah it's not that they don't care it's that there are other things that are that are more
pressing yeah if it's if it's literally about the output of the team and how to tell
did we do the thing that we are supposed to and what are we supposed to do then that's a big deal
but if if they're not spending as much time on the day-to-day hands-on engineering things
it's probably because they're trying to keep up with all of the other stuff that comes with
being a new engineering manager at this place could be and i think you as a team member really
need to carefully set your expectations for what you need this person to do for you because like
jameson said the code review process is probably not on the top of their list or even on their list
and there's probably a hundred other little decisions like that like hmm for our sprint
point estimates should we use fibonacci sequence or powers of two no opinion doesn't care right so
don't expect them to because when you expect them to that's where you find pain that the i've heard
it said that the difference between expectations and reality that's where pain lives and you want
to try to get those expectations clear that's really metal what's that come to the difference
of expectations and reality the pain zone were we just really lucky yeah i don't know i think
you should learn stuff from this new person and and help them make sure that the work is allocated
to somebody. But it's very possible. I don't know if I said this explicitly. If I did,
I will repeat myself. And if not, I'll just say it for the first time. And it's a mystery to me
which one of those two this is going to be. They might have no expectation that you want them to
be this involved technically. Maybe they had a bad experience in their past career where someone
thought they were micromanaging because they were so involved in the day-to-day and pushed back
really hard or something like that so figuring out if this if this is something that they know
you want is probably useful and and what need you are trying to fulfill by having them do this is
probably also useful because there might be a different way to do that that fits in with their
skills and responsibilities yeah all right i'm done you're done all right we're gonna we're gonna
quit this show this episode only yeah oh happy several weeks late sixth podcast anniversary
yes congrats to you jameson much like my real anniversary and that you forgot
yes it comes and goes and then i notice later and think oh crap you have tolerated me more than most
companies have been willing to do this is the longest job i have ever had if it is and the
lowest paying. Yeah. Maybe those things are related. Maybe money makes me quit jobs.
We've been doing this all wrong. Yeah. You've been going after more money,
but every time you get more and then you stay less. Yeah. All right. Well, I think we're done.
Thank you so much for listening. What can people do if they want their own questions answered?
Go over to softskills.audio and click the ask a question button. You can fill out our form there
and as always thank you so much to all of you who have taken the time to fill out questions
there's kind of a lot of questions let's just say it's probably going to take us longer than
six years to answer them all another six years but keep them keep them coming we love it we do
have another six years of material yeah we we definitely do keep the questions coming we
absolutely love them all right see you next week
Thank you.
