Soft Skills Engineering - Episode 99: Developer Health and Whiteboard Interviews
Episode Date: March 9, 2018Dave and Jamison answer these questions: Do you have any recommendations for maintaining physical health in a software developer role? For example, strategies to maintain good posture, reduce eye ...strain, etc. Is the practice of asking interviewing developers to regurgitate 20 year old algorithms on a whiteboard a recent trend or is this something new? Can you make sense of this madness? This is a pretty good summary of some of the health effects of sitting. Here is the tweet Jamison talked about.
Transcript
Discussion (0)
It takes more than great dynamic programming skills to be a great engineer.
This is Soft Skills Engineering episode 99.
I'm your host, Dave Smith.
I'm your host, Jameson Dance.
We'd like to thank our patrons.
Yeah, we totally would.
Thank you to Dustin Coates and Sean Clayton.
Thank you to everyone else who's supporting us.
If you go to patreon.com slash softskillseng, you can see our Patreon.
You can support us.
you can get our eternal gratitude and fund the the ball pit you can fund the uh just the equipment
and hosting all the other costs that go with this podcast we really appreciate it i mean it's
episode 99 that means we have to do our big celebration right isn't that when people
traditionally if we think only if we started with episode zero which we failed to do oh man
otherwise this would be our 100th too bad that was a mistake what language is this dude zero
or one based indexing is pascal and basic if i recall correctly yeah okay well we're all about
both of those languages oh yeah on this show i'm all about the turbo pascal yeah the
i literally shipped commercial product in delphi i don't know if you knew that about me
i did not know that nor have i ever seen or typed a line of delphi it's just pascal with like a
visual ui on it oh well i'm gonna go switch to it then you know what else it made it sound so
appealing you know what else it is it's a hard skill that's true we should do other things out
of bounds yeah so this is the podcast where we answer all of your non-technical questions about
technical fields like software and we have a question here which i i would love for you to
read it okay this is from an anonymous listener do you have any recommendations for maintaining
physical health in a software developer role for example strategies to maintain good posture
reduce eye strain etc i was actually kind of hoping this would say emotional health so we
could take jabs at programming languages we don't like we can't always take jabs at programming
languages we don't like there aren't any though i like them all that's right i've never met a
language i didn't love i'm trying to think if there was one i really just hated uh i hated java
because i didn't like the classes i had to do in job like the school classes not the job classes
yeah that's funny i haven't written enough java in real life to actually have a real opinion on
it you've probably never written any enterprise java is heck i have not that's pretty intense
the java i write is hacker java that's right lean leet java yeah it's all in one file one class
one function i mean method excuse me that's right you mean method one public static method yeah
oh so i feel very emotionally healthy because of that that's my strategy for that
good for you uh physical health so there's there's the there's like an arms race in in ever
more physically taxing desks right you have your sitting desk your average yes just soon to be dead
developer like me cruising close to heart attacks um the standing desk is a little bit less
comfortable which means it's healthier there's the treadmill desk which is even less comfortable
but yet healthier so i feel like there needs to be like the crossfit desk where it's just like
strapped to you while you you lift it do like a thousand burpees or it's like made of it's the
desk made of kettlebells you have to hold them in the air while typing you throw a kettlebell up in
the air hurry up and pick up your computer type two characters drop it grab the kettlebell on
its way down you better grab it are you gonna lose more than your commit history all right if anyone
takes our idea i'm gonna be mad i'm gonna be on the phone with some sandhill venture capital firms
right now the american ninja warrior desk you have to like do those courses
at each course there's like a little terminal you can type into yeah yeah on those platforms
in between the yes the axes that fly back and forth across the flaming lava pit
oh man this is such a good idea
do you have good posture do you feel like you do no i i don't know if i feel like i do but i'm
pretty sure i don't i have a terrible posture i slouched a lot i kind of lean forward shoulders
hunched forward yeah i do too in fact my neck is like permanently my head is does not sit above
my center of mass forward head travel there's a name for it oh my gosh that's me fht
You can Google, you can look for videos on YouTube claiming to fix it.
I see pictures of myself in profile sometimes and I'm like, whoa, my head is like over my
front of my toes.
Oh, man.
I saw a picture of myself at like a conference or something.
And that was my first realization that I had really bad posture.
Just talking about this right now, I'm like sitting up and pushing my head back over my
shoulder blades.
Yeah, me too.
Me too.
let's just talk about this all the time and never talk about anything else problem solved well this
is one good point which is being aware that this is a thing is helpful i remember back in the day
in my 20s so long ago a few months ago that yeah people that talked about health at work were just
big weaklings just just losers oh what you never like decisions could they have made to have bad
posture and yeah rsi and hand pain and eye pain and i'll never make those bad decisions that's
right and yeah it turns out the bad decision is just like being a developer i had already made
the bad decision you just didn't get your uh payout yet yeah it just hadn't caught up to me
yet so kudos to you for being aware this is a thing i think for like 80 of americans who work
offices the choice is uh being an american who works in an office yeah you know it's like so
many so many people in this modern industry sit at a desk and stare at a screen all day
so i am certainly just a mere space doctor not a real doctor well it's higher than a real doctor
but like the licenses don't apply and yeah and we can't be concerned with things like posture and
yeah we're more concerned with metaphysical consciousness it's like planetary orbital
health yeah yeah we'll align your orbits yeah yeah exactly um but from the little bit of research
i've done it feels like the advice around this from medical professionals is either
frustratingly generic or frustratingly uh well are you gonna say wrong no not wrong it's just
it's just like eat your vegetables but for your posture like take breaks try to sit up straight
exercise but i did all that and my back still hurts yeah what i want is like a detailed like a
like an mri of my spine and then like someone pointing out this angle is wrong here and and
twist your wrist to the left four times at this time every hour to fix it and i don't know it
feels like the advice is just like be healthy in general yeah you should exercise more and sleep
more yeah and then you're also the the range of symptoms is so wide i mean there's there's like
carpal tunnel or just general hand or wrist pain or forearm pain or back pain or neck pain
or posture problems uh fingernail sensitivity fingernail sensitivity i think one of the
symptoms is putting all of your code in one public static method yeah because you have to like it's
a posture problem at the root yeah it's a scrolling problem you know what i slouch to get closer to
the metal the metal is my laptop which i'm trying to get my brain closer to it is made of aluminum
yeah so it's all working out i'm reading this list of symptoms and the one i like the best
is a feeling like there's a line of fire running down your arms and i think that fire is just the
code leaving your brain coming out to your fingers clearly not java then it could be java is hot this
burns like enterprise java do you ever like do you ever accidentally like that one feels like
a container not yet it's like oh the fire coming out of my fingers is just burning up my keyboard
sometimes my fans turn on you know you ever have that yeah those are usually when i'm watching
youtube videos that's usually when i fill my screen with 14 different rick astley never going
to give you ups all playing at the same time just to relax a little bit so do you have any any kind
of developer health pain and what have you done to try and address it do you feel like you've done
anything that helps a couple of years ago i started getting some pretty intense hand pain
in my palms uh mostly and um not my palms kind of the concave area in the center of your hand
and it was so bad that it would actually wake me up at night because the pain yeah it was and it
actually more than the pain it was just scary because i was like oh man am i never going to
be able to type again yeah you know i felt like a figure skater who had just twisted their ankle
you know yeah except a thousand times less graceful graceful no olympic medals and no
face not all figure skaters have olympic medals that's true that's true anyway so uh you're just
like them i am i'm just like those olympic figure skaters the ones that don't have medals we're the
same yeah so anyway uh yeah so i got a new keyboard and the pain went away but the keyboard
made me go about 80 slower so i never figured out if it was the keyboard or just slowing down you
know yeah i've heard keyboards can help for hand paint i've heard people switch key layouts so they
go to dvorak or if dvorak is too mainstream they go to colmac or if colmac is too mainstream
they go to a mountain listen to the wind and then use that as inspiration for their own custom layout
i i've i've heard people that switch to it out of pain i've heard more people that just do it
because they like it because it's cool it can apparently help some people i have some pain
like right between my shoulder blades right where my neck and nothing has helped that besides taking
breaks which is frustrating because i've spent a bunch of money on stuff that is supposed to help
bit but i think the key is just like get up and do something besides hunching over close to the
metal that's that's helped a little bit it's the metal the metal is causing your back pain oh my
goodness you're too close to the metal tonight you need to work in higher level programming
languages that aren't so close to the metal i'll do it i guess there's also other non while you're
sitting at your desk stuff like just exercise in general i don't know i exercise a lot and i still
of bad posture and horrible like work-related back pain and you do the kind of exercise that
requires very rigorous attention to good posture during the exercise yeah so maybe that's why i
use up all of my form during squats and then the rest of the day you're just exhausted yeah
just over a laptop yeah it's like a drained battery maybe you should stop exercise less
yeah okay maybe that's it give it a shot anyway i'll try it i think what'll happen is you'll
develop a nice pot belly that will force your body away from the keyboard a little yeah okay
well i could do that and exercise at the same time it just means i get to
eat a lot more fun foods yep okay i think we solved the problem
there is i want to mention this really quick there have been some studies about
the health risks of sitting long-term and i don't have them in front of me but i'll put them in the
show notes with the magic of editing uh and i'm pretty sure they show that sitting is just bad
for you just sitting for a long time is bad for you that kind of led to the rise of standing desks
i think there's also been some studies that show that standing desks are not necessarily better
for you health-wise yeah they're just standing versus sitting doesn't have a huge amount of
health benefits um that that research was sponsored by the sitting desk companies yeah
that's big chair out to get yet
there and then i know treadmill desks are a thing i would not be able to type on a treadmill desk
though but yeah apparently those might be healthy because you're actually moving i want to get you
know those like big circular things you you stand inside and it's like three concentric rings and
your arms are strapped upward and your feet are strapped to the bottom and you start spinning
around oh yeah the torture devices that no no you know what i'm talking about right like
yeah like the things is space camp yeah that's exactly it we should make a desk out of one of
those okay you pull out your phone to check twitter and it goes flying through the air away
from you oh good and it'll link for your productivity yeah okay i like that idea that's
the real solution i think the bottom line here is that almost every developer i know who's been
at a sitting desk or not even sitting just who's been a developer or someone sitting in front of
a keyboard for the last 10 years or so they all have some kind of repetitive stress injury right
but we don't really talk about it very often yeah i have hand pain shame
i have forward head travel shame
i'm sure there's a solution i don't know what it is yet but it probably involves taking regular
breaks that's my space doctor advice probably involves throwing all of our laptops out the
window and going outside forever yeah yeah some variation of that all right by the way i do think
laptops are particularly bad that's when i developed my first real acute hand pain was i
spent way too much time programming on my laptop like the the positioning just feels so unnatural
i mean you're hung you're pushing your hands down onto this keyboard right in front of you
you're staring down at your hands the whole time oh yeah so bad right
yeah i've definitely heard that i don't really work regularly on a laptop so maybe it'd be even
worse i think when i do work on a laptop it actually helps my back pain because it's probably
like oh good another thing to ruin we'll leave we'll leave that back pain thing while we work
on this other thing yeah so anyway we don't have any answers yep but we all suffer from it tell us
your advice if you have some there's a startup there's a startup opportunity here for sure
somewhere i'm sure there are all right should we answer the next question yeah i'll read this one
if you'll allow it please read it this comes from a listener named noah who writes is the practice
of asking interviewing developers to regurgitate 20-year-old algorithms on a whiteboard a recent
trend or is this something new i haven't had to work through algorithmic problem solving since
college that's what well-established libraries are for as someone in his 30s one of my concerns
is that if i ever left my current job i would have to spend two months programming sorry two
months cramming through every leetcode exercise known to humanity to get rehired is this practice
only reserved for junior developers trying to get a first job or is this prevalent in the industry
for all levels can you both make sense of this madness no that was easy yeah yeah there's a lot
going on here i think the main thing i sense is a general frustration with what noah sees as
interviews that do not match the work yep where they're asked to do the kinds of things on white
boards that they don't normally do at work and i think that's that part is pretty common there's
It's not every place, but a lot of places interview you with some kind of artificial
example, often on a whiteboard.
Yep.
I think, like I've said a lot of times before, I think interviews in general are really bad
at evaluating technical skill.
I don't know that the idea of a whiteboard is any worse than a lot of other things I've
seen, but the specific thing of like solve this algorithmic problem in front of people
on the whiteboard, it's both pretty common and has some pretty apparent downsides.
i i wouldn't say that algorithmic problem solving in general is a thing that you never need to know
about that's all that comes up i feel like pretty often in my job so what how do you define algorithmic
problem solving probably different than noah that's probably the the reason why we disagree
what i imagine is noah is is talking about like quicksort or something like there's some algorithm
there's some gotcha problem that if you know this algorithm you can solve it really well on the
whiteboard with and that doesn't come up but just like i have a solution how do i design an algorithm
to solve it that's the bread and butter of programming i feel like yeah like general
making i mean anytime you write code you're effectively creating an algorithm now it's
very rare that you're actually like implementing someone else's algorithm right yeah yeah and it's
often not i mean sometimes the algorithm is like if this thing is true do this other thing so right
it's it's not quite as involved but i don't even know what i'm i think i think you're saying that
there are algorithms and then there are algorithms like this one's not gonna be
yeah there's like textbook capital w whiteboard algorithms you know and those i feel like i
basically never use yeah yeah but i also don't even see those that much well you don't it's not
you never use them is that you never write them yeah that's true all the time in fact we recently
saw a tweet from someone i think he wanted to share that made out of made a really good point
about that yeah so let's look at into a topic we want to talk about um this is from a guy named
sunil pie who is super smart and we were just talking on twitter about algorithms and engineering
interviews and the dom came up the the kind of browser document object model and he mentioned
that the dom is a tree it's a tree of nodes and it even has linked lists at the like at each level
of the tree to get to sibling nodes so um these subjects come up even if you're often i hear
people say like i'm a ui developer why do i need to know how to reverse a linked list and they still
touch all kinds of programming work even if you're not and there's always this idea of like the
hardcore operating system hackers and those people really need to know this stuff but maybe for just
general business programming you don't and i think it can benefit you at at any job and any kind of
programming so no ask specifically is this only reserved for junior developers nope nope happens
everybody happened to me on my last round of interviews at a couple places yep me too some
of them i did okay some of them i did not do okay the ones i didn't do okay i don't work there and
like that's fine i don't know there are interview processes out there that i cannot pass and i just
won't get those jobs and that's true that's okay there are other jobs right now that is a that is
a very healthy way to look at it thank you as we saw in our last question i'm very healthy that's
although i'll tell you what i'm hunched over interviewing at a whiteboard with a marker and
stuff it's probably a lot better for your posture than sitting over a keyboard that's true you
should be thanking these companies it burns a lot of calories because you sweat outrageously
yeah the thing i dislike the most about these interviews isn't necessarily the questions that
they ask it's more the uh the adversarial nature of them where it feels like there's one or
sometimes multiple people sitting down you're standing up in front of them and they're like
can you do this i bet you can't that's the feeling i get often when i'm doing them they're just
throwing a problem at you folding their arms and like leaning back and saying like do this for me
and that's pretty much the opposite of how most engineering work happens it's usually very
collaborative um people are working together and stuff people are willing to help and there's
plenty of room for insight and ideas but it's it's never like prove to us you can get this done
that's only in the interview let's see if this candidate can produce this algorithm i learned
about last week yeah yeah so i think some of it is just the style of it yeah a little bit um and
and frankly i don't looking over the last 15 years i can't remember a time when i've been asked
esoteric trivia about uh algorithms um can you have you ever been i mean you said you've had
explicitly asked to like risk well i mean people have asked me like what's the big o runtime of
quicksort sure mumble like then log in and then that's it but i haven't been asked like
write quicksort on the whiteboard i have been asked questions where there's like a sneaky
right answer if i remember some algorithm but it's it hasn't ever been something
crazy intense uh where the expectation was i would have this memorized ahead of time
yeah the ones where i've probably experienced more and done the worst on were where we talked
through an algorithm in person and so the example would be like here's how quicksort works please
write it on the whiteboard oh really that's happened to me a few different times yeah so
they basically describe the algorithm and then you have to produce yeah they describe the algorithm
and then they're like use use write it and use it to do this thing okay um and those i've
resoundingly failed oh really i thought you would have said they would go well that's interesting
no no i i just get too nervous and i my brain ceases to function so you are not able to
take a requirement and produce working code that's what i'm getting from this
this is why we run a soft skills podcast by the way i can do that just fine outside of whiteboard
job interviews there have been other interviews actually where it's it hasn't even it's just that
one subset of like here's this algorithm you have maybe heard of but don't know off the top of your
head and and it isn't like written out in pseudocode or anything it's it's like described
and then it's like use this to write write it out and use it to solve this problem those ones i
haven't done well on there's been other ones where it's just like solve this general problem um and
i've done better on those yeah because then you can come up with like your create your own solution
and talk about yeah yeah and it's talking through it a little bit more rather than me kind of like
trying to remember what they said and not knowing if i need to put semicolons in this weird made-up
whiteboard programming language that they have me doing or not and then worrying about how screwed
up your curly brace looks when you write it yeah yeah and like uh did i forget one of the steps
that they said i had to do or did i misunderstand one of the steps or i don't know you know it's
funny you say that because it's like on the job if someone came to you and in like three sentences
described what you have to do you'd be like you know why don't you go write this down in a spec
you know yeah i think we would build a better product for our customers if you would actually
write this down yeah but those kinds of interviews have not happened to me very often so they happen
maybe they happen more in other industries or different kinds of companies but i don't think
it's you can certainly get a job without ever doing a whiteboard interview and you can do
interviews that are more or less hard for you to pass depending on your personal style and skill
said yeah so for my last big interview i did a bunch of study beforehand on cs concepts
i spent i don't know maybe 10 hours or something reading material wikipedia is a gold mine for this
stuff crouton science right what is that so cs oh it stands for yeah theoretical crouton science of
course and i i like crammed all these algorithms and different esoteric data structures like avl
trees and all these things into my head and then frankly when the time came for me to do my
interview i felt like it hurt me because they kept giving me like not super complicated problems
and i kept reaching for these super complex computer science concepts almost because i was
trying to impress them but i think mostly just because that's what was in the forefront of my
mind and so i actually think that hurt me a little bit to have just too much esoteric
cs stuff going on in my mind yeah i wonder if there's almost a bias towards publishing about
these kinds of things because they're cool i think they're interesting and i like reading about them
and i think that might mean that when people end up using them in work or or personal projects or
whatever they're more likely to write up about how they had to like make an avl tree and and
how cool it was to use then like i put everything in in a array like i don't know so so you might
see them talked about more often just because they're cool not necessarily because you'll end
up having to use them yeah yeah could be so let's see if we answered noah's question shall we
yeah so is it only virginia devs no nope it's all levels can we make sense of this madness also no
know that was easy yeah we've talked around it a little bit but i don't feel like we've defined
it seems like this idea has come up of like stuff that is reasonable to know versus stuff that is
not reasonable to know and how to rebalance an avl tree it might be on the stuff that is not
reasonable to know side of the divide off the top of your head for the average developer yeah what
would the other side look like what's the stuff that an average developer should know that might
come up in these kind of algorithm or data structure interviews i think you should know
how to implement fixed point math on a whiteboard like definitely okay i know some of those words
so i think a part of the way there
next um no i'm just i'm just i'm just kidding i'm just kidding about that
so from my experience having an understanding of data structures is much more valuable and
also in an interview context i mean more valuable where you can say oh i would use a linked list for
this or i would use a hash table for that um yeah that's a lot more useful than say like having
memorized how diffie-hellman key exchange works or any number of other algorithms like the tortoise
and hare uh cycle finder algorithm you know that kind of stuff yeah and i guess that makes sense
because data structures are more generally applicable than algorithms like an algorithm
is specifically designed to solve one problem but a data structure is like a generic concept
meant to to solve many problems yeah so so we should probably give like a list of the data
structures we think are the most like the the best ones to have in your tool belt for interviews
even though even though we're encroaching on hard skills a little bit yeah that's okay well is it
okay i don't know we're gonna do it anyways it's our podcast we'll ask the judges later this will
be a firm skills episode it's like soft a little bit hard at the same time so you said data
structures you should know when you talk about know them i feel like that means a couple things
it means like know what they know what they're called maybe know a little bit about the runtime
behavior of them know a little bit about how they might be implemented you you might not have to
be able to just crank out an implementation yourself but right but know how they work
basically i think a basic list is i mean just an array some kind of list linked lists uh trees in
general some kind of map hash object dictionary whatever you want to call it maybe a queue a
stack i feel like that's kind of a baseline for what i would expect a reasonably experienced
reasonably knowledgeable developer to know yep me too and that's stuff that you probably use
all the time yeah directly or indirectly maybe not all of it but i think almost all of it and
like jameson said like you really need to understand when these things are applicable
and when they're not like when are they a good choice and when are they not mostly
from a performance perspective that's what interviewers will often go after
yeah sometimes an interview question is really just they're like waiting to hear this secret
word that's going to be like q and then once you say q they're like okay they know they know a
little bit about this problem and and it's like i've seen this a couple times almost where there's
a problem laid out you talk through it a little bit you you end up on some data structure to help
solve it and then it almost feels less adversarial because you've proved that you know what a q is
already a little bit well i guess when when i say i think someone should know these it's perfectly
fine to enter the industry and write code without a detailed understanding of these things yeah i
feel like you should definitely work towards knowing them and this doesn't feel like esoteric
weird whiteboard only knowledge yeah even though some of these things you may never actually
directly implement or use yeah i mean probably you'd use them a lot more than you'd implement
them for sure for sure in fact i can't think of any time i've ever actually implemented any of
these things myself for like a job yeah not for real life yeah but i use them all the time like
i reach for them and i it's like using the right tool for the job like i you know i've hammered
nails in but i've never built a hammer yeah i think the only one of these that i've made from
scratch in in real work is probably like a linked list or a tree because everything else just kind
of comes built into most of the languages i've used but they're yeah in these ones i was working
and there wasn't a built-in abstraction
for linked lists or trees.
Anyways.
All right, now you are fully prepared.
This is getting rambly.
You can get in there
and knock that interview out of the park.
Yeah, the key takeaways I think are
it's a reasonable expectation
to think you as a more senior developer
would encounter whiteboard-y interview questions.
You can just fail on those
if you really hate those.
Like, that's fine.
Just don't work there.
If you want to do well on them,
I think it's reasonable to ask
about that that stuff that we talked about just a second ago things beyond that i think indicate
either some pretty deep specialization they're expecting out of candidates that you should
hopefully know of ahead of time or or things have gone wrong or just like kind of a weird
artificial barrier in their interview process that's more likely which happened all the time
all right we made sense of the madness we solved the puzzle on the whiteboard there you go
i was literally writing everything you said on my whiteboard here so i could
analyze it i have a whiteboard behind me right now hang on i want to turn around and see what's on it
all right there's a giant scribble from my daughter she failed the interview there is like a
truth table from when i was trying to figure out some boolean thing that i wrote wrong five times
okay and there's a random to-do list which is a linked list maybe if i squint at it
so yeah i think i think i do use these things these whiteboard interview skills
oh yeah on a whiteboard no less
all right what should people do if they want their own questions answered dave go to our
website at softskills.audio and click on ask a question you can fill out as much or as little
detail as you want in fact you can keep yourself anonymous if you prefer and also we'd appreciate
you clicking on the support us button on that website and contribute to our running patreon
fund which we very much appreciate we're looking to pay some people to do some work for us
in the form of graphic design
or audio editing
and this money that you donate
will help us to achieve that.
So thank you to those.
You know all those sniffles
that I leave in?
Imagine those being gone.
That's what your money could do.
That is right.
So please, yes,
thank you to everyone
who has supported us.
We very much appreciate
your generous donations.
It's fantastic to see.
I think with that we're done.
We'll catch you next week.
