Soft Skills Engineering - Episode 361: Get git and non-tech ramping up

Episode Date: June 19, 2023

In this episode, Dave and Jamison answer these questions: Listener Schtolteheim Reinbach III asks, Hey soft skills engineering, love you guys. I work at a company you wouldn’t hear muc...h about, on a product that you wouldn’t think about as having much tech involved- suffice it to say, it makes me interesting at parties. I’m not a developer myself, but on my team, I’m having an issue with a developer who can’t seem to use GitHub properly. Fairly often, whenever he fixes or creates things, he doesn’t seem to check them in properly, and between releases, numerous times, this has caused people to end up reproducing work, for the developers, business team, and QA alike. He’s been at this company for several years, and people have only complained, but no one has made an effort to fix it. I don’t manage him, and I can’t see the processes that are in place on his end, how do I go about reducing the amount of regressions that are created due to a developer who can’t Git? I’m also interested to hear if you two have similar stories about devs who can’t Git, or if you’ve been that dev, and what happened. I quit my job and got a new one! What should I be doing during the initial ramp up period that shows I am a skilled engineer even though I do not know the main languages they use? Also any advice on the non-tech side of ramping up? What should I be doing besides learning the tech stack and fixing bugs? Thank you for all your help and feedback. Show Notes https://xyproblem.info/

Transcript
Discussion (0)
Starting point is 00:00:00 it takes more than slipping a note card labeled dot ds store into every book you open in your library to be a great software engineer this is episode 361 of the soft skills engineering podcast i'm your host james and dance i'm your host dave smith soft skills engineering is a weekly advice show about all the non-technical things that go into the technical field of software development and where we make jokes about the mac os file systems metadata format i guess we kind of have a theme emerging where we try to take silly things that happen in the remote or digital world and make them happen in the real world i'll just write down my name and when i open the book like i said keep it up to date we kind of already have those with library cards
Starting point is 00:00:51 remember those or not library cards what were they called the the checkout things the things that you would like sign or get stamped in the front of the book yeah yeah those were so satisfying and it was cool to see the history of who else had checked out the book almost as cool as a git history alas does not exist anymore except in some database yep dave do you want to thank our patrons yes we have weekly shout outs for trash panda thecomputersciencebook.com the re-elect jameson dance boogie brigade the re-elect jameson dance committee santa hope our noah frazier low kent c dogs jenny kim owen chardell benjamin earl if you would like to join this illustrious crew to go to soft skills.io and click the support us on patreon button craig motlin i love mavis the
Starting point is 00:01:37 stochastic parrot alice jost tuscarawas ohio i'm gonna have to look that one up later patreon.com.au we're hiring irish and monkey face emoji jonathan king web tau awesome end-to-end testing oladapofadi the re-elect jameson dance committee nick hathaway travis sanders braden canes john grant cody please hire jameson sale nick kantar and philip john basile if you would like to join this illustrious crew go to softskills.audio and click the support us on patreon button any dollar amount will get you access to our slack community where you can interact with this illustrious crew and any amount over a sufficient threshold will get us to read whatever you type into the patreon name field and then you'll truly be a member of the illustrious crew
Starting point is 00:02:21 illustrious sir yes i think that's the illustriousist is that the superlative probably most illustriousist yes uh i better read a question do it before i make up even more words Okay, this is from a listener, Stolterheim Reinbach III asks, I'm going to risk offending you and say that's probably not your real name, but I'm going to Google it after this. Hey, Soft Skills Engineering. Love you guys. I work at a company you wouldn't hear much about on a product you wouldn't think about as having much tech involvement.
Starting point is 00:03:03 Suffice it to say, it makes me interesting at parties. I'm not a developer myself, but on my team, I'm having an issue with a developer who can't seem to use GitHub properly. Fairly often, whenever he creates or fixes things, he doesn't seem to check them in properly, and between releases numerous times, this has caused people to end up reproducing work for the developer's business team and QA alike. He's been at this company for several years, and people have only complained, but no one has made an effort to fix it. I don't manage him, and I can't see the processes that are in place on his end. How do I go about reducing the amount of regressions
Starting point is 00:03:37 that are created due to a developer who can't get? I. I'm also interested to hear if you, too, have similar stories about devs who can't get, or if you've been that dev, and what happened. Everyone has been that dev at one point. No one is born getting. If you're ever Googling reflog,
Starting point is 00:03:58 you're currently that dev. Or cleaning up after that dev. There is certainly a rite of passage where every developer has messed up Git at least once, like really catastrophically, and you had to rebuild the history. I remember when we were introducing Git to our team at work many years ago, and someone checked in an entire Linux CD-ROM ISO file into Git. It was like 600 megabytes. And so every time someone cloned the repo or pulled, it got really slow and bad. Yeah. Did you have to remove it from the history?
Starting point is 00:04:33 Yeah, we had to go in. edit the history and it was beyond my ability at the time but the person who brought us git this is like 2008 uh they did all the git magic to make that work they possess the arcane skills advanced knowledge and techniques exactly this does not seem like i mean they didn't tell us what their process is and they mentioned releases and theoretically you could devise a a process using git that would be hard for developers to follow correctly oh not just theoretically yeah that's true okay that is a practical reality flow was that the thing that had a cool website that everyone did for a long time that made their lives worse yeah
Starting point is 00:05:19 we don't officially express an opinion on technical topics like that but yes yeah but from reading the question this sounds beyond what i would attribute to a process being complicated because they seem it seems like this person is is uniquely messing it up more than other folks right so i'm gonna briefly say maybe make it un-mess-up-able and then skip over that because that's probably more work there's kind of a meta question here which is as someone who doesn't have influence direct you know formal direct influence on this team or visibility into what's going wrong how do i fix it because the problems definitely directly influence me but i can't influence a solution yeah there's a an answer that applies to these kind of problems
Starting point is 00:06:15 that has lots of caveats but i will say it anyways which is you you walk the tree till you get to that person so you talk to your manager and then if they manage the person they talk to the person if not then they talk to the manager who manages that person or if they're in a different part of the org they talk to their manager and then it kind of goes up until the root of the tree okay someone in that person's reporting chain and traces back down this sounds like a google interview question is there is there backtracking involved in this usually yeah usually there's backtracking when someone along the chain says something wrong or misinterprets it
Starting point is 00:06:53 and then has to back out of what they said and disavow it. So yes, I guess. Yeah. So if you're on the same team, this can work decently because there's less room for mistranslation. But the further away they are in the org,
Starting point is 00:07:09 the more steps it's going to have to go through and the more different people will have to put something on their to-do list to make this happen. so depending on how close you are into the org this might be a thing you could do separate from just walking that tree this also includes the difficulty of you telling someone hey this person is messing up and then right hoping that they fix it and and that's also kind of fraught uh and then the more steps it goes through the more nodes it nodes i don't know yeah these are
Starting point is 00:07:43 nodes yeah the more nodes you go through in that in that traversal the more room again there is for misinterpretation like by the time it gets to this person it might end up as hey schottelheim reinbach said you suck at git fix it you know like or or it might be like there's severe concerns about your performance at this company and we're letting you go or like it might just morph or yeah change in ways that you do not intend are you saying is that a compelling reason to avoid actually following this process and instead go straight to the person yes because dave you're gonna tell me how i do that without offending this person oh oh and now i have to rethink my answer because i was planning on offering some offense ah yeah i mean there is a telephone game
Starting point is 00:08:34 risk here if you were to go directly to this person as a product manager wait did they say product manager i think so right no uh they say i'm not a developer myself okay oh wait on my team okay they're on the same team oh one node okay good maybe that's less bad yeah i it's funny how i just assume they're a product manager if they're not a developer i mean what else is there obviously by process of elimination you are a product manager and the fact that you care about releases. You can tell by the title with royalty. Yeah, exactly. Exactly. You're a royal product manager descended from the great Reinbach dynasty. Here you have a place. I think you have an opportunity to sit down directly with this person and tell them, hey, I've noticed a pattern of you
Starting point is 00:09:22 breaking releases and it seems to be Git related. Now I'm not a developer, so I can't tell you how to fix this but is this something you're aware of and are you working on this now that that's probably how i would tee up the conversation the problem is if you're not a developer and you don't know the specific problems the developer in question here might come back to you and say yes i'm aware here are the three things i'm doing to fix it and you won't know if those are good you know you're like sounds good to me oh he he said he was gonna rebase instead of merging oh that sounds right it's like i don't know if that's right so yeah that's kind of tricky it seems like you're going to need to go find yourself a partner to come and do this intervention i also wonder
Starting point is 00:10:06 they mentioned github they mentioned git i guess this is kind of general for when you don't have the exact technical details but if you can focus on the outcomes you're seeing instead of the things you think are causing it or contributing to it it's possible it has nothing to do with github at all and it's more like the ci process for cutting a release or something and so if you say i think you don't know how to use github properly and that's not actually the problem as a defense mechanism the developer might flip the bozo bit on you might think oh yeah this reinbach character i google this by the way it looks like it's from a jrpg series that i've never heard of but has a very exhaustive wiki oh is that what you've been doing instead of
Starting point is 00:10:53 listening to my answers quiz me on what you said i'll prove i was listening now i'm counting on you not being able to remember what you said in order to you nailed it in order to formulate a question you placed your bet and you're gonna walk away with the win today yes no one will know except all the people i just told uh what was i saying oh yeah you if you can focus on the impact you're seeing and the outcomes you're seeing instead of your hypothesis on why they're being created that might make it easier to solve and also kind of makes it easier for someone else to dig into and diagnose more clearly yeah i guess another option is that you could go through the effort of working with this person to diagnose why exactly this is happening but that gets into
Starting point is 00:11:45 manager territory it feels like why why is this thing happening so i mean this is what engineering managers are for to that's right help the team get better with technical competence and the and the context to be able to do that when when the thing there they need to improve on is is technical that's right or non-technical yeah i think i'm just going to roll back my whole earlier answer about walking that tree like they're on your straight to their boss yeah you should have an engineering manager on the team you should be able to say hey i've noticed this thing fix it can you make it better yeah it's your job your job is to run a team that does consistent releases and doesn't introduce incidental errors and so fix it you know it's your job and they'll
Starting point is 00:12:35 probably be like yeah i've been trying for months and i don't know what to do from the outside But I would way rather have a problem caused by wonkiness around release practices than an overall technical quality problem. If there's just a lot of bugs that get introduced, that's such a broad problem, often without very clear solutions. If this is all because one person is not following the release processes, I feel like you should be able to make a big improvement. You should be able to look like a hero if you're the engineering manager. Yeah, but then why is it there in the first place?
Starting point is 00:13:14 I don't know. Yeah, exactly. Oh you created the problem and you solved it. Now you're a hero. What? I don't know how this works I want to rewind the clock just two minutes and say I think the name for what you were describing Jameson when you encouraged the question asker to focus on outcomes instead of diagnosing the problem is the xy problem Am I right? Yes Yeah, I was not thinking of it like that. But yes, I think you're right yeah so the xy problem is where you propose a solution or over diagnose the problem or
Starting point is 00:13:45 misdiagnose the problem and ask the person to solve that rather than the actual outcome that you're going for very very common actually in software because the root causes of problems are often not obvious by the symptoms i think there's it's one of those things that has a website that describes it, right? It does. xyproblem.info. I just Googled it. Yeah. I wonder what fraction of links on Stack Overflow are links to this website. It's got to be a non-trivial amount. Oh boy. Anyway, that was a little time travel sidebar. Going back to the present, there is a possibility here that this manifestation of errors is indicative of this developer's lack of skill to do the job that they're being paid to do
Starting point is 00:14:38 and so it could be that the reason this keeps happening is because your engineering manager is hesitant around taking more serious action against this person because it's a performance problem and performance problems are notoriously challenging for engineering managers and a lot of managers don't like to confront them head-on because they're awkward and uncomfortable but it could very well be that there's a deeper skill gap here and that git is just one of those places where you're seeing the skill gap so you should be sensitive to that when you go in because the engineering manager might be like thank you for the feedback and then kind of seem dismissive to you but the engineering manager is secretly pulling their hair out trying to solve this
Starting point is 00:15:17 performance problem and not getting traction yeah it's possible i really do think your best bet would be to partner with the engineering manager on this we kind of talked at the beginning about the process and maybe it's complicated maybe there are things you can do to help influence the process as someone who kind of observes it and and sees the impact that the current process is having even if it's mostly caused by one person but that also helps soften the message of you are the problem to the developer if it's if it's both an attempt to improve how they use the process and improve the process then maybe it assuages their ego a little bit maybe that's not a thing you care about though i don't know all right have we answered the question i think so
Starting point is 00:16:05 good luck best of luck to you uh i hope you get to turn into a real life person someday instead of a cartoonish pixelated rpg is it kind of a anime themed rpg i think so yeah yeah it looks like it 1995 oh vintage all right shall i read our next question yeah please do okay this comes from an anonymous listener who says i quit my job and got a new one what should i be doing during the initial ramp up period that shows i am a skilled engineer even though i do not know the main languages they use also any advice on the non-tech side of ramping up what should i be doing besides learning the tech stack and fixing bugs thank you for all your help and feedback all right this is nice nice to see someone getting a job instead of just getting
Starting point is 00:16:52 laid off man i wish that were me it will be hopefully soon well you're a valuable asset jameson it's only a matter of time before this market scoops you up i have been interviewing a lot and my the podcast has come up a lot and i have not figured out a comfortable way to discuss it besides just hiding in shame which is what i do yeah hey if i interviewed with you and you're listening to this now because you said you would you should hire me there i'll insert super liminal messages that's awesome what should i do to ramp up i know dave you've talked in the past about wanting to hire people
Starting point is 00:17:40 who i can't remember the smart ways that you said it so i'm going to say it in dumb ways but you've talked in the past about not wanting to hire for specific languages we we use python we hire people that know python and and that makes a lot of sense to me the set of people who could comfortably do the job well is is not a subset of the people that know the tech stack you already use but in that case then you do have this training thing how have you seen people be effective when they join and need to come up to speed on a new tech stack well i kind of sidestep that problem a little bit because i tend to hire people who have a proven track record of already doing it and i don't know how they do it you just know that they've done it before i just know they
Starting point is 00:18:25 have and i know they can do it again got it i guess i have some techniques on how i've done it over the past because over my career i've done major tech stack reboots maybe three or four times where I'm completely walking away from, from some language or ecosystem and walking into a whole new language and or technology stack. And what I'll do is before I start the job, I'll actually buy a couple of books on the languages and technologies and, and read them cover to cover and really make sure that I've got a solid foundation. Because one of the, one of the risks when you're learning a new programming languages is that you, you mistranslate concepts from one language to the next and i remember when i started a job in 2012 i had come from a job where i was writing only c
Starting point is 00:19:11 plus plus and uh one of the new languages i was picking up not it wasn't totally new to me but one of the languages at the new job was javascript and someone commented hey your javascript looks like c plus plus and i was like oh crap this means that i'm not really writing idiomatic code in the new language and so i need to go expose myself to more code written in that language were they complimenting you on you having figured out how to do template metaprogramming in javascript i don't think it was a compliment this is incredible how did they figure out pointer arithmetic this isn't the feature of the language you know what javascript needs pointer arithmetic it's not dangerous enough needs
Starting point is 00:19:54 easily accessible use after free errors the barrier to entry to use after free errors is too high yeah they were subtly telling you they found a buffer overrun yes exactly in your javascript code yeah you your code looks like javascript code in the fact that you got the interpreter to segfault oh no i took that i took that as not a compliment actually because it showed that i was not really using the language to its full potential. And maybe more importantly, I wasn't matching the patterns on the team. And so my code looked foreign to them, even though it was in the same language. So I like reading books to learn new languages. I think it's a great way to just
Starting point is 00:20:40 go all the way to the basics, to the fundamental building blocks of the language. And it'll also save you a bunch of time where you're like, oh man, what's the syntax for this looping that I like? You know, just really basic things. Don't spend time on the job fumbling around with looping constructs and basic conditionals and things just read a book and that stuff will be like chapter one yeah so that that gives you the kind of broad overview and then you at least will have heard of concepts that come back up that right you can go dig into more oh yeah that reminds me i remember my first the same job within my first week one of the other developers used the term object literal in in a javascript context and i literally thought no pun intended
Starting point is 00:21:25 that he was making up that word i'm like that doesn't exist and then later i realized oh no that's actually a an interesting javascript feature called object literals and i'm like oh and it's useful and so i'm like ah you're making that up yeah and that's just because i didn't have a good foundation oh i'm thinking back about what you said about you just hired people who did it i think there's a balance there um i worked with someone at a previous job who was learning a new language that was in also a pretty new paradigm not just kind of the i feel like you can kind of squint and get from ruby to python to javascript to go to java and like there's some common things in in what's that parent language that they all descend from algol is that the one
Starting point is 00:22:15 and like the algol children languages and they explicitly said when they joined hey i'm going to put a lot of effort in to learn this language, but I didn't really see it. I did see a ramp up in the speed and complexity of their contributions, but they didn't say, they didn't tell me their detailed plan of I'm going to reserve, I don't know, five hours this day to go read this book or follow this course or something. And the point I'm meandering towards is you want to make sure you're communicating that you are working to get better i think unless there's explicit expectations set by the company that you will join and kind of do nothing except learn the stack you want to avoid looking like you're doing nothing except learning the stack you should still be able to
Starting point is 00:23:11 get something done yeah as a software engineer new to the stack there should be some kind of easy tasks picked out for you or that you could find if they aren't prepped for you so i think i think my point is you want to balance you're not going to school right you're they didn't hire you to to teach you this language they hired you to get stuff done right so the expectations of how much you get done might be lower at the beginning but you still should be able to produce some output even if the output takes you a long time or is not idiomatic or you need help from others to figure out how to do it in the new tech stack or whatever the other point i wanted to make is there is a so this is the tech stack right the stuff i don't know you go somewhere they do java
Starting point is 00:23:58 you go somewhere else they also do java everything else is going to be totally different um yeah there's there's some non-transferable knowledge about the architecture and the setup that you're going to have to develop even if it was in the exact same tech stack you were already familiar with if you had not switched tech stacks and you you can kind of combine those learning periods of learning the architecture and the patterns of the code base and the the software with learning the new language but they should have some expectation of of even if you there's some ramp up even if you're familiar with the ecosystem already yeah not familiar with with how it works in the company exactly like you don't know the names of all the services you don't
Starting point is 00:24:45 know the uh deployment tools and processes you don't know the oh you might not even know the git workflow just yet yeah exactly yeah maybe they're using puppet instead of chef or something like that and i have to figure out okay how do i deploy stuff and yeah exactly infrastructure set up and what about the non-tech side we've talked a bunch about the tech side yeah this is this is That's an interesting one, but I think if you're remote, this is more challenging than if you're local. I think some of this, or in-person rather, I think some of the in-person natural organic activities that just happen will help you get to know your team members. Things like make sure you're not just sitting at your desk all the time, and when someone walks over near your area, be sure to put your headphones down, turn around, look at them, have some chit-chat, engage, follow their lead on how much time is too much time, and be sure to engage. Now, if you're remote though, oh boy, that's harder, but I would probably set up one-on-ones with everyone on my team. Just schedule 20 minutes on their calendars. Just tell them you want to get
Starting point is 00:25:46 to know them and ask questions. And, you know, if your manager is really on the ball, your manager will probably give you a list of people that they want you to go meet in the first week or two weeks of your time on the job. You just got to be a lot more proactive about it though, when you're remote. I love that idea of scheduling one-on-ones with the folks on your team. It feels like a very manager thing to do and that i would expect a manager to do that when they joined a new job but it's important for non-managers too you gotta talk to these people and know them and work with them put a face to the code they'll be reviewing in a pull request or the slack message they're going to get asking for help setting up the environment or whatever yeah for sure
Starting point is 00:26:25 have we answered the question well probably not but it's pretty good marginally good enough the standard we strive to achieve all right and sometimes we do thank you for asking and congrats on sometimes we achieve it yeah i mean we strive to achieve it we don't promise yeah it's a goal and it wouldn't be a good goal if it were easy that's right it's a stretch it's a stretch goal the good enough stretch goal oh yeah i'm glad you got a new job it's exciting it's it's a there's a fun energy that comes with getting a new job that yeah for sure it's it's a good time all right what can people do if they want their own questions answered go to softskills.audio and click the
Starting point is 00:27:14 ask a question button where you can fill out our little form that asks that lets you ask whatever question you want and for those of you whose questions we have answered in the past you can use that same form to tell us how our advice went whether it was good bad indifferent and it turns out there is no html form validation that will prevent you from submitting non-questions to our question form that'd be some fancy attributes on html it's coming with the ai large language model yes attribute data dash llm prompt or something right that's actually a cool idea and maybe i'll go build that because i'm unemployed all right all right thank you we appreciate it catch you next time

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