Soft Skills Engineering - Episode 60: Office Arrangements and Disarming A Code Owner
Episode Date: May 17, 2017We answer these two questions: What is the best seating arrangements for software developers? How do I disarm my CTO who is emotionally attached to his code? ...
Transcript
Discussion (0)
it takes more than great code to be a great software engineer this is soft skills engineering
episode 60 soft skills engineering is a weekly advice podcast where developers and other
engineers write in with questions and we provide answers i'm your host dave smith i'm your host
jameson dance silence is the third host i'm just gonna read our first question we have we have
nothing just raw knowledge to drop yeah i mean and it starts oh go ahead i was just gonna say
we're going for high information density but every word i add reduces our information density
i'm gonna densify it right now what is the best seating arrangement for engineers this is from
an anonymous listener um and that's all the question right there what's the best seating
arrangement yeah uh ball pits definitely i think um i think right side up has been used ad nauseum
and we should try upside down we need to disrupt seating arrangements in terms of the the y-axis
that people sit right that's right invert the y-axis yeah uh the z-axis too you should sit
with your is that with your back to the computer would that be what the z-axis that's only for
back-end developers okay i i worked with a with a guy who had the weirdest chair i've ever seen
it was like the chair was in front of you and you sat on it and there was this piece that you leaned
your chest up against and okay it i don't know it looked like a torture device but it made him
very comfy it sounds like something i would have seen in a public library when i was a kid yeah
yeah in like the 70s i never could figure out how those worked
um but probably it costs like 15 times what those things cost because it's
an office furniture right i think the ideal seating arrangement is you have a circle
and in the middle is a single developer and on the outside there are like three sales people
and two marketing people and two products people all sitting around the one developer
like orbiting like moving in a circle well they don't even have to orbit but it's just so that
they can easily and quickly get a hold of the developer with all of their needs and then the
developer can help them with their needs we need to add a feature hey we need to add this tracking
code hey we need to move this button and then it's yeah they're all real close that's perfect
really convenient for them it's so convenient for them maximize interruptibility
you're lowering the cost of context switching because that's right it's really easy for the
salespeople to turn around and tap the developer on the shoulder that's right um that's really good
oh so i think a bunch of people would say that the ideal seating arrangement is if they are
sitting at home and all their teammates are also sitting at home yeah wherever they freaking want
in their home or outside their home and it's like on your couch or on the beach or i saw a tweet
the other day from someone who works from home and i think he was sitting on his back porch and
watching his kids jump on the trampoline or something and he was basically humble bragging
about about that sounds like he wasn't working very hard that's the fear about remote work isn't
it they're not doing anything people are at home watching their kids jump on the trampoline instead
of working the classic classic fear yeah uh i think a lot of this will be very subjective
because people like different stuff right some people love open offices some people love private
offices some people love working from home some people hate working from home but everyone hates
cubicles i've never worked in a cubicle i worked in one i'm thinking i think i've worked in two
cubicles before my first quote real job as an intern were they like like they were stacked
you had a double decker
3d cubicles there's all this wasted space above the developers heads yeah wait a minute
with the fireman pole to slide down i don't know i i don't know i don't really have a strong
opinion i just know that people make fun of them a lot yeah so i have my ideal office arrangement
um and i think it would match some other people's and some people would hate it
my ideal setup is you have kind of a private wing i guess for a team um and this depends on how your
teams are organized this this could be a developer team or like a product team where there's people
from multiple different roles but the team is all together in the same wing there's a central
communal space with like couches or desks or chairs or whatever where people can all be out
in the open and and have that spontaneous communication that people love about open
offices but it's surrounded by a ring of private offices and everyone has their own private office
so that if you want you can go into your happy quiet place and and just crank stuff out and
what's the size of these private offices uh i don't think they have to be big just i don't know
big enough so that you can have a desk with a computer on it unless they're mine in that case
it's the corner office that has a putting green inside of it um because isn't that what happens
i don't i don't know i associate putting greens with like the executive offices yes yes and
jameson's office yeah the putting green is like a mini golf course because there's a ball pit
um with a little bridge over it and you have to make it across the bridge like with your putt
so it's a combination putting green ball pit uh yeah i don't think they have to be big at all i
think it's just a space for you to work that's your own space that you can shut the door and
okay have you ever seen that anywhere yes i have um my company was moving office spaces and we
moved into a temporary office while our new space was being prepared and that temporary office had
this exact setup it was this big open room with a bunch of couches in the middle and some desks
and then all around it had this circle of private offices and people just kind of like shuffled in
and out and some people hated the private office thing and they just didn't want one and never went
in theirs and some people loved it and and spent most of their time there but the the choice and
the flexibility was really good because um yeah some people like different environments and there
are different trade-offs so when you went into your private office and closed the door was that
a signal to your team members that you were not to be that was pissed off you were fuming no uh
yeah i mean people they just didn't open the door we had chat like everyone has so you could you
could get slacked or whatever the chat thing was we used back then okay i mean the the value of
private offices is you get to focus in and hopefully you get more in the flow and you can
do deep work where you think without interruption and the value of the open office space is um
it looks really good to investors when they come visit just kidding it's you have all this
spontaneous communication where you're sitting at a table and you overhear someone else say like
we're gonna use MongoDB twice upside down and then you're like that's a terrible idea and you
go talk it out and it's like stuff you hear that spontaneously creates value but you're way more
interruptible so the the flexibility of having both of those feels like the ideal for me so the
closest I've ever come to a private office was sitting two to an office which I did for about
seven years at one company and I liked it pretty good because a lot of times the two people in the
room that shared a room they wouldn't even necessarily be working on the same team you
just happen to cohabitate the same office space and it worked out pretty good i liked it i think
like anything there's probably a pendulum and the pendulum to me feels like it's swinging away from
open offices but maybe it's not i don't know open offices have been cool for a long time and i hate
them and i think they're horrible and then we'll probably swing back to something else and then
we'll realize how horrible it is and then swing back to space open offices or whatever
i haven't seen any evidence that open office spaces is uh going away if anything i see more
and more of it yeah because it's just so freaking cost effective yeah that's it's super cheap and
for a while it had this this aura of startup cool yeah and i think the aura of startup cool
is leaving it a little bit i guess maybe this is like twitter influence which is different from
what people go out and pay money for yeah okay i guess you're right literally every company i can
think of around here has an open office every company i've been to in the last like two years
has an open office plan but people are mad about it on twitter and they didn't yeah no one no one
likes it but it doesn't matter because they don't know the ceo likes it because he can look out over
his domain and observe all the people that are working and he just like feels like look at my
team and look at this really weird paternal thing yeah i think that's a lot of it that's actually
funny you say that about the ceo because my last company got a new ceo um like about a year ago or
less and he came in and had one of these all hands you know q a and one of the comments he made in
the first all hands meeting was we're gonna get rid of this private office thing and um and we're
gonna we're just gonna go to like a big open community thing and everyone of course groaned
you know so it's timely great great uh what was the reaction to it oh people were the engineers
were just like ready to stage a coup like instant it was just like instant rage you know it was
pretty funny so there's a company around here called mx that has an enclosed developer area
but it's an open office inside that area so it's more of a firewall yeah it really is and there
are locks on the doors oh my god there are key card locks and non-engineering key cards do not
open the door oh my goodness it's because they used to have apparently this is apocryphal but
apparently they used to have such a big problem with salespeople coming in and bugging developers
and tapping them on the shoulder that that the cto literally walled off the development team
and said like you cannot just come in and bug us all the time and did the cto stack up like a bunch
of furniture like les mis barricade style in your daily stand-up uh today i'm gonna man the barricades
that's a great metaphor for preserving productivity of your engineering team
Especially since all of those people ended up dead.
Yeah.
I'm going to go murder some salespeople.
Don't do that.
But I think, I mean, the concerns around office space and seating arrangements are all like, how do we promote teamwork and unity?
How do we allow people to be productive and get stuff done?
And different people have different values of productivity.
Like to the product team, productivity is I want to talk to the developers all the time so I can see what's going on and give them feedback and tell them what the product needs to do.
And to the developers, it could be I want a whiteboard the size of a football field so I can draw my microservices architecture in complete detail.
And I don't know.
Have you ever seen any kind of credible research on this topic?
yeah peopleware um is an older book from the 80s but it has some studies about developer
productivity there's one from ibm too if i were a smarter podcaster i would have read these
before this episode and been able to cite them productively instead just fake your way through
it yeah i'll make stuff up and you'll just believe me um i think people where specifically
cites that like hub and spoke thing where there's a central hub with private kind of spokes i don't
know if they say single person or multiple person offices but it's like the central shared space
private space around it and then the ibm study is also from the 80s and i can't remember its
conclusion i'm just gonna assume it supports my my biases which is that open office space sucks
and cubicles cubicles suck i have i have heard of some research being done in this area but i don't
ever remember feeling convinced like oh yeah that's that's definitely the definitive answer
and so i think my my general approach to this question is in the absence of good hard data
go with what your people want so they'll feel good when they come to work yeah that seems good
it could also be a cultural thing like fog creek is famous for saying every developer gets a private
office and and yeah they have their beliefs that that's better but to some extent that's a that's
a flag that they plant that says like here is who we are and how we're different um base camp is all
about remote work and everyone's 100 remote and that's their flag and some people uh say you
should feel a lot like you're working in a garment sweatshop where everyone is in this giant warehouse
on desk together that's their flag oh i know one company like that it just looks awful when you
walk in oh man it's the word dystopian springs to mind yeah but again that's my personal opinion
and i've talked to people who work there and they're like no i don't i don't mind i like it
yeah i mean i guess if you're working on interesting problems with people you like
the din of yeah 3 000 other people in the room also working fades away but
your passion will crowd out the noise don't worry we'll give you these noise canceling
headphones so that the the miles of open space around you where everywhere you look you see
busy activity will not distract you anymore noise canceling headphones plus vr that might be the
answer to open office space you feel like you're in a beautiful meadow and you can't hear your
co-workers but the reality is there's a sweaty developer two inches away from you you know that
scene in the matrix where they're all in those pods uh-huh perfect like it reveals what the real
world is where they're in these like little yeah egg sack things yeah that's you could cram a lot
of people in one room think about the dollars per square footage you get out of that out of
the matrix it's so good impressive it would look to to to executives if you walk in you just saw
these productivity columns of people uh is this wisdom i was gonna say no it's not but yeah it is
i think you have wisdom any any matrix reference so i i think at the end of the day for me i've
worked in so many different environments now so right now i'm working in an open floor plan
really tightly packed in with some amount of partitioning between teams so there's like these
like head height walls between teams but other than that it's just kind of an open area i've
worked in the semi-private office two to an office i've worked in a less private office like four
five six to an office with a common collaboration area in the center like you described the hub and
spoke at the end of the day i was able to be a productive developer in all of these environments
and and i it was never like a deciding factor about going to or leaving a job it was just kind
of a secondary thing but i'll tell you what at my last company we had the hub and spoke thing with
semi-private offices around the perimeter and i walked through i walked so many candidates through
that space as we were interviewing them and i kind of extolled the virtues of having this open
collaboration area with these semi-private offices that are quiet working spaces for your team
and people had very strong positive reactions to that they really seemed to like it so i think it
was a good selling point for them but again i don't think it really made or break made or broke
the deal for them deciding to take the job i'm trying to imagine if there is there's this
theoretical job out there that i'm really excited about and then they have a giant open office space
and how would it make me feel about it and i would definitely be less excited about it i don't know
if i would be less excited enough to say no but there would probably have to be one or two other
things i'm guessing for you to say no yeah if that was the only thing i don't know it would
definitely be a negative for me right um but i have worked with brilliant engineers not just
like random people not random not just the commoners i've worked with with brilliant
engineers who legitimately love open office setups and and they love just walking around
and talking to people and bouncing ideas off anybody
and the collaboration that it brings.
We call those extroverts, Jameson.
That is so true.
No extroverts allowed in this place.
I guess maybe you have to think about those terms
when you're designing your office space.
Like, am I going to exclude introverts or extroverts?
You know, can I create a...
I suspect that the people who decide
what office space looks like are more extroverted.
Oh, yeah.
but also they get their own private corner office so they don't care
well there you go so is there what is the best seating arrangement who freaking knows that's
your answer i know my ideal i'm gonna build it and then people who like my ideal will come work
there but if you build it i don't think that's universal all right question next question sort
have pretty much answered question joked about question used by jameson to expose his anti
authoritarian tendencies okay i'll read our next question so this one comes from an anonymous
listener and i think you'll know why after we do this um it's so funny actually we get so many
questions and uh it's like i i'll read i'll be one or two sentences into the question and i'll
be able to predict whether they checked the keep me anonymous box you know yep we could probably
train a machine learning model on the question text and be able to predict the toggle state of
that checkbox pretty well uh yeah we'll be off a couple months no more new episodes while we
embark on a project okay so um this is one of my favorite questions of all time when jameson and i
read it we both just were like totally perked up and we're like we definitely have to answer that
even though we don't know how to answer it don't say that oh right sorry okay here we go quote how
can i disarm someone who is emotionally attached to their code i work with a cto who wrote a large
part of our production on his own but the code is very buggy hard to test has zero documentation or
comments is very brittle and hard to understand when we bring up changing it he gets angry and
tells us that we're not focused on delivering a finished product oh man so many good things here
did you love the word disarm in this one yeah they did i would it made me have all these images and
of memories of talking to people and and tension was escalating and if i had just thought okay you
need to disarm this oh that would have been awesome well sometimes you disarm them by attacking like
liam neeson just karate chop some dude's arm like literally remove their arm then they drop the gun
they're disarmed and then they feel vulnerable and they can feel empathy again
yeah then once you've karate chopped them into submission then you can have a productive
conversation yeah then then you just open up look i don't think we're seeing eye to eye but
if i put you in some pain i think you'll see we'll see each other better
uh i've been in this situation with um co-workers but never with like my boss this this adds another
wrinkle to it oh yeah because i think it's i think it's fairly common for people to get defensive
about their code and feel ownership over this this uh this artifact they've created and then
someone someone criticizes it and they're criticizing them because they're the creator
yeah i think the meta point here is to take and we'll get back to the actual answer i think but
meta point for me is to take a lesson from this you are not your code and if someone wants to
delete your code they probably have legitimate reasons for doing it so hear them out you know
talk to them if you're ever on the other side of this thing don't get all don't get your ego all
wrapped up in it yeah i mean we've already talked about karate chops in the meta point i think we've
answered the question right completely what is what does this anonymous listener do in this
specific situation okay so i was in this situation about five years ago but a little different and i
would say the quality wasn't so bad but basically my my cto had written a bunch of code they were
in the process of porting uh the code from one language to another language and um they had just
kind of directly ported a lot of the code from the old system to the new but there it wasn't clear
how much of the old system was going to be used in the new system so there was a lot of extra code
just sitting around and it was a problem not because it was buggy or low quality it was
polluting my grep results you know like i like search for a variable name and i find 20 false
positives because it's in this dead branch of code not branch like a dead section of the code that's
not going to be used immediately and i went to my cto and i was like can i delete this code
and he was he was like no that code was developed and i'll quote here at great expense like he was
worried about losing the investment that had gone into bringing that code to life and i was like oh
man i like it's just okay can i so finally i i said well how about this i know you want to keep
that code around for reference when we eventually need it but we don't need it right now so can i
make like a backup copy of the code so i did did your cto know about version control well he did
but he also knew that once you delete something you'll you'll never go back in version control
and find it again you know what i mean it's so hard when you're like oh yeah there was a file
all we have to do is like resurrect all 5 000 previous revisions and search each one right
like you'll never find it so i was like look let me just like make a clone of our project
put it in a different git repository and then it'll be there and easy to search and then we can
um we can uh we can just delete it from our working repository and he agreed to that so
i basically came up with a compromise to where we could meet his needs and meet my needs
and little tip here we never used the code it stayed deleted
so uh what you're saying is fork your company's project yes now this case is a little harder
because it's actually production code it looks like that's in use yeah it sounds like that
and so it's never easy to propose a rewrite and it's doubly hard when the cto feels personal
ownership over the stuff you want to rewrite it sounds like zero documentation or comments
very brittle hard to understand um hard to test buggy it my my impression from reading this is
that the cto might be kind of the cowboy coder like chief developer type and and that can be
really valuable for an early stage startup where you're just trying to get as much stuff done as
possible and you sacrifice some stuff to do that um and and the company might be transitioning into
a different stage where the cto role is not right the bulk of the product it's help your team
develop the product and and the cto sounds like there's still a little bit heads down in the code
like the fact that i guess it depends on the size of your company but the fact that your cto would
know very directly as you're changing his code um sounds like they're they're pretty heads down in
the code still which is not i mean if they have enough time to be that heads down in the code
they they have enough time to to work with the team to build code the team can understand and
my impression is they're so busy that they're not really a part of the team they're in meetings all
the time and trying to do a bunch of other stuff and then they'll just like drop some code bombs
every once in a while um with which the team has to deal with and and that's that's harmful to the
team that's the opposite of what your job is as a cto i the term i would put on that is unsustainable
yeah i think again we harp on this point but no one most people in engineering management do not
know how to do it because they they get put in there because they were there early are there
good developers they've never seen good management um and and this is a thing that i could see i i
could see this as a mistake caused by lack of management experience either directly or having
been modeled to to the cto now it might be that the cto oh sorry go ahead i was just gonna say
it's pretty clear there's a right way to do this which is not hold your team hostage because
they're scared to tell you your code is hard for them to work with but you also don't have the
bandwidth to be a developer that can help the team out i don't know that's the wrong way so let me
play devil's advocate with you here so what if it's a small small team situation and if you don't
get a product out the door soon your company's going to go out of business like you're going to
run out of funding now you just put up with it and move move on then you should tell the team that
as a cto you should say i know this code is crap but we're gonna go out of business if we try to
rewrite it yeah it's it's i understand i wrote code that is hard for you for other people to
work in and that's the cost of keeping the company alive and we'll go back and fix it later but just
just the cto getting defensive and saying like you can't change my code it's the best well he
kind of said that he says in the question he gets angry and tells us that we're not focused
on delivering a finished product like is he right when he says that i don't know obviously we don't
but i would ask yourself that question really hard like is this just a knee-jerk reaction
that he's using as a straw man to deflect the true argument or is he right
yeah i mean yeah every product has code in it that is horrible that is true maybe even most of the
go yeah yeah i i guess it it comes down to what is the cost to the team and can you afford to pay
that cost and can you verbalize that cost to your cto yeah yeah well you just i was getting all
heated and you like you popped me like a balloon like maybe you're right oh there's always two
sides to this story i once had a i once heard that silly i'm gonna call it a dad phrase a dad
figure of speech um no matter how thin you slice a pancake it still has two sides that's amazing
dad wisdom i'm gonna try and use that out of context as much as possible
just means nothing people look at me weird
my dad will just appear out of nowhere and be like you've made it so good job
now you see
i i think okay you could be right that they're in a life or death situation
um i think the truth probably lies somewhere in the middle where yeah there's pressure to
get stuff done but also it's it's harmful for the engineering team and the cto is holding on a little
bit too strongly to his own code and also his role as a developer on the team yeah that i think that's
very likely so as a cto of a growing team i'm going to assume it's growing because the questionnaire
said it was a startup um you should be involved just enough technically to stay connected with
the team so you don't lose sight of what they're doing and how they're working but not so much that
you get in their way. And it's really easy to get in their way and not even realize you've gotten
in the way. And that may be what's happening here. And in which case, it's probably time to
confront your CTO and have a discussion about expectation of role. Yeah, I mean, it's it's
possible, like Dave mentioned, it's possible that your CTO is right, that you're too distracted on
code quality or by code quality and not focused enough on the product. But it's also possible
that your cto doesn't realize the damage that this is doing to the team because to them they're in
meetings all day and then they go back and see some code and they're like ah and then they like
dive in to try and fix it they get distracted and pulled off into other stuff and it's in this weird
half done state i've seen that i've done that actually a lot um me too and and it's it's when
you have so many different things pulling at you it's hard to see it can be hard to step back and
like oh this specific thing i'm doing is harming my team when you have all this other stuff you're
doing at the same time um hence the karate we've come full circle you disarm them i mean how how
would you have that conversation productively without it sounds like the cto getting defensive
is a risk how would you approach that to try and and make it less uh less less difficult
fundamentally you have a conflict here with your cto and the best way to resolve a conflict is to
reduce the amount of pressure you put on the person to perform in some kind of theatrical
mode, right?
So don't put them in a situation where they're sitting in front of the whole team and you
stand up out of nowhere and accuse them of being a code hoarder, you know, or a code
hoarder.
Instead, I would schedule some one-on-one time where you can speak privately about them.
And I found that people respond to concerns much better when you do it this way.
And try not to be hostile, try not to be aggressive.
and instead state the problem with objective facts
as much as you can.
Things like, it took me a lot longer to do X feature
because of this code.
If we could take some time to rewrite it bit by bit
over the coming X number of months,
then I think maybe we could definitely improve our velocity
and it would, in the end, be better for the customer.
Or, you know, pick some value that matters to your company.
And, you know, the one that you honestly think
as being the most impacted and follow it to a conclusion yeah that makes sense to me you gotta
you gotta de-escalate and then when the cto offers a counterpoint really listen and try to understand
and restate out loud what you understood them to say you know if the cto says look maybe they will
say we're gonna be out of business in three weeks unless we get some product out the door like
tomorrow you know then suddenly you don't care as much about their code having no comments
um or they might have some other very much legitimate reason and really listen and
understand and show them you can't just listen and understand you have to show them that you
understood for them to feel like you're playing on the on the level playing field
yeah that makes sense just go for the karate chop just go for the the karate chop
all this listening is hard work chop chop
an emphatic karate chop to end the meeting uh is it time to give an emphatic karate chop to
end this question have we answered it i think so oh nope one last thing if all of that fails
go over the ceo's head and tell the ceo that you should be the cto because your cto's code sucks
that works every time you have battled in the arena of vim and come out victorious
vimtorious yeah but then your cto could just say this code is above your understanding
and if you were a better developer you would realize its true beauty and clarity
you don't understand yeah it's anything you don't understand is a monad and then you're just
dumbfounded and defeated but at that moment you will be enlightened
all right i think we've answered the question yep good luck and please
if if you do anything about this let us know how it goes
this is a tricky situation and also one i think is is
fairly common i think so maybe not with your cto but definitely with your peers
code yeah this archetype of i mean of
working in people's code where they're defensive about it absolutely and
any code that i didn't write in the last hour is crappy right yeah yep that is true just instantly
it's it's got a half-life of an hour yeah about an hour
okay where can people go dave if they want to submit more questions go to our website
softskills.audio many many of you have done that there are some fantastic questions in our backlog
you can also go there
to check out past episodes and you can
comment on them we have a nice discuss
comment system so you can go and
write stuff if you want to add things
many of you have done that it's been really fun
to go past to go review
past episodes and read what people have written
to fill in the gaps that we left behind
super cool so thanks for that
yeah thank you so much
as always we would love it if you shared
this show we really love
doing it and
And we want to help answer more questions from people.
We like being exposed to all the variety of concerns and problems that exist.
Lots of these are interesting to think about, even if they might kind of suck to suffer through.
Yeah.
Your loss is our gain.
Yeah.
We're like vampires, I guess, in that way.
Preying on your emotional distress.
So continue to feed us so we grow ever more powerful.
um and do that by tweeting about the show
oh boy that got a little lost tweet about the show share with your friends uh do anything you
can to to share it if you enjoy it if you see someone's phone sitting open on their desk and
unlocked just go open the podcast app and subscribe before you tweet hashtag poopin
that's the traditional thing you do first but subscribe to the show first okay
all right i think we're done catch you next week bye everyone
