Soft Skills Engineering - Episode 109: Critical Junior Dev and Introducing New Tools

Episode Date: May 29, 2018

In this episode, Dave and Jamison answer these questions: I run a small dev team. One junior developer constantly openly challenges things that don’t meet this their preference. As a manager I d...on’t want to stifle innovation, but need to find a balance on being able to meet business goals on schedule. I want to add an automatic formatting tool to our code, but my co-worker is resistant to the idea. He started this project and I’m brand new to it. I don’t want to push it too much, but I would really love to use it. I’ve shared with him all the reasons that it would be good, and addressed most of his concerns. I’ve also submitted a PR to show him what it would look like. Also, he is in another timezone 9 hours away, so communication is all on GitHub, Slack, and the occasional video call (if I wake up early). He finally said if it really helps me, then I can go for it, but I don’t think he would like it if I did. Should I go for it? Try to convince him more? Or just drop it?

Transcript
Discussion (0)
Starting point is 00:00:00 It takes more than great refactoring skills to be a great software engineer. This is episode 109 of the Soft Skills Engineering podcast. I'm your host, Jameson Dance. I'm your host, Dave Smith. Soft Skills Engineering is a podcast where we answer all of your non-technical questions about the technical field of software development. Sometimes we make jokes about what it's not about, and today we did not because I couldn't think of one.
Starting point is 00:00:22 So you're welcome, depending on how much you dislike my jokes. we've got some patrons to thank yes we'd like to thank nick cantar dimitro and neonilla david jackson chris fitkin ken howard sean clayton and dustin coats all these wonderful people are contributing to our patreon at the level where we thank them every single week thank you so much for your contributions if you'd like to contribute go to patreon.com soft skills eng your money goes to pay for hosting costs editing costs and to jameson's general well-being i have expensive tastes in thermostats i don't i don't know all right well would you like to read our first question i would love to dave this is from an anonymous listener uh and it goes a little
Starting point is 00:01:11 something like this thanks for the awesome operatically thanks for the awesome podcast your topics have been timely and well argued and i can't thank you enough for your insights I run a small dev team. One junior developer constantly, openly challenges things that don't meet their preference. As a manager, I don't want to stifle innovation, but need to find a balance on being able to meet business goals on schedule. Some examples are, they routinely call our current process stupid and make snarky comments about leadership, myself included, and up the chain. While I often agree we have limited resources and have to keep the business running, we can't always afford big changes to our source control, adopting new frameworks and major infrastructure
Starting point is 00:01:52 changes. Very often, this developer isn't privy to the information that has gone into the system we currently work in i've tried to empower the team but this particular dev is taking that concept way too far way too far and becoming disruptive really wondering what your thoughts are on these cowboy types any suggestions on how to rein them in a bit without dropping a hammer or being autocratic would be really helpful is it possible to have it both ways empowered and under control cowboys yeehaw i grew up in cowboys love our new frameworks new cattle rustling frameworks yeah what if we let's see how would you have a new cattle rustling framework maybe you made a pyramid out of cows and so only the bottom cows would run there is a python web
Starting point is 00:02:37 framework called pyramid if i recall correctly okay so that's already been done uh shoot well i can do it again i mean it's a framework pyramid to reinvent stuff um all right junior developer who clearly is strongly opinionated missing some context and also doesn't have a filter this is a trope i've heard a lot and i found it true in my own experience of um the the earlier i was in my career the stronger my opinions were in general and the more experience i have the more relaxed my opinions have become in general there are some things i have stronger opinions about but overall i am way less opinionated than i was at the beginning of my career yeah me too especially when it comes to technology choice or tool choice i've really i've really set those
Starting point is 00:03:24 opinions aside but the other thing that has attenuated in my career is how vocal i am especially in like a team setting where everyone is there i would never call something well okay hold on literally as i was saying i would never call something stupid in a team setting i was just having like my life flashed before my eyes thinking of all the times i've in recent memory called something stupid but you did it with a twinkle in your eye yeah and a smile on your face okay and gladness in your heart those that that smile and twinkle excuses all kinds of evils it does yeah you could get away with a lot with a twinkle in your eye maybe that's the coaching this developer needs just smile a little bit more when you call stuff stupid when you're
Starting point is 00:04:15 Then you might look like a serial killer. I really think your ideas are just the worst. Ding. Try not to be alone in a cubicle with me. I think you have too much blood inside. It's stupid to have all this extra blood. Let's get that out. That went morbid really fast.
Starting point is 00:04:50 Hey, it's not me. It's the serial killer. It's their fault. Yeah, clearly this wasn't your ridiculously disgusting idea. Yeah. Yeah. So this is clearly, I agree that this is a problem. It's a problem because a lot of reasons.
Starting point is 00:05:10 One reason is it might make people flip the bozo bit on this person. Have you heard of that term? have we discussed that in the podcast i don't think we i don't think we have and i don't think i've heard it but it instantly i instantly got what you're talking about i think oh explain okay i'll try and explain it the bozo bit is basically just it just means is this person credible or not and when when when you flip the bozo bit it means you just think okay they've like ranted enough times and said enough dumb things that i just know the stuff they say is not correct or worth listening to and the risk is that you do that prematurely and then you discard valuable input
Starting point is 00:05:45 from someone that you've just written off basically and as a defense mechanism the team might write this person off right if they hear their the way they do stuff is stupid enough times they might just think well they just hate everything we do and they don't express it constructively and so we just don't have to listen to them anymore because it hurts to listen to them yeah not only is it not constructive but it actually hurts a little yeah but also the the flip side is new people have a superpower of fresh perspective we've talked about this before i think julia evans probably is this i remember her saying something about this when you join a new company you have this superpower of not being used to the way things work and so a lot of people get used to
Starting point is 00:06:28 the way things work and then um don't recognize how much pain they're causing so you just assume I'll have to make five tickets through three different departments to get this thing done instead of have an API for it or whatever the specific example is. And when you're new to a company, you don't have that scar tissue built up. You don't have the calluses, the organizational calluses, I guess. So that's a valuable input. But if the way they express that input is this is all stupid, it's hard input to take. Yes. That's a very good way to describe it, I think. Why, thank you. So if I were this person's manager,
Starting point is 00:07:06 I would sit down with them and provide a little bit of coaching. And I think the coaching I would provide is I would say, your opinions are great. Your passion is great. But the way that you're expressing it is a lossy medium. When you say something is stupid,
Starting point is 00:07:22 that is actually not accurate and not specific enough to fix. Instead, if you can quantify what made you conclude that this is stupid in such a way that someone else can also conclude that it's stupid then we can maybe make traction on a fix so in other words instead of saying our source control which we're using subversion is stupid you could say if we switch to mercurial we would get all these advantages and we would set we would leave behind all these different problems that we have with subversion right by the way i
Starting point is 00:07:53 chose two mostly out of favor revision control systems to avoid saying the obvious let's just use github yeah but anyway now i'm gonna get a bunch of hate mail about from mercurial fans i think my i haven't used it very much but i i feel like i've heard mercurial is pretty great it's just not used as much as kit yeah anyway this person need this person is like a raging wildfire they certainly produce a lot of heat and that's great but they also destroy everything in its path we need to turn this person into a laser that can apply precision heat precision focus right on something that matters and actually get it done instead of just torching everything and i think if you do that with a little coaching session you could probably redirect this energy to something
Starting point is 00:08:38 constructive yeah there's a hierarchy here right and saying this is stupid is the lowest level of discourse about solving technical problems and the next level is this is stupid if we did this thing it would solve these problems and then the level above that is this is stupid if we change to this thing it'll solve these problems here is the cost of changing to this thing and the plan for doing it and so that lets you evaluate can we actually do it because if you just say in a vacuum right like subversion is better than files on a floppy disk that we hand back to each other that's probably true but there's all these processes and and experience built around the existing tooling and and way that they work and just you can't just snap your fingers and switch to it there's a cost
Starting point is 00:09:19 so if if you just come in and say this is stupid without the context that's that's another thing that could get you written off right is like yeah it's stupid but we have 80 million lines of cobalt so we can't we we can't just switch to write it all in rust like that's not that's not a possibility given the resources we have yeah um so i think you're right that this developer needs some coaching and maybe coaching them on looking to understand the context more and looking to figure out the costs and and the trade-offs is helpful you could also sell it as a benefit for them right If they, if they hate this thing so much and they want it changed, they're probably less likely to get it changed if they just kind of stamp their foot and are grumpy about it, especially as a new person on the team, they don't have a built up reputation with the team of getting stuff done and credibility. So just coming in from the outside and saying, this is stupid and, and, and knocking stuff down, that's unlikely to get people onto your side.
Starting point is 00:10:16 So it's not going to help them. if you say yeah you could catch it as if you actually want to fix this you need to persuade instead of just complain and that will help solve the problem if the problem you're trying to solve is like you don't complain enough then sure saying this is stupid will help solve that problem but it won't really it's not the most effective way to change things yeah yeah totally agree i i i kind of equate this person's actions to backseat driver actions you know this is the person that sits in the back of the car and calls out mistakes that the driver is making but but really they only call out the mistakes that they see and they certainly don't see everything that the driver sees and
Starting point is 00:10:56 most importantly they do not feel the pressure of delivering the vehicle and its occupant safely to its destination that the driver feels and i think a little bit of extra responsibility might actually help this person to to better formulate their thoughts in a way that takes into account all the constraints on the decisions that are being made and not just the inner fire that burns in their heart because they want to use this new framework so badly. If they understood like the business constraints or the people constraints, kind of like what you were just describing, Jameson, that there are zero, there are non-zero costs with changing a business or an organization, but also understanding that in the past there were constraints that
Starting point is 00:11:37 went into these things. And you can't expect this person to just know what those constraints were without telling them. And so I think that it might make sense to you for you as a manager to have some kind of documentation describing, here's where we are, here's why we have what we have. And these are the constraints that informed these decisions, such that if you want to change the way we do things in one of these areas, make sure that it also meets these constraints, and is respectful to the history that brought us here and make it to you know, to make sure that you don't actually like throw a baby out with the bathwater yeah that's a cool idea i've heard of places that
Starting point is 00:12:14 have rsc processes for making technical decisions and as part of that you create kind of a spec and a design document and describe the trade-offs and describe the reasoning and then once you once those get accepted they're kind of that record that you mentioned of here's why this decision was made here's what was going on at the time maybe they had three developers in two months to do it and that affected their approach and so if you hand this person the 80 million lines of cobalt and say it's great that you want to change this you've got three quarters and two people and here's your here's your shot yep should be fine right yeah that sounds like a really bad idea after i say because 80 million lines of cobalt is probably a very important project but the the principle of
Starting point is 00:13:00 like trying to help them understand the constraints i think is valuable and and maybe they'll only understand it if you put give them the opportunity to fix stuff by the way just to give you a little bit of hope or maybe to fill you with dread this person you're describing was me not really not that long ago frankly uh i've i've often been very passionate and heated in the way i describe problems and i've not often had the greatest tact and diplomacy when when sharing my opinions of others, including my own manager in front of others. And I have been called out for this behavior in the past for basically undermining my manager. And he very subtly gave me this feedback one time a few years ago and said, you know, Dave, and he basically told me a story about his past
Starting point is 00:13:49 where he had done this to his manager and how it came to his attention. And it took a couple of days for me to realize that that was not just a fun story from his past. He was telling me that he was telling me because yes indeed it was me so you might have to go a little bit past subtle with this person because clearly subtlety is not their strong suit but don't be afraid to do it and if this person clearly has talent and passion let's not let's not put that to waste i would recommend coaching that let's focus this thing yeah i think if you if you really want to help them improve this has to change and so that makes it easier to have a conversation about why the approach they're taking isn't working.
Starting point is 00:14:28 Yep, really for their benefit. It's not just for the team. Yeah, exactly. It's not you calling them out on their bad behavior. It's you saying, hey, to be more effective, you need to do these things. Absolutely. All right, have we answered the question?
Starting point is 00:14:44 I think so, I think so. And I would love to hear how this goes. So if you have this conversation or choose to coach them in some way, we would love to hear back about how that went. Yeah, please let us know. all right dave do you want to read our next question sure this comes from a listener named adam and adam writes i want to add an automatic formatting tool to our code but my co-worker is
Starting point is 00:15:03 resistant to the idea he started the project and i'm brand new to it i don't want to push it too much but i would really love to use it i've shared with him all the reasons that it could be good and addressed most of his concerns i've also submitted a pull request to show him what it would look like also he is in another time zone nine hours away so communication is all on github slack and the occasional video call if i wake up early he finally said if it really helps me then i can go for it but i don't think we i don't think he would like it if i did should i go for it try to convince him more or just drop it i like this question because it's kind of in some ways the inverse of the last question the last question was a new team member coming in trying to say
Starting point is 00:15:42 all the existing things were dumb and needed to change and this is a new team member coming in and trying to change something and the specifics of i don't know maybe adam's leaving out the part where he calls the existing formatting stupid that part sounds different but it's still kind of related yeah it is um although i'd say in this case adam has taken a very healthy track because he has talked about the idea he's extolled its virtues he's prepared a pull request to show the rest of the team what it would look like he's being very diplomatic and cautious and he's not forcing it on anyone maybe even to a fault what do you think yeah this is it's just so fascinating the interaction because the thing that they're working on is code and it runs on computers and
Starting point is 00:16:24 it's very objective and it's a sequence of instructions that get executed but the act of writing code on a team is a very social thing it's very fuzzy how you interact with other people and this is one of those fuzzy boundaries where it seems like they they don't really want you to do it and you might have kind of worn them down by being persistent and helpful and friendly and and showing all the benefits and from the brief description of the question it sounds like they're still not convinced but they are ready to give up and so the question is i thought you were gonna say ready to give it a try nope oh no it's i read it as they're like oh they're just gonna keep bugging me if i don't say yes so yep whatever if you want if you think it's a good idea go for
Starting point is 00:17:11 it and then you hear them going like this and if you can't tell that is the sound of me washing my hands so there's there's this very social human fuzzy interaction happening and the one of the things you could do is just say well they said yes in the pull request merge too late you could try and convince them more you could drop it i am all in favor personally of automatic code formatting tools so i think this specific thing i personally would be in favor of i actually did this to my team, but they were much easier to sell on it. So it wasn't that big of a deal to convince them. What you're really talking about is code ownership, right? Who owns the code? Who has the ability to impose new standards on the code? And Adam is a new team member, a new person
Starting point is 00:18:03 on this team. This other person wrote the project. And so I think a lot of the friction might be coming from the team member feeling like they own the code and Adam coming in and trying to change their code or trying to change their standards yeah and that's the thing you could address explicitly maybe and say like how do we decide on standards is it just whoever's been there the longest kind of sets the standard or you could just recognize that there's probably going to be some resistance to me as a new person setting standards and i'm willing to put up with that in order to get this particular standard set yeah or not right like you might decide you know i'll just table this for six months and i'll come back to it later after i've had a chance to establish
Starting point is 00:18:43 myself as a contributing member on this team yeah i think it's worth it because i think the benefits of this particular technical decision are great i think it makes it automatic code formatting eliminates a lot of useless decisions and it just makes it easier for other people to jump into the code base style is just a really personal thing that people get very very involved in and hung up on so maybe the hang-up is particularly about style not about standards but it could be you know i one of the things that i think a lot of people fail to take into account with decisions like this is the passage of time time has an effect on all of these decisions you can either wait to implement it you know to let the idea percolate in people's minds and in that case
Starting point is 00:19:28 time takes an effect or you can uh you can implement it with a with a time limit where you say look we're going to assess this for two months and after two months we'll reassess and decide if we're going to pull it out and you can let that time have an effect and in that case you'll the effect time will have will be that it will actually give people first-hand experience with the tool so they can speak from a much stronger position of authority when they comment on it rather than just saying that sounds like crap i don't want to use that i would say that putting in place a time limit either for yourself to reintroduce this problem or for your team members to have a chance to pull the escape hatch button and get out uh will really have a dampening
Starting point is 00:20:08 effect i think on the on how controversial this is at this moment in time here's the secret it's really not that easy to pull out because even if you pull the formatting tool out the code's already all been reformatted and then there's probably been changes since then so you're not going to just revert and lose two months of progress on the code that's true you can also use time as an evil weapon where you could say oh no this is just an experiment don't worry you know it's really easy to go back as long as no one does any work between now and then meanwhile its tentacles get all wrapped around your keyboard yes excellent perfect have you ever heard the concept of a two-way door versus a one-way door i have not this is a cultural
Starting point is 00:20:51 concept that i hear a lot in my company and i only go if i go through a door that's it i can't Once I'm in my office right now, I buy a new house every time I leave. I believe they're all one-way doors, so you might be about to blow my mind. I'm about to save you a lot of money, Jameson. Okay. There are decisions that are one-way and irreversible, and we call those one-way doors. And there are decisions which are easy to back out of and say, never mind, and we call those two-way doors. For decisions that are two-way doors, you should not spend so much time debating them.
Starting point is 00:21:26 you should try to get to resolution quickly. And if you can't just say, hey, we're going to take a chance on this and see if it works out. And if it doesn't, we'll bail, right? And then let the evidence speak for itself. But with a one-way door, and I think, by the way, this is a two-way door situation. With a one-way door, you really need to deliberate and analyze and discuss before you really make that decision and get locked into that thing. I would put this in the category of one-way door, even though it's going to apply some formatting to your code, maybe. And maybe you could set it up so that it's less of a one-way door where you could just say look we're going to only apply formatting to the files that we change um between here and the end of our experiment
Starting point is 00:22:02 yeah so you're saying the the burden of consensus is higher on a one-way door decision versus a two-way door one yeah exactly yeah that makes sense i i think you should go for it but i am having trouble articulating why because the downside is you might just piss off the the co-worker on your on the code base right who's been there a long time but i don't know that waiting it's like you want to establish the culture like i said earlier of who who owns this code who is allowed to do what on the code and if the answer is only the person that has been there and written it all is allowed to do stuff on the code then you're kind of just they're lackey and you don't you don't get to contribute as much right this this idea of applying automated
Starting point is 00:22:45 automated formatting is one of your contributions to the code base beyond the features that you write and and it feels like when you join a team the assumption is you get to contribute in lots of ways instead of just crank out features that fit the narrow confines of the existing standards yeah i'm on board with the two by the way for what it's worth okay well we both agree sounds like it's a done deal we haven't talked about the communication thing though right nine hours away they all communicate asynchronously it's hard to do in-person face-to-face communication yeah in my experience decisions where people disagree or have hard feelings are are trickier in distributed communication like that it's a lot easier to disagree and work through problems and
Starting point is 00:23:30 feelings in person than in github comments and things can come across a little bit more abrupt or a little bit snarkier than they would in real life especially if you don't have the in-person context of, of knowing just how the person communicates normally. So I think that doesn't make this easier. I saw someone the other day say several days of back and forth in a pull request can save minutes of pair programming time. And I think that's true. There's the benefit of synchronous communication is it's very high bandwidth. So it, uh, it, it might be worth just like one final in person or, or video call communication just to talk through it. And you wouldn't necessarily have to change your mind but just to make sure that their feelings are
Starting point is 00:24:13 understood and and you have addressed them as much as you can and you still feel good instead of leaving it all in just this back and forth asynchronous communication i agree i think that's a great idea all right have we helped adam i think so ship it ship that formatter yep sounds great dave what can people do if they would like to be helped as much as our Question askers have been helped today, which is to say maybe not that much. Well, you did a great job Well, I thought you did good. So maybe they maybe they did maybe they did get some help today Anyway, what they can do is go to our website at softskills.audio and click on ask a question where you can enter your question And from there we will take it away and eventually get to it
Starting point is 00:24:55 Thank you so much to everyone who has given us questions. There are so many we cannot get to them all but we really appreciate it Yeah, thank you. And thank you for people who are listening We've had a couple of weeks of sickness that have made us put out some reruns and we're glad to be back We're glad that you're back listening to new episodes, too. Please come back please If you had any idea how much of jameson self-esteem relies on you coming back each week You would feel awfully self-esteem is a unit and the numbers that measure it are numbers of listeners to my podcast All right, catch you next week

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