Soft Skills Engineering - Episode 235: Bus factors and toxic time bomb

Episode Date: November 9, 2020

In this episode, Dave and Jamison answer these questions: Questions I work as an IC in a team which owns 3 very different and large parts of the system. Our team is 4 experienced engineers a...nd 1 intern. Historically each person was assigned to a single part and, as you might expect, we have a bus factor problem. With this layout we’re making as much progress as possible and it helps us to compete on the market but creates a dangerous situation if someone would decide to leave (spoiler: I will). What would you do if you were IC, team lead or a manager in such a team? We’re already exceeding headcount so it’s not an option. I am a developer with 1.5 years of experience, and was put on a greenfield project to rapidly develop a new application. We have a contractor that came onboard to help with the process. On the very first day of meeting this person I noticed their propensity to not allow anyone else to talk and interrupt. Fast forward several months and this person has really become a micromanager, they’re requesting the source files from our UI contractor, they got another person kicked off the project because they didn’t like the changes they were making interfering in their development process, they have constantly hoarded all the real dev work and work frequently until 9pm. I have voiced my concerns to the PM, mainly about the bus-factor, since layoffs are likely coming and this person likely won’t be converted. At this point I am just tuning out on this project. I do the scrap issues the contractor basically doesn’t want, but I am seeking learning opportunities elsewhere within the company and have nearly zero interest in the project which I see as a ticking time bomb. What would you recommend? I could potentially escalate the issue to the manager of our team but I basically see working with this individual as toxic and the PM as autopiloting to the finish line. Show Notes https://www.computerworld.com/article/2534312/the–640k–quote-won-t-go-away—-but-did-gates-really-say-it-.html - apparently the bill gates quote is apocryphal

Transcript
Discussion (0)
Starting point is 00:00:00 it takes more than 640k of ram to be a great software engineer this is episode 235 of the soft skills engineering podcast i'm your host jameson dance i'm your host dave smith soft skills engineering is a weekly advice show where we answer the non-technical questions about the technical field of software development have you heard this quote before dave yeah 640k ought to be enough for anyone yeah apparently it's apocryphal it's attributed to bill gates as a way to like dunk on him as what a loser he was wrong but i guess he didn't say it sorry bill that is so the internet you know what i mean like the internet exists just to like debunk things and basically spoil everyone's fun dunks and blocked dunks if we could harness that energy but they're
Starting point is 00:00:50 they're always retroactive blocks though it's like 20 years later oh by the way you never he never said that yeah that's true it's like retractions yeah you know who said that albert einstein i love those abraham lincoln quotes on the internet yeah about the internet all right do you want to thank our patrons dave yes i do thank you to those folks that are contributing at the amount where they get a shout out each week they are oladapo fadi yik yarns fainton alexander microconfig.io nick hathaway travis sanders dennis bogdan of braden kane steven armand lee john grant vinlock the agile ventures charity nick canter and philip if you would like to join this illustrious crew go to softskills.audio and click support us on
Starting point is 00:01:29 patreon if you do that for a large amount we'll say your name every week if you do that for any amount greater than zero we will send you an invitation to our slack community where you can join a bunch of fun hilarious insightful and smart people and pretty darn nice people and chat about all things software and not software the whole gamut all things all things no qualifications we uh heard from our listeners about coping with distance during the pandemic we asked about this a couple episodes ago and here are some replies this is from someone named brandon our team did a zoom escape room and it was hilarious we hired a company that offered escape room style situations through zoom the one we did was stranger things styled with our team
Starting point is 00:02:07 solving puzzles via screen share and each of us finding clues through our browsers on the internet we actually had a lot of fun okay that sounds really fun like if you had told me just online escape room i would have said lame but if there's like clues hidden on various websites on the internet that's cool it almost sounds like a like a capture the flag type of thing or an advent of code type of thing yeah which would also be very cool this is another message we got from courtney ross my team has a weekly d distancing 30 minute chat that can be about anything sometimes we talk through the tough bugs we are working on or news or podcasts also we are going to have a virtual cooking class so we can do it together while safely in our homes. I love that. I love the
Starting point is 00:02:45 term de-distancing. That needs to be a new thing. Yeah, closing. I could use some de-distancing. I could use some closing. Yeah, I like that idea. I've seen that start to become a little bit more common with my company as they've remained remote after going remote for a little while, and they're sort of starting to talk more about how, not just about how hard it is vaguely in general terms but the negative effects of missing social interaction and and like explicitly scheduling things to work around it so that's kind of nice to see that that's spreading around yeah okay we got one more message from someone named tarje skarset okay i actually they're not named that i can guarantee that's not their name but that's how i pronounced it sorry
Starting point is 00:03:25 maybe not super clever but it really works my team sits on discord all day when we have different rooms and everyone can see who is sitting together at any given time We usually pair using VS Code's Live Share or just sharing our screens. I could imagine pair programming would be a good way, a good thing to do in this environment. And that's probably the first time I've ever said that. I have enjoyed pairing a lot more since becoming a remote worker than before. Yeah, interesting. I think it's easier to introvert while still pair programming.
Starting point is 00:03:57 Like I can not smell them if I want to. I can contribute technically, but not be exposed completely to the frightening energy of another human. It only comes from proximity. Exactly. Yeah, it's psychic energy through the ether. Anyways, on to our questions. You want to read our first one, Dave?
Starting point is 00:04:22 Sure. This comes from an anonymous listener who says, I work as an IC, that's individual contributor, in a team which owns three very different and large parts of the system our team is four experienced engineers and one intern historically each person was assigned to a single part and as you might expect we have a bus factor problem with this layout we're making as much progress as possible and it helps us to compete on the market but creates a dangerous situation if someone would decide to leave spoiler i will what would you do if you were ic team lead or a manager in such a team we're already exceeding headcount so that's not an option so bus factor problem but
Starting point is 00:05:04 according to my advanced simulations if you have five people on the team and three major projects you have a bus factor of 1.6666666 oh great which is higher than one so you're doing fine and according to my even more advanced calculations if one person leaves then it'll be down to one point three three three three three three three which is still higher than still good you have 30 redundancy baked in easy peasy i guess if you only count interns as if they count as zero people then you only have a bus factor of one once you leave but yeah that's that's a problem that's cruel if you count them not as humans do you want to explain what a bus factor is because you just did some really advanced mathematics and i'm not sure everyone followed yeah okay that's a good
Starting point is 00:05:48 point the the metaphor of the bus factor is how in trouble are we if someone how many people need to get hit by a bus for this project to be in trouble right it's kind of morbid when you think about it i guess but if you have a bunch of knowledge like just all enclosed in one person's brain and that person is incapacitated either by bus or more likely by quitting or being fired or i don't know switching projects or something then how much damage is that going to cause i just have this image of like a venture capital firm investing in a bus company so they can just drive it around and hit their competitors engineer that sounds a lot like organized crimes business model where they just murder people so they have fewer competitors right
Starting point is 00:06:33 there's some like tired joke about yeah what do you think bunch of venture capitalists organized optimized crime but right i'll leave that up to you all to oh man so so this team's operating pretty lean yeah or efficient oh heavily optimized the flip side of the coin yeah i was telling dave two stories that didn't make any sense so i'll skip to the point of those two stories which is that the more optimized something is the more fragile it is like you can have this highly tuned team where you have exactly the right number of people and everyone's stretched thin but just knows just enough to get stuff done and that's fine and and probably saves budget from headcount if if you're not i don't know
Starting point is 00:07:25 wasting people by having extra people that that aren't contributing as much as the dollar amount that it costs to add them but as soon as something disrupts that then you're going to pay a pretty big cost in the delicate machine being thrown out of whack well if it was less efficient you could theoretically you would be spending more money over the long term but you'd absorb these changes more easily right and i was just thinking like okay if you throw the delicate machine out of whack by losing someone now the question becomes do the costs that result from that exceed one more head count or whatever number of head yeah i would need and these are unknowable no one will ever know the answer to this. Like impossible, impossible to tell. But I will say that people
Starting point is 00:08:07 that work on teams generally feel like they have too much work and people that allocate resources or people to teams generally feel like they don't have more money to just give all the teams to hire more people. Or more specifically, they feel like asking, how can you do the same thing with fewer people? Exactly. Yeah. Like those incentives are, it's pretty consistent that people on the ground feel like we don't have enough people people deciding how many people to add feel like i don't have enough stock options so we're at an impasse here and good thing i make the decisions can you imagine if this was a democracy or something goodness me that would be very hard for me
Starting point is 00:08:46 oh i got a little sweaty all right good thing my tesla has air-cooled seats they don't by the way Oh, okay. Well, now I feel better about not owning one. Yeah. So I was just thinking, like, what happens to an airplane with zero redundancy? You know, the more I learn about airplanes, which is still very little, the more I realize, like, so many of the systems, there are two or three of them, you know, copies. And I'm like, surely this makes the airplane heavy, which means the airplane uses more fuel and costs more to build, but they don't crash very much. And it all depends on what dollar amount you assign to the value of human life, Dave. That's right. Easy.
Starting point is 00:09:30 The answer is we waste a lot of money. Yes, we do. Yeah, that's a good point. There are industries that are very good at making that trade-off of extra cost versus risk that it avoids. And software is just such a fuzzy field that I feel like most teams are not operating at that level of analysis. and I mean it costs a lot of money too it takes an enormous amount of time and money to study your designs and test them and simulate things and that gets in the way of your two-week sprint so it's it's tough to pull off in a lot of software environments yeah and not not to mention the soft most software teams don't need to be as safe as say an airplane yeah if my if my modal
Starting point is 00:10:11 background does not dismiss 150 people do not plummet to their death to a fiery death yeah imagine the pilot touching an ipad in the front of the plane oh no uh-oh another modal won't an update now oh no how will we land hey uh folks this is your pilot we're waiting for an ios update this is kind of a form of debt i think we talk about technical debt where teams have taken on bad practices or bugs or issues that they knew they were going to have to address eventually, but not now. And this is kind of like that. I think you're kind of running on borrowed time. And the risk when you take on technical debt, the risk is that the creditor will come calling
Starting point is 00:10:59 before you're ready. And in this case, it's kind of the same thing. The creditor can come calling and the creditor here kind of looks like a bus or a resignation letter or a job offer that you can't match because you're running so lean yeah you already converted all that money into bonus for your executives it's gone i mean teams like this are kind of defying gravity or defying reality right it's like they're kind of just seeing how long they can do this and get away with it but like you said it's really hard to know that you're doing this because there's not a number or like a thermometer sitting on the wall that says uh-oh danger zone you know yeah so it's hard to know but but they are they're defying gravity and and there's like this real cost to operate and build
Starting point is 00:11:39 the software and there are companies like in this case that are trying to run that at a lower cost yeah almost like they're being incentivized to to cut cost there's a a sneaky non-helpful answer which i will give you're welcome which is you could try and simplify the system so you have these three different and large parts of the system and this will probably take more work so if you're already running lean like you got to figure out a way to do this while keeping these up and running but right you could try to increase the leverage of those people so that i don't know maybe you combine some systems or you make them easier to operate or easier to understand or make changes to or something like something to make your team scale their efforts more to scale their
Starting point is 00:12:25 efforts more like hey be smarter and go faster all right yeah good talk you tried just being better at your job no but i mean there's presumably some amount of maintenance that goes into these three systems if you can make that smaller then you have more time to do other things or or more time to do stuff that you can't get to right now because you're just stuck maintaining them there's maybe some incidents that happen maybe you can reduce the rate of those i mean there's stuff you can do to simplify systems it's just yeah do you have the the resources to do that do you have enough time to do that so simplifying the system you're saying is a means to an end and the end is that you can spend more time understanding the neighboring
Starting point is 00:13:03 system that you don't currently know anything about? I think so. Yeah. Like, man, I can't think of a way to do this without just butchering the bus factor metaphor. All buses are not created equal. All, that's not it. Cause the bus is the thing where you leave the project. You don't need a whole person for every project. If the project is kind of self-sustaining, well-designed enough for it. Yeah. Yeah. Or easy enough to operate, then you might still be spread thin, but not as thin, I guess. It doesn't take as much of you on, on each project. That's a good point. And then There are also practices that you can do to mitigate the risk of the bus factor, which I'll just name one very basic one that I kind of thought was becoming a de facto standard, but that's code reviews. So if there's individual engineers who own certain parts of the system, they should still have to get their code changes signed off by neighboring engineers.
Starting point is 00:13:48 We don't have time. The bus is coming. We don't have time to do code reviews. Yeah, that's the danger with just do more things to dig yourself out of this hole is that often you only realize you're in this state when you're so overwhelmed that you can't keep up with just keeping things running. And to say, well, add all these practices or take this big refactoring project on or redesign project on in addition to all you're doing is hard to juggle. Absolutely. In fact, every idea I'm having, like, for example, design reviews with each other where you review each other's design, maybe architecture discussions to just deep dive into each other's architecture. every every idea i'm having is just going to take you away from the day-to-day work which you're saying yeah it all costs time yeah it's basically not an option but i'm saying you can either take that time now and slowly meter it out under non-pressure circumstances or you can wait for
Starting point is 00:14:38 the bus and then you're going to have to figure it out anyway very fast sometimes you get hit by the bus sometimes you get on the bus that's right yes so i mean the question is what would you do if you were an IC team leader manager for such a team? And to me, the answer is, there's not like one thing where you do it and then you go, all done, it's fixed. Instead, you have to bake systems into your day-to-day work so that knowledge sharing happens automatically.
Starting point is 00:15:05 And the way you do that, if you can't afford to actually have multiple people working on one system at the same time, then the way you do that is through peer reviews of designs, architecture, and code review. And I just really can't think of another way to do that other than spending your nights and weekends reading your peers code for fun.
Starting point is 00:15:20 I mean, you could think about maybe like relaxing your SLAs. So, no, I'm serious. Like, if you don't have time to maintain the same level of operations or feature development or something and also fix the problem, then you will never fix it. So, at some point, you have to say, well, just stop doing this other thing that seems really important but is less important than the future of these projects. and it'll cause this cost, but good thing we can exactly estimate the cost and benefit trade-off. Yeah, I mean, because our estimates are so good,
Starting point is 00:15:58 you can just write down an estimate of zero cost. That's true. And then tell the business, look, I'm going to give you something for nothing. And they'll be like, great, I love it. And in turn, we will give you something. I mean, yeah, have we answered the question? I think so.
Starting point is 00:16:12 I think there's one more aspect of it, which is how do you convince your team to buy into this idea when they're already super frazzled and barely able to keep up with the work. And I think you kind of subtly have to tell the team, look, we can't afford to run at this pace because we're running in a very high-risk scenario. But then you have to tell the business some way of quantifying that risk
Starting point is 00:16:30 in a language that they understand, which is usually dollars or delays. Dollars and delays speak very loudly. And if you say something like, hey, remember that customer we wanted to sign up and we were able to crank out the code in two months? Well, we can't afford to operate that way anymore because if this bus factor happens, we're going to go two months without being able to deliver anything.
Starting point is 00:16:49 And do you want to say that to your next potential client? I think the convincing the team part, I bet the team feels it, right? Like it's pretty common to feel overwhelmed and like you can't keep up and you wish stuff was better or easier or you knew more.
Starting point is 00:17:00 And so I think if you told the team, hey, we're going to invest more in making life less hectic and making these things easier to own, I think they'd be on your side with that. It's the business part that's trickier. that's an age-old problem of how do you sell like kind of engineering improvements to business exactly hey you know what i want i want you to pay me the same and i'm going to give you less
Starting point is 00:17:23 deal but i pinky promise that later on you will get more yeah or rather later on you will not have gotten even less i will prevent bad things i mean disaster avoidance is always harder to sell than disaster recovery exactly and that's where you are you got to stage a disaster that you narrowly avoid by right by doing this oh a false flag how about resigning but it's a fake resignation psych you're welcome that was me helping you boy wasn't that scary we should probably make some changes to our engineering practices they're like yeah starting with you all right now i think we've answered it shall we uh move on to our next question Yeah, I'll read the next one. This is from an anonymous listener. I'm a developer with one and a half years of experience and was put on a greenfield project to rapidly develop a new application. We have a contractor that came on board to help with the process. On the very first day of meeting this person, I noticed their propensity to not allow anyone else to talk and to interrupt. Fast forward several months and this person has really become a micromanager.
Starting point is 00:18:34 they're requesting the source files from our ui contractor they got another person kicked off the project because they didn't like the changes they were making interfering in their development process they have constantly hoarded all the real dev work and work frequently until 9 p.m i voiced my concerns to the pm mainly about the bus factor since laughs are likely coming and this person likely won't be converted i assume from contractor to full-time at this point i am just tuning out on the project i do the scrap issues the contractor basically doesn't want but I am seeking learning opportunities elsewhere within the company and have nearly zero interest in the project, which I see as a ticking time bomb. What would you recommend? I could potentially
Starting point is 00:19:11 escalate the issue to the manager of our team, but I basically see working with this individual as toxic and the PM as autopiloting to the finish line. Ooh, another bus mention. That's a transportation metaphor. We have autopilot too. Autopilot, we got airplanes and buses. that's a feature autopilot some people pay lots of money for that yeah getting it for free yeah thanks to this the contributions of your toxic contractor huh this is a hard one i think that the one point in here that makes it really complicated is the fact that this contractor is working crazy insane hours it's one thing if you have a team member who's you know working short hours delivering crap and not getting things done it's a totally different thing when you have
Starting point is 00:19:59 a contractor who's highly effective and works tons of hours because management likes one of these people you know yeah and if you're like well i want to try to get this person removed from the team so we can all work better that's a little harder to do it could also be it might not even be that they work lots of hours maybe they just work a shifted schedule oh it could be where they start work later and then they work later and that's fine if you're collaborating well but if you're not collaborating well then and it sounds like the contractor has more experience overall than this person with only one one and a half years of experience yeah so i can see that being tough if they just kind of forge ahead on their own and you don't really know what their plan is
Starting point is 00:20:36 and you can't kind of predict and work around their weird schedule and they're hard to communicate with in general that would be tough do you think this bus factor mention was a thinly veiled threat against the contractor's life sorry they took up your startup idea yeah hey can i borrow your bus for a minute thanks demonstrating the bus factor as a service as a platform oh man so in the question the the listener calls this person a micromanager right did i read that right yeah i don't really see the behaviors here as micromanagement necessarily yeah maybe that part's not described i can kind of see it where they they don't let anyone else talk they kind of dominate the direction and design they sort of like hoard
Starting point is 00:21:27 the issues and dole out specific ones i can see that coming across as micromanaging because if you try to do something bigger they might jump in and say well you have to do it this exact way that i would do it i don't know it feels a little connected but they're not your manager but if they're more experienced than you then you can still be micromanaged it turns out yeah yeah for sure we should make a word for someone who's not your manager but they micromanage you anyway micro bug micro annoy you micro irritant yeah what do you think is the worst case scenario here if you just kind of finish the project i mean you get sad that's a possibility yeah if layoffs are coming then it's
Starting point is 00:22:09 possible that the project will not go very well and you might be impacted while we're talking worst case that's a really good point like if layoffs come and your portfolio so to speak is just full of these kind of crappy little jobs side tasks that are unimportant that might put a bullseye on your back yeah that feels like the biggest risk yeah i agree i was thinking like before the layoff comment i was thinking well just kind of tough it out it's a contract yeah be done soon but and one of the benefits of a contractor is usually they're pretty transactional by definition you can just say hey your contract has ended or i mean sometimes they have fixed dates but often there's a possibility of changing it or something like that right it's much easier
Starting point is 00:22:50 to end a work relationship with a contractor than with a full-time employee yeah and and like he like the question asker said that that's probably going to happen here yeah and so maybe i don't know but the question is will you also get removed yeah i'm seeking learning opportunities elsewhere in the company and have nearly zero interest in the project which i see as a ticking time bomb so it sounds like they're already doing some work to kind of expand their network and show value elsewhere which makes sense to me and feels like a reasonable thing to do yeah that's quite an issue to the manager of our team yeah i think you should do that good idea you should tell your manager I was assuming the PM was the manager, but maybe that's someone else.
Starting point is 00:23:33 I think it's someone else. So you voiced the concerns to the PM, but that was maybe the wrong person to have the conversation with. Yeah. There is a reason that your PM is not super concerned by what you've raised. And it would be good to get that context from them and say, okay, I've raised some concerns. They don't seem to be concerns to you.
Starting point is 00:23:49 Can you explain why? And a lot of times people can. So I'll tell you, there may be some factors here going on that are outside of your understanding or your knowledge, just because it's outside the lens that you see the world through right now. And I'll tell you that a lot of times as a leader, people will come to you with concerns, but you can see the bigger picture and the concerns they have are actually not real concerns. And I think one of the things that you have to do to develop good judgment is understanding when your concerns, which feel very real, are actually not real concerns. They aren't as intense as your
Starting point is 00:24:23 feelings would would indicate that happens you know and i had once had a manager say that to me and i think i had maybe it was because i just finished a gripe session with him but he told me you know dave sometimes i feel really concerned about something and then i let some time go by and i realized it wasn't actually that much to be concerned about and i'm like yeah and then you know like four days later i'm like ah he was talking about me got it weird i don't know what has to do with what i just told you but uh yeah whatever i guess i'll file that away so wait a minute and and this is this is a very tricky thing for me to say because sometimes you have concerns and they are very real and everyone around you is trying to convince you that they're
Starting point is 00:25:07 not real yeah so that's also hard and that's all part of developing good judgment is experiencing enough of these situations to say which ones are real which ones are fake yeah so i could see the PM not being concerned if they feel like sure sucks for your job but the project seems to be moving okay you know like things are getting done and it broadly seems like it's gonna deliver what it needs to on time so maybe they're right or maybe they don't see the the cost of the contractor's technical decisions or information hoarding or something like that but yeah hopefully they're looking at it's not shocking to me that the PM is not thinking about like what it's like to work with a contractor because that's not really their job. It'd be cool if they cared
Starting point is 00:25:50 about that because that'd just be a nice human thing to do, but that's sort of your manager's job. And the PM is more about, is the project getting done? That's a very good point. It's kind of not their job. Also, I would say, the listener mentions 1.5 years of experience. I'm going to assume that was all in this one company. And I'll say at 1.5 years, life's too short to live in an environment like this. And there should be plenty of other opportunities for you. and i would look into those and we haven't said this in a while but this might be a good place to say quit your job to walk away like a cool person from the explosion slow-mo walk yeah okay i like it all right have we answered the question i think so good luck sounds painful i'm sorry
Starting point is 00:26:31 quit your job slow motion explosions don't hurt though that's i've verified that by watching a lot of movies they just don't they don't get you so you should be okay sometimes they might make your hair kind of flop around a little but that's it yeah okay what can people do if they want their own questions answered go to soft skills.audio and click ask a question where you can fill out our form thank you so much to everyone who has done that we really appreciate it you keep the show going and if you want to support the show financially go to that same website and click support us on patreon you can make a one dollar donation a million dollar donation either way you're going to get access to our slack community and we would love to see you there all right we'll
Starting point is 00:27:05 catch you next week

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.