Soft Skills Engineering - Episode 137: How to get answers to technical questions and Should managers also be technical
Episode Date: December 24, 2018In this episode, Dave and Jamison answer these questions: What’s the best approach to connecting with people who know about specific technologies that could help me if I have a question? An...d what’s the best way to cast a net via co-workers, friends, & family? The details of my situation are that I’m trying to build a PostgreSQL database from scratch, and I’m running into lots of problems. I spent 2 hours digging through the Postgres documentation, I asked questions on my University Slack channel, and even the PostgreSQL team Slack with no answers. I also reached out to my boss. But I still have no answers. In any case, I’m just happy I had the wherewithal to walk away after 2 hours instead of spiraling into an absolute rage and wasting my night cursing PostgreSQL. Should a team lead do technical work or restrict himself to people management? What are the pros and cons from each approach? HR in my company wants to change from a unified model of team and tech leads (single person performing both roles) to a split model (one team lead with multiple tech leads that hold no people management responsibilities) and I’m not sure what to think about this. I feel not having the team leads ““on the ground”” will make them less effective in the people management aspect.
Transcript
Discussion (0)
It takes more than great reference counting skills
to be a great engineer.
This is Soft Skills Engineering episode 137.
I'm your host, Dave Smith.
I'm your host, Jameson Dance.
Soft Skills Engineering is a weekly advice show
for software engineers about non-technical topics.
I just want to dive into the patrons.
Dive in.
So I will do it.
I will stop talking before I dive into it.
Thank you so much to Matthew Wedwick's Agile Ventures charity,
Zach Granin, David Jackson, Nick Kantar,
Sean Clayton, and Chris Hogan.
They are all donating at the level where we thank them
every single episode.
if you would like to support the show you can go to softskills.audio and click support us on patreon
thank you very much and every time you support us we increment a reference to you and eventually
we'll garbage collect you when you stop supporting do we no it doesn't work that way you'll never be
garbage in my heart but you will be collected do you want to read our listener comment oh yeah sure
so we got this comment this week uh it says this is a comment on episode 135 which was about
publicly correcting speakers. It says, I've been in a very similar situation to the question about
correcting speakers and it went well in the end. At my last job, once every two weeks,
developers would get together and present a challenge that they had overcome or something
new that they were learning. This speaker was talking about a new framework and said something
that I knew was not true. I didn't want to correct them on the spot, especially because I was the
only manager in the room. So after the meeting was over, I fired the speaker. No, I'm kidding.
good job uh seriously i quit the company sorry kidding again
no seriously i sent an email to the speaker saying that there was a mistake in what that
was said and what the mistake was the first answer was that there was no mistake i sent
back the documentation and pointed out why it was wrong then the speaker replied oh yeah you
were right sorry no problem i just asked this person to send an email to everybody correcting
the information which they did in the end everybody got the right information and the
speaker was not embarrassed win win or if they were they were embarrassed privately privately
embarrassed that's my permanent state though so that's fine cool thanks for sharing that yeah
all right i'm gonna read the first question all right this is from a listener named uh mikel maybe
yeah what's the best approach to connecting with people who know about specific technologies that
could help me if i have a question and what's the best way to cast a net via co-workers friends and
family the details of my situation are that i'm trying to build a postgresql okay holy war is it
Postgresql
PostgreSQL
Post
GreSQL
Database from scratch and I'm running into lots of problems
I spent two hours digging through the Postgres documentation
I asked questions on my
University Slack channel and even the
PostgreSQL Slack with no answers
I also reached out to my boss
But I still have no answers
In any case, I'm just happy
I had the wherewithal to walk away after two hours
instead of spiraling into an absolute rage
and wasting my night cursing post-gre-S-Q-L.
Just an editorial comment.
Jameson added all the mispronunciations.
I'm just covering all the bases, however it's pronounced.
You know, on a slight tangent,
the most surprising database pronunciation I have ever heard
is the database that most people call SQLite.
SQLite?
Or SQLite.
Do you want to know how the creator actually pronounces that?
How?
Esquilite.
Oh, I thought you were saying sequelite is the surprising pronunciation.
No, I heard sequelite and esquilite.
Sequelite is more common, I think.
But the creator actually says esquilite, and he says it's supposed to be like stalactite or something like that.
Huh.
Yeah.
Is that the one that grows up or down?
That one grows down.
I wonder if there's some performance metaphor that I'm not smart enough to get.
I could be misremembering the metaphor, but I don't know.
Anyway, I was just, I was so dumbfounded because it's like, no one has ever argued that.
And anyway, I listened to an interview with the creator and that's what he said.
So there you go.
That's what you got from the interview.
I literally remember nothing else.
Okay, so.
PeopleLite is a program that helps start debates over how to pronounce it.
And it maybe does some other stuff too.
Turns out there's a lot of programs that do that.
All right.
Like, for example, for revision control, I use Gite.
okay let's get back the g is silent it's just it
stop it okay uh yeah so how do you how do you get answers to your specific technical questions
i think if you switch to mongo then you won't have to worry about sequel anymore yeah the problem
will have no sequel that's right that'll cut out a whole class of problems if you switch to
serverless you might not have to worry about mongo anymore because you won't have any anything
or if you just retire then you can forget about all this stuff you can distill all these technical
problems to one simple problem which is how do i feed myself stack overflow does not have an
answer for you oh shoot i made a poor mistake huh this is interesting what do you think well
so there's a little bit more to the question that we edited out there's a lot of specific
details in here about various different database features that Mikkel has tried to use to solve
his problems, including constraints and loops and all kinds of different things.
And I've seen this kind of question asked before where it's like so many details about all the
things you've tried, but not a lot of like distilled, boiled down, basic, like fundamental
question that you're trying to answer. You know, have you seen that kind of question before,
jameson i've asked that kind of question before yeah yeah it's like i don't sometimes i feel
myself doing it when i don't know enough to distill my question down so i just throw everything
in and hope that in there there's a clue that someone reading will be able to pick out some
meaning from yeah so yeah yeah i've done that too and i'm it makes me remember a framework i used to
reviews, well over 10 years ago, where if you wanted to report a bug to the framework creators,
one of the requirements was that you provide a minimal compilable example of the bug in action
with their framework. And I always thought that was kind of a frustrating burden to put on a bug
reporter until the first time when I went to report a bug, and I'd had to create a minimal
example of the bug in action. And I just couldn't, right? Like outside of my app, I couldn't reproduce
the bug. And it occurred to me that that little exercise made me realize that I actually didn't
understand what was going on here. And there may be other things at play outside of the framework
itself, like things that I had caused. And I really like that. I really like that mantra that
you want to distill the problem down to its essence so that you can communicate what the
problem is. And a lot of times when I do this, I find that I can solve the problem without actually
asking someone else. Have you heard about the XY problem before? Oh, yeah. Yeah, we have. It's been
a long time, but we should reiterate it. This is totally good. Okay. I'm going to steal it from the
first DuckDuckGo search result. The XY problem is when you ask about your attempted solution
rather than your actual problem. So you want to accomplish a task, you have something that
you're trying to do to accomplish that task, and you ask about that thing instead of the actual
underlying need. And I feel like that can come up a lot in technical questions too, where you're
asking, how do I use these specific Postgres features correctly? But there's something you're
trying to do behind that and that might be the better question to ask how do i have a one-to-many
relationship or whatever it is um and i i think the distillation you're talking about is often
distilling it down to to what problem you're actually trying to solve if it's a question
not a bug report necessarily yeah like um i'll go ahead no you go ahead oh i will go ahead i have
uh friends who got into some wordpress development from a non-technical background and they are
picking up programming by getting specific tasks assigned to them. And they go about trying to
solve them without ever having this deep grasp on the underlying fundamentals. So they end up doing
this kind of thing a lot where they ask very detailed tactical questions that include a lot
of context around what they've tried and how it's working. But the solution is often there's some
programming fundamentals or language or technology fundamentals that apply broadly to lots of
different questions that might help you and and the focus on this specific tactic obscures this
underlying lack of knowledge does that make sense yeah i think so it's it's not like they're dumb
no they just they they're focusing so much on solving this specific problem that they they
almost don't have time or haven't spent enough time to get an understanding of the fundamentals
which would apply to this specific problem and you can still have like tactical questions if
you understand the fundamentals but yeah a lot of them can go away yeah the more basic ones like
i'm just trying to think of a wordpress situation without getting too technical it's almost always
something with javascript and some like i don't know we need to like make these drop downs interact
in this specific way and we found this code on the internet that kind of does the thing and it's not
quite working when we apply it to this context and it's yeah to be clear i'm not saying they're
like not smart for not knowing this stuff it's just there's there's these common patterns that
occur across questions. So I feel like the thing to take away from that is you kind of need to
balance these very tactically task-oriented questions with investing in understanding the
technology that you use underneath. And ideally, you kind of do them both at the same time. And
that makes it easier to understand or answer these task-based questions. Yeah. Yeah, totally.
I mean, I totally get that. And I think this is pretty common to people who are new to the field
as well or even not new to the field but new to a particular technology you know and it's like
you just kind of sometimes have to spend some time studying the fundamentals before you can even
really ask the right questions like an analogy that i thought of was if someone came to you and
said hey my shoe's not working and they were like i've tried here are all the things i've tried i've
tried different laces different sizes different colors but after everything like my hands are
still cold you know and yeah it's like oh well that's because you're using the shoe in the wrong
place right it goes on your feet for your hands we have this totally other thing and if you had
studied apparel theory then you could have known loves science yes finger science yeah anyway you
know i think we often come asking questions we ask too many details that are ancillary to the
problem instead of really understanding what our problem is at like a base level and then
communicating that i i feel that viscerally when i'm in an unfamiliar technology i just struggle
to even clearly express the questions that i'm facing yeah and i when i work with a thing i'm
an expert in i still have questions that pop up but i feel like i can frame them a lot more easily
and i feel like i can give the right kind of context to help someone cut to someone that
knows or might know the answer cut to what i'm actually asking yeah sometimes when i'm in a new
technology and I know how I would have accomplished something in an old technology, I will sometimes
say like, well, here's how I would have done this in this old technology. Is there an equivalent
way or a different pattern in this new technology? Sometimes that helps give people a concrete like
anchor point for them to make recommendations on how to solve your problem. Make sure you stick
in some little barbs about the new technology too. Like here's how I would do it in this old
good thing. But since I'm stuck using your new stupid thing, it's too primitive to implement
an old good solution. How do you cavemen solve this problem? That usually gets people to answer
your questions. Yeah. All I have are these two rocks to bang together. Well, I feel like the
answer we gave Mikel is like, go learn all of Postgres. I think it's good general advice. I
don't know how it helps him in the specific though. Yeah. I mean, if you're brand new to
a technology like postgres and you have a problem you want to solve i think this is where i would
spend time going through like tutorials reading like introductory documentation um instead of
like diving straight into the errors you're seeing and googling those and then reading the docs that
come from those error messages i would say start over and try to figure out like what is the
postgres way to do what you're trying to do and even asking that kind of a question can be a more
helpful than saying like well i you know why are my why are my constraint checks failing you know
I mean, that's attacking the fringes when I think maybe you need to go to the basics.
And I'm reminded of a coworker I had who was really good at this.
I think Jameson and I are similar in that we actually like to solve problems by, or
sorry, we like to learn new things by having a problem that drives us through the process
of learning it, like a task we're trying to accomplish.
But I, and that works.
I think that actually works for a lot of people.
But I had a coworker once who he could actually sit down and just like read the documentation
for something new say it was postgres or whatever and build up like this foundational layer of
understanding of the technology before he would actually try to apply it to any problem and what
i found is that he went down a lot fewer dark alleys and he had a lot he had good answers to
questions as they came up rather than just kind of like trying something out seeing that it failed
asking how's that overflow you know attacking the fringes i don't know it took a lot more time up
front and more maybe motivation to do it but in the end i think he spent his time a little bit
more effectively than i tend to i certainly don't have time to invest in learning up front
that'd be way too slow i have problems to solve yeah yeah i don't have time to read for 20 minutes
i have it'll take me two hours to find the docs to accomplish the specific task um i also think
you might want to explore a little bit more in-person time with uh if there's somebody who
knows it's i found it's often easier to get for asking a specific targeted question asynchronous
chat or stack overflow or those kind of methods works pretty well but if if i'm just like what
even is a postgres i i feel like i benefit more from talking to somebody about it because i can
ask broad questions and get quick answers and like figure out okay i'll dive into that thing later and
i can cover a lot more ground and get more of an overview and that helps me more at the beginning
where I don't have that much of an overview
or solid understanding.
Yes.
And in person, they can ask follow-up questions
to help narrow the search space
that they're trying to answer questions in.
Yeah, yeah.
Like if someone came to me with a question
that was just kind of a big brain dump
of all the issues they've encountered,
I'd be like, okay,
tell me what you're trying to accomplish.
Let's walk through that.
And then maybe I can recommend some courses of action.
Yeah.
What if they just came and were like,
Dave, what's the big O of Postgres?
oh yeah that's a great question is it no well your meta question your meta question is the
great question the question itself is terrible but how do you answer that's a good question
no because seriously like that that question betrays a lack of understanding of the concepts
that are being asked about right and so how do you say that to someone like well you clearly
have no idea what you're talking about you know like yeah i think i i think that's where a face
to face conversation helps because then like you said you can ask a bunch of follow-up questions
like why why do you need to know the big o of postgres yes and what do you think big o is before
we go any further yeah and what do you think postgres is and what is is actually but seriously
like coming coming to people like you want to minimize the effort it would take to answer your
question and so if there's like fundamental errors in your question um it's hard for someone to be
able to answer it especially in written form you're expecting them to like take time and write
down an answer to you when there's like some fundamental assumptions that are wrong in the
question you're asking you want to sort those out i think in person before you go with these like
targeted specific questions yeah i think you're right i agree okay question answered question
answer good luck with your sql and let us know when you abandon it and embrace no sql uh do you
want to read our next one yeah this one comes from an anonymous listener who says should a team lead
do technical work or restrict him or herself to people management what are the pros and cons from
each approach hr and my company wants to change from a unified model of team and tech leads a
single person performing both roles to a split model where you have one team lead with multiple
tech leads that hold no people management responsibilities and i'm not sure what to
think about this i feel not having the team leads quote on the ground will make them less effective
in the people management aspect?
Great question.
This is like a question for the ages.
Yeah, I feel like lots of medium think pieces
are written about these issues.
Have you worked in both of these models?
As a matter of fact, I have.
I just had to think.
I don't think I've ever worked in the model
where there's a formal engineering manager
and also a formal tech lead.
And those are two separate people.
I have worked in the model where there is one
and they're both the same people.
And then I've also worked in just like startups
where simultaneously all models and no models
at the same time.
But I haven't worked in the-
Everyone's a tech lead.
Yeah, we're all tech leads.
It's flat.
We all make decisions together
based on popularity of the person proposing it.
Based on who's out of the office at the moment
when we made the decision.
To become the tech lead,
you must bully all the other people.
Yeah, so I only have half of the perspective on this.
So you have not worked with a dedicated people manager?
Yes.
Yeah, I haven't worked in or around a place where there's a dedicated people manager separate from
a dedicated tech lead. I, right now, am the dedicated people manager and dedicated tech
lead at my current position. Okay, so you are not dedicated. You are the split personality.
I'm real dedicated to my job, Dave. I'm offended. Double dedication.
Yeah, okay. The opposite of what I said. I am the people manager and tech lead.
You are the unified model from the question text here.
yes um and that one and so the proposal from hr in this question is to split you into two people
yeah i um immediately dislike it okay i like both of my halves yes it would hurt a lot
and plus if i was the tech lead i would have to be the left side would have to be the tech lead
because i imagine you'd be writing on the whiteboard but then the right side would be
the manager and then how would i type my emails if i'm left-handed with only my right hand well
You can probably click the accept button on your calendar invite still.
I just have to switch to Gmail and count on their auto-generated responses for
every problem that ever comes up.
You're just banging the enter key with your face.
Half of my face.
Yeah, I want to hear your perspective.
This is a long way of saying, Dave, tell me your wisdom because I've got half of the wisdom.
So let's see here.
I'm thinking back over my long, illustrious career.
First company was mixed or combined, unified.
unified second company was unified uh the next company was unified and now i work at a company
where they're split are you there still i mean can you tell can you tell if you like one model
better than the other there's so many variables between all these different companies i'm sure but
do you feel like you can say this thing worked better in this model um separate separated from
all the things that were different at the companies besides that i can tell you i don't know if i i
actually don't know if i have a preference i think i've been fine with all of them but i can definitely
tell you some of the differences. And I can say that, yeah, here you go. At a company where they
are split roles, where you have dedicated people managers and dedicated tech leads, there is a much
stronger focus on career development and people development, because that is basically the full
time job of the people manager. That's not actually the only job they have. They also have
to do like roadmap management and resource allocation and other manager things. But they
spend a lot of time on people development. I've never really seen that at other companies. And I
think related to that fact is we also have very clear and rigorous guidelines for what it means
to grow in your role to the next level. I've never seen that in any other company, never seen it as
clearly articulated. So that's one area I think that is significantly different. It seems like
it could devolve into the people manager pushing for stuff to get done faster and the tech lead
pushing for stuff to get done right. So they're a little more at odds in terms of deadlines and
deliverables. And there's more of a balance there versus if they're in the same role. Does that come
up? I could see why you would think that, but that has not been the case in my experience.
Because the people manager, while they own the roadmap and delivery on that,
they also own things like the well-being of the engineers. And in some cases, I think that might
actually trump the deliverables. And so I think they have the right incentives because they know
that if they start losing people, that they'll be unable to deliver on their roadmap and
commitments. So yeah, I haven't really observed that. I've observed the opposite of that.
Interesting.
But that might actually be more a function of having proper resourcing and not being
shorthanded all the time, you know?
Yeah. Yeah. I feel that not having the team leads on the ground will make them less effective in
the people management aspect. I don't think I understand that question because you don't have
to be, right? If you're a tech lead, just don't worry about that.
Don't worry about the people management. Oh, I think what they're saying is that
having dedicated people managers will make them less effective at people management because they
will be less connected to what people will be less technical. Yeah, that's what I think. And
and I have definitely observed that what ends up happening, though, is that the people manager can
have a little bit less of a biased view, because they aren't like, let's say you have a co worker
who makes a lot of errors in their code and causes a lot of issues for the team, the people manager
has kind of a bird's eye view of that they aren't directly impacted. Now, what if your team lead
uh was also your people manager and your team lead was now burned by some of the bugs that
this co-worker wrote now i think they would have a bias because it's like oh yeah i remember that
co-worker they wrote this bug it was terrible oh it look it's performance review season you know
whereas a dedicated people manager burned like well it's like now my lead would how would have
to go fix it no like let's say i've got a feature i'm trying to develop but i get blocked because
of some bug that someone else wrote on the team and i'm also the team lead and people manager and
so now I have this bias where I'm like, I couldn't do my job because you caused this problem. And on
the one hand, it's good to have that firsthand information. But on the other hand, I kind of
like to have someone who's outside of the situation who can now take more like a judge, you know, who
can take perspectives from all the team members, including the person who wrote the bug and the
people who were impacted by the bug, and then judge, you know, what the impact was, and then
make appropriate accommodations on your performance review. So I don't know, I think it might create a
less partial situation where you can do a better job of judging people's performance. But on the
other hand, like you say in the question, because you're not on the ground yourself, you rely on
secondhand reports. So my experience is I always feel like I am doing a very crappy job of
everything because I'm doing so many different things at once. So I feel like I'm 50% of a tech
lead because that's half my capacity, actually less, but I don't have the capacity to devote to
it as much time as i think it deserves but every second i devote to that is seconds taken away from
all these other things that i have to do so part of me wonders if it wouldn't be nice to split those
responsibilities more so that i'd be able to focus more on on one of them or the other yeah but the
other part of me thinks jameson your job is to say it depends and everything's in the middle and
there's got to be trade-offs so like there's got to be something else bad about it right i feel like
you're you're pulling towards splitting them and i feel like i have to end up in the middle
okay what pulls it back back to like unifying them yeah we already mentioned the lack of
technical expertise that might come up well but even that seems i feel like if you have a technical
background you might not necessarily need to be a technical expert in the specific product or thing
that you're working on and that that counts for a lot as a people manager yeah yeah i mean it does
however and i and this will help pull it back a little bit i think it puts now more burden on
your team to keep you up to date with what's happening because like i said earlier everything
you know about like the quality of the code and the process effectiveness and things it's all
second-hand information now to you because you're not directly participating in it which means it's
up to your team to report it to you and the accuracy of those reports governs now your
knowledge and and that's kind of a crappy situation to be in because when you get a real-time question
And it's like, hey, what's going on with this?
The only thing you can do is turn around and ask your team, right?
And so it creates a little bit of inefficiency in communication too.
Yeah.
I also feel like I still don't think I have a good handle on where exactly the responsibilities fall between tech lead and people manager and how you make it clear to everybody who does what and who's responsible for what.
Maybe that's just a cultural thing and you just have to define it and tell people.
but it seems like it seems like you could get into a case of it's it's unclear who decides or
who helps guide decisions and and like does the people manager trump the tech lead if they disagree
what happens like well i think that does end up happening um and you end up having to ask multiple
people's opinions to make important decisions so like yeah i think a lot of times the people
manager at least in my organization has to sign off on stuff and you would i would never proceed
with a major like architectural decision without consulting them um and i think if a team member
wants to propose something uh they now have to pull more people into the room to get it done so
that's kind of a drawback but it's also good to have more eyes on it you kind of have multiple
perspectives so for things that have long-term impact and high risk it's good to get more
thoughts but it is more overhead yeah it probably depends on the person too i could see some people
thriving or or totally floundering in one or the other of these environments if you have a
just a purely technical person who gets pushed into people management who really doesn't want
to do it then the combined model stinks because they have to do this part that they hate in order
to increase their i don't know whatever they want influence or pay or something that they're getting
by by taking this role where if they're split then they get a focus on one part of it i feel
like i'm kind of the opposite where i i really like different aspects of both of these roles
and if i just were in one i'd be like but i want to oh yeah i want to talk about architecture or
like whatever the other role is get back in your people manager box yeah why don't you send some
more emails loser i also think that the the set of people who are good at both being providing
technical leadership and good people management is actually a pretty small set compared to the set
of people who are good at people management unioned with the set of people who are good at
technical leadership and so i think your hiring pool is actually pretty slim when you're looking
for that kind of a person yeah it's slim or you're willing to accept trade-offs of maybe
they're weaker in one area but stronger in another yeah yeah and these are both super they're deep
disciplines there's a lot to learn in both of them i feel stupid saying it because it seems so
obvious but you could focus your whole life on one or the other so you're you know you're spreading
yourself thin yeah i think i've arrived at my consensus of it depends i'm satisfied i've talked
myself there all answers are good answers yeah it doesn't matter do whatever you want because
there will be sucky things about both of them and uh any success or failure that happens in the
world is due to randomness it's not your fault yeah it's not your fault everything is the same
no decision matters you change a thing and then if stuff gets better then it didn't it didn't it
wasn't because of that thing and and that's my official the beauty of this question is it says
that hr wants to make this change so if anything goes wrong it's hr's fault that's a comfortable
place to be in to blame hr for things i feel like everyone will be like oh yeah i understand
all right question answered well yeah question if our listeners want to blame hr for things
uh where can they go do that talk to our hr department uh run by one dave smith
you can submit complaints to dave smith at softskills.audio there's an ask a question
button that will go right to the top of his hr priority to do list thank you very much for
listening if you enjoy the show please share it with people tweet about it however else you want
to share it we'll let your creativity go and we'll catch you next week
