Soft Skills Engineering - Episode 149: How to get my engineering career back on track and how to thrive in a heavy process environment

Episode Date: March 18, 2019

Joining us this episode is special guest Nedda Amini! In this episode, Nedda, Dave, and Jamison answer these questions: My engineering career started out pretty promising. But along the way,... I took a couple of unfortunate decisions and jobs, that instead of helping me grow as an engineer, were a big setback. When you career takes a few too many bad turns, how do you steer it back to where you want it to go? I work on product development with ~25 other developers, and management recently had us all embark on a journey to gain some level of CMMI appraisal. The goal is to deliver higher quality software at a more predictable pace. In practice this means that we got more processes to follow, more meetings to attend and more time-tracking fuss. I’m trying to keep an open mind because I, as a programmer, also have high standards for the product and it’s development. I’m scared that programmers are being turned in to factory workers stripped of any autonomy. These new processes don’t allow me to do anything without my product owner’s approval. I’m afraid that it will limit my creativity and ultimately cause my work and the product to suffer. In this kind of scenario, what’s your advice for a programmer who often gets inspired to remove tech debt, tinker with our dev environment, and otherwise make small improvements and refactorings that shouldn’t require management approval? What’s your opinion on the level of freedom that programmers should be provided in order to do their job well?

Transcript
Discussion (0)
Starting point is 00:00:00 It takes more than digging through technical metrics until your eyes turn red to be a great software engineer. This is Soft Skills Engineering episode 149. I'm your host, Dave Smith. I'm your host, Jameson Dance. Soft Skills Engineering is a weekly advice show for software developers about non-technical topics. Why would it make your eyes turn red? You know, just like, I don't know, you're just staring at the screen for hours and hours, scrolling and scrolling and scrolling. If they were, like, really good metrics, would it make your eyes turn green?
Starting point is 00:00:33 Or would it heal your bloodshot eyes? Yes, but that is not what this show is about. It's not about nice visuals for your failing metrics. Okay, good to know. And that reminds us, we have a special guest with us today. Hello. I'd like to introduce Netta Amini, who is joining us. Welcome, Netta.
Starting point is 00:00:55 Hi, I am a software engineer at CJ Affiliate, and I just waved at a camera that doesn't exist. I work on internal systems, but I also am a front-end chapter lead, so I specialize kind of in designing component systems, things like that. And I'm here to give the best advice I can, I guess. I don't know. We'll see. Well, you know, it doesn't have to be the best. You could, you know, we'll be good with second best. the best i can give my personal anyone anyone who listens to the show long enough knows that the advice is not the quality of the advice is not what brings people here okay good but i'm amongst the company then we have a low bar okay uh we'd like to thank our patrons we would like to thank matthew votovich no angel ventures
Starting point is 00:01:45 hold on hold on hold on oh no okay voitovich matthew voitovich we we need to apologize we've been saying matthew's name wrong for like two years i'm so sorry oh did you ever see the simpsons episode where he's looking for the license plates bart's looking for a license plate with his name on it and he only finds bort no and then there's a bunch of people around him who are also named bort no maybe that's the situation right now anyways uh yeah thank you to matthew voitovich the Agile Ventures Charity, Zach Grannon, Luis Santos, Nick Kantar, Sean Clayton, Sonic the Hedgehog, Maurice Rousseau, and Chris Hogan. Thank you so much, and thank you to everyone else who has supported the show. If you would like to do that, you can go to our website,
Starting point is 00:02:30 softskills.audio, and click support us on Patreon. All right, should we jump into it? Please. I'll read our first question here. This comes from an anonymous listener who says, my engineering career started out pretty promising, but along the way, I took a couple of unfortunate decisions and jobs that instead of helping me grow as an engineer were a big setback when your career takes a few too many bad turns how do you steer it back to where you want it to go this one was a really interesting one because it's interesting giving advice without much context but i i think there is something kind of holistic everyone can take away from this um let's hear it oh well i guess the thing is is that um i think this is something
Starting point is 00:03:12 that you guys bring up a lot in this podcast but it's the idea that you know you should always be interviewing you should always kind of shouldn't be afraid to go and look at other things and just because you're kind of in a position that i don't know maybe you don't feel like your technical prowess might be good like you maybe like a shop that wasn't pushing you enough um doesn't mean that you can't find a place that'll do that for you does that make sense and also it's good to just bomb interviews absolutely is so good yeah and they make it makes great stories yeah later yes in the moment it's terrible oh man aren't all good stories like that though yeah they're not good in the beginning but then afterwards and then later you're sitting around with your
Starting point is 00:03:55 friends all just having a good laugh at the expense of yourself yeah assuming you survive yes wait hang on assuming you survive we're talking about job interviews are you suggesting that there's like death traps in these interviews like i'm assuming that he was saying other kind of adventures but you know maybe it's a particular dangerous job interview who knows i don't know if you read twitter there's a lot of really negative comments about job interviews yeah it's like mr bond reverse this linked list before the laser chops you in half right that's exactly what i was thinking is that not what everyone else's interview process is like really confused we're filtering for people who can reverse link lists under extreme pressure threat of bodily harm or
Starting point is 00:04:41 death you see this laptop we're giving you has a usb cable coming out of it and a timer connected to the usb cable is an iot device which has a blade hanging above your head if you can get this test case to turn green before the timer goes off you can walk away in one piece ready you said iot so you can probably just like log into it with root root yeah as the username and password and turn it off yeah you could probably do that hopefully that was actually the test behind the test and that's how you got the pen testing job you wanted you wanted the javascript job but nope nope you did that one clearly uh i'm i'm kind of wondering like what what would make what qualifies as an unfortunate or or kind of negative job experience is it is it like
Starting point is 00:05:29 netta you mentioned a place that doesn't push you or that you don't grow i feel like there's also the potential that you could be working on stuff that's just like hard to communicate the value of to other people maybe your projects get canceled or it's really niche internal things that i don't know you you don't have much to show for it like what yeah what do you think that means i can understand like that i have also been going through this kind of existential crisis of and i've heard other people too where it's um you don't feel like the thing that you are working on dirt like is producing a lot of value outside um which i can understand like you talk to people and they're like i'm a doctor and i'm then you know systems like i do all these crazy things
Starting point is 00:06:14 and then you just sit there and like i just make a product that does ad tech like things like that and you just sit there yeah and it sounds super cool and you know don't feel super I optimize the conversion flow of yeah I don't know yeah not to not to I mean there's lots of valuable work but I see what you mean where some work feels like it's hard to communicate that value to other people like to me the the uh a big setback or bad job would be one where you're like on a dead-end skill set development track like I'll tell you an example like what mumps isn't that a database thing I saw mumps on a resume the other day I I've heard there's a disease called mumps there is but i'm pretty sure and someone named a database after it
Starting point is 00:07:00 there is some cognitive dissonance there the database was invented after the disease so they have no excuse okay that's just ridiculous and yes that might qualify it's like mainframe data processing stuff from the 60s yeah that's not exactly what i was thinking 60s technology like a stack that's not very up to date and has no like potential to be up to date a little i mean i guess if you're like a fortran programmer you're actually in really high demand nowadays so i'll give you like a i'll give you an example that's kind of an extreme example but i know someone who had a good like 10 to 15 year software engineering career but then the latter half was spent entirely on developing people soft
Starting point is 00:07:45 applications and after doing that for like five or six years suddenly you go to job interviews and people look at you weird you know and it's like are you just a people soft expert that's all you are you know and so it's like well now i can't get a job and so i think that's like salesforce or these yes these kind of locked in platforms that's yes a salesforce developer would be kind of like today's equivalent of that and like salesforce is not going to be around in 10 years i think most people will agree on that and so not i think salesforce man what's his name mark benioff i mean we've made a powerful enemy same things happen to flash right there was a whole group of people who are flash developers and then you know ample was like no and that just
Starting point is 00:08:26 completely put a whole bunch of people who are this kind of i don't want to say like one trick pony but like kind of you know they put all their eggs into one basket and i can see a job maybe forcing you to do that right sure um which is i think i mean i hate to say like you know you should work outside of work to develop your portfolio but um if it's something that's really concerning you and that's kind of a thing that you're doing and you want to keep a career in software development um it's good to um exercise uh your abilities outside develop yourself outside of work keep up to date with things absolutely yeah absolutely like another way i could see a job going off the rails like this would be like you get this job as a software engineer but then
Starting point is 00:09:14 there's this need to do something for the sales team you know and then the sales team loves you and the next thing you know you're kind of embedded with them and you're going on sales calls and then you wake up one day and it's been two years and you haven't written any code and and you're basically a salesperson you know and so it's like it's it's the same thing though where you are in a job you hate you didn't even realize you hated it it happened so slowly like the frog boiling thing right yeah so now how do you get out of it and i think netta you hit it just right on the head you got to be interviewing constantly and and what this means is that if you're in a job that you feel like isn't taking you where you want to go those interviews are probably going
Starting point is 00:09:52 to be really hard at first you know because people are going to ask you questions you aren't prepared for both technically and about yourself yeah and i mean interviews are a really good way to know what is like the most up-to-date on tech stacks and things like that too right i mean you can always get your information on twitter but yeah that's a bit too fast-paced you kind of want to see like what people are looking for uh what they aren't core skills how they're applicable things like that to being which i i have i haven't interviewed in a while so i was just thinking that i feel like a huge hypocrite because i don't i don't know that i do i directly say interview all the time i think dave says that yeah and then i sit silently because i interview every time i
Starting point is 00:10:34 switch jobs so i'm worried if i interview more that means i'll just switch jobs more i mean there are people come and ask or talk like you know you have like recruiters reach out on linkedin and it's always good to like you know follow up a bit and just be like well what is this position what does it entail i don't always go directly into the interview process of like doing the you know doing the on screening and the screening and stuff like that because that's a bit of a time commitment but it's always good to just see what's out there you know yeah so interview more practice outside of work on your skills a little bit what about i feel like there's probably a confidence it would it would be a blow to my confidence if i felt like i started
Starting point is 00:11:17 off really strongly and then i just ended up in a place i didn't like what do you think this person could do to kind of just restore their own belief in their ability to be a talented developer there's community stuff there's there's outside project building things like that too um open source is a very it's like an open world that you can mess around with i don't i don't know if that's a great way to build confidence but it's a great way to practice and mess around and i've got it you start and win a technical argument on the internet oh there it is just get a lot of twitter followers and then you're set that that'll just get you the job every time you feel a little jolt of imposter syndrome you just count and you say that's way too many people to follow an imposter
Starting point is 00:12:04 no one would ever follow it not that many people follow an imposter yeah you can do that and then you need to like start arguing with someone about tabs and spaces then you're set yeah the problem though jameson is i've never seen one of those arguments be won by anyone wouldn't it build your confidence if you were the first person to win though i think the real winner is the first person who like you know signs are off first who just stops responding that's the real winner of any internet conversation yes you get you get points based on how many follow-up comments you get from the other person that you don't respond to this is this is great advice for especially for being on the internet okay uh so troll your way to confidence got it yeah i mean the confidence
Starting point is 00:12:55 thing is though a big thing but yeah i mean i don't know you could have low confidence and be at like a job you tend to enjoy as well so yeah i don't know to me confidence as an engineer takes time and like and on the time scale of years like i don't think there's an activity i could engage in to be like ah now i'm confident after a few hours days or weeks even months i don't think i was really confident as an engineer until i had been at multiple companies had been through lots of review cycles had worked with lots of other engineers and seen how they work and then i could say oh yeah i can do this like i'm not the best not the worst but i know where i am and i'm decent at this yeah there's a bit of a confidence boost at like trying something
Starting point is 00:13:38 that three years ago would have seemed really daunting so i think it's always good to review what you knew before yeah sorry jameson you were trying to say something i was trying to engage in the regular activity of jameson tells stories about his dad podcast so i used to go golfing with my dad when i was a kid and he was pretty good i mean he wasn't like fantastic but he was he was solid but every time he would walk up to the tee to hit a shot i guess i'm assuming people know stuff about golf you hit a little white ball with clubs you like start off in one spot i love how you just i love how you just described an entire sport in like one sentence that was great uh it's really expensive that's the other description of it that's why i don't play it
Starting point is 00:14:22 um but before he would shoot he would just like look down at the ball and say i am great and then he would hit and like half the time it would not go very well and he would just put another ball down and look down at it and say i am great and a hit and then be like yeah like that's so powerful i am i knew it and it sounds so like cheesy and motivational when i say it but i sometimes think about that like i don't know this is like the ultimate sample bias right because it's like i am great and until that ball goes where i want i'm gonna keep saying it until the ball tells me i'm great yeah yeah and then and then when he hit a good shot he was like yeah like see i don't know but that's the thing though is like if you had that level of like confidence and everything like
Starting point is 00:15:09 that that's a key i want to unlock maybe that's what i just need to start doing it's just like yeah, I'm great. I can do this. Jameson, you've shared a lot of advice from your dad and it's all been good. This one just strikes me as kind of weird. No, this is perfect. That's a good description of him.
Starting point is 00:15:26 He's great and he's kind of weird, just like me. So let me say, I think what you're saying is, say you're great, keep swinging, even if you screw up, which you will, keep swinging and eventually you'll be great. Yeah, like I have this tendency to be like, all right i'm gonna i'm gonna try and hit and then if i hit the ball and it goes poorly then i think like see it proves that i suck and that's not being confident isn't like never
Starting point is 00:15:53 messing up or getting anything wrong that's just being perfect and then it's not confidence it's just like how reality is but i feel like there's something to to recognizing that you can do good things even if it doesn't always go perfectly yeah it's having faith in yourself yeah all right This analogy went from weird to pretty good. Okay. I'm glad you saw it because the second I heard the I am great whispered to a golf ball, it resonated with me. So you're saying, okay, go sign up for an interview. Yeah.
Starting point is 00:16:27 Sit in your car, rub your temples, look in the rearview mirror, say I am great, and then walk in there and just fail spectacularly. And then do it again until I am great is true. I'm thinking of another emotion you could have where you look down at the golf ball and just whisper like, I'm going to smack the crap out of you, you little stupid round thing. And then you're fueled by rage instead of confidence.
Starting point is 00:16:50 I mean, that's how I do most things in my life. I'm driven by the light. That's what I do when I take on Jira tickets. Depending on, you know, just so you know, like I am great is I think a great thing to say, but depending on your alien race, you might want to say I am Groot. Okay.
Starting point is 00:17:05 i gave it a chuckle i gave it a chuckle we got something there dave i admire your confidence i can imagine you before you said that saying this pun is gonna be so good this is gonna kill yeah actually i just said i am great and then i lunged into the pun well have we answered the question i think so get out there get your confidence get interviewing you gotta do it it's the only way to get out of a crappy job and get a good job is interviewing that's the only thing between you and the next good job and you got to do a lot of it and you're gonna have to do more of it than you used to have to do so brace for impact be prepared for rejections and go for it yeah practice log what you've done learning logging is also a great way to um boost confidence
Starting point is 00:17:50 so do those things that's really good actual advice it slipped in there at the end i like that finish line yeah finish line advice yeah okay let's uh read the next one i will read it this is from another anonymous listener i work on product development with about 25 other developers and management recently had us all embark on a journey to gain some level of cmi cmmi appraisal cmmi stands for capability maturity model index i index okay uh the goal is to deliver higher quality software at a more i was wrong sorry back it up confidence integration okay cool uh i know that this question hinges on what the letter i stands for okay uh in practice this means that we got more process to follow more meetings to attend
Starting point is 00:18:46 and more time tracking fuss i'm trying to keep an open mind because i as a programmer also have high standards for the product and its development i'm scared that programmers are being turned into factory workers stripped of any autonomy. These new processes don't allow me to do anything without my product owner's approval. I'm afraid it will limit my creativity and ultimately cause my work and the product to suffer. In this kind of scenario, what's your advice for a programmer who often gets inspired to remove tech debt, tinker with our dev environment, and otherwise make small improvements and refactorings that shouldn't require management approval? What's your opinion on the level of freedom that programmers should be provided in order to do
Starting point is 00:19:21 their job well i guess for the class we should probably define what cmmi is oh man this probably means i have to do it yeah i can read it off of wikipedia which is what i did earlier but so i lived in cmmi level three for about seven years at my uh oh boy a long time ago about 10 years ago at a different company uh oh more than 10 sorry a long time ago basically it is a process for tracking development artifacts to make sure that you follow your own best practices as prescribed by this institute that lives in the clouds and just showers down enlightened process on your company.
Starting point is 00:20:05 And basically it means you have to produce a ton of paperwork, but it has basically no opinion on the actual engineering practices you follow when you're writing code or deploying or things like that. It's more like requirements, traceability, verification, stuff like that. And it tends to be tightly coupled with government contracting, which also tends to require very detailed time tracking for billing purposes. So these things tend to come part and parcel. So there's CMMI in a nutshell.
Starting point is 00:20:36 I didn't quite describe it as succinctly as Jameson described golf. You'll get there. But like golf, CMMI is very expensive. it so wikipedia tells me there are levels one through five level one says process unpredictable poorly controlled and reactive does that just mean like yeah everyone is automatically on cmmi level one yeah actually the cmmi level five people are also on cmmi level one with a lot more documentation i yeah did you was it a goal to to bump your level up a couple more yeah oh yeah absolutely like we got level three you know and what that means is you can bid on more government contracts
Starting point is 00:21:15 but you have to get five to bid on even more contracts you know different kinds of contracts okay is there a secret level beyond five it's like the unlocked it's level six yeah you only know when you get to level five that there's more exactly the wikipedia page changes only for you it's really weird but it seems like they do a lot of this for like auditing purposes too right like because they need to people need to come and make sure they're doing the right things and that i guess all their ducks are in a row things like that oh yeah i mean that it's like a circular thing though it's like because in order to maintain your cmmi accreditation you have to be willing to be subjected to an audit every year or two where they come in and troll through all
Starting point is 00:21:59 your artifacts and make sure your requirements trace through and things like that so it's it's not so much like the customer has valuable audits they want to perform it's more like the customer agrees the vendor agrees that we want to be cmmi certified so here's the audit you have to do okay yeah yeah i can get that i mean i think lots of um lots of organizations like financial and things like that do some process of auditing um so i guess even if it's not cmmi there is a bit of process that a lot of tech companies go through um whether it's self-select or not uh to make sure that they're up to snuff i know that we do kind of like socks auditing and stuff like that yeah we do pci stuff in practice that means like my team mostly doesn't
Starting point is 00:22:43 it means a bunch more work for me to shield them from a bunch more work yeah and there's so many of these things right like hippa has its own rules iso 9001 all these different things but you know what's interesting that i found even though there's all these super rigorous processes and audit methodologies at the end of the day the comment that really stands out to me is i'm scared that programmers are being turned into factory workers stripped of autonomy because this person is worried they won't be able to do things without their product owner's permission and you know what i find really striking about that is that i feel like modern scrum teams actually can easily fall victim to this same thing where it's like everything you must you do must have a ticket associated with
Starting point is 00:23:20 it and the ticket was put there and groomed and prioritized by the product owner and i'm like it's not that different really and i feel like this trend is happening across the industry and it seems to cross-cut both agile and these like process waterfall process heavy things like cmmi um yeah so uh about the whole process thing and and you know i mean i'm in a pretty agile tdd xp kind of shop and i mean the whole thing with the tickets and stories is that each ticket should have user value right and it's sometimes can i ask you to back up for one second i think there might be people listening that don't know exactly what you mean by uh agile or xp probably a little bit less familiar so uh xp is extreme programming and so it's a lot of just kind of uh we do
Starting point is 00:24:07 everything pair programmed um everything is test driven there's no like we can't really submit code without tests um and and we're just like an agile shop so uh i i want to make sure that i'm actually defining as agile is and not just how we do it i'll just explain how we do it um we do uh two week iterations like sprints and you know retro we do have story time in the between and um oh no sorry i'm having some cat issues that is adorable uh okay um where was i right so two week iterations and everything is kind of done via stories kind of like um what dave was saying and i don't know is that a good summary i don't know uh i don't know every time i hear the word extreme programming i just think of like it sounds really radical doesn't it right people
Starting point is 00:25:09 jumping out of planes with like their fingers extended in the rock and roll gestures yeah it sounds way more intense but a lot of it is that we we pair like nothing really gets into the code without uh without being paired right so that's what we do um what else uh we we actually don't have like a qa like we don't have that at all um we like because we have everything test driven we we just kind of use that that makes sense so unit testing and i mean in the absence of that it would be like code reviews but we don't really do that and then you know continuous development things like that there's also just the yeah the ongoing speed metal soundtrack yes all code is written yeah it's an open floor plan and then there's just like death metal playing it's pretty intense
Starting point is 00:26:01 sometimes i can convince them to play like nordic death metal which is a little bit more somber but special occasions i can just see like people's hair blowing by the subwoofer as they're focusing on their programming yeah it's very intense but it's it's i don't know it it's um it's hard to get used to but it's it's fun i like it you know you're really locked in with a pair when you start headbanging at the same rhythm that's when you're in a flow state they know not to talk to you when you're headbanging but yes uh so the whole idea is that uh back to the process thing is that every story is technically supposed to be user facing like what kind of value are you delivering to the user
Starting point is 00:26:45 and it's hard to kind of say that you know we're doing this off kafka upgrade it's hard to kind of sell that as like a user-facing value um which is i mean you you can say it is like if we don't do this upgrade in x amount of x time you're gonna have to have more developers rip kind of out this whole infrastructure to replace it um but there's something about just kind of doing that refactoring in the context of a story so you're just kind of cleaning up where you are you're in a bit of code and you have to update a bit of things you refactor that function and you clean up that unit test so that it makes more sense and kind of rolling it into the current work that you're doing so do you do you get your product owner's permission to extend the time span for a single
Starting point is 00:27:32 story in order to do these tasks or do they are they just blissfully unaware we do like estimate things up front and so a lot of times we will say like this part of code is is very old i work in a pretty big legacy system too it's like this product code is really old and it's going to cost us to go and update this feature because maybe this feature can't even be done in this current system so we might have to do some refactoring and um we we let them know sometimes and like you know sometimes it's a hard pill to swallow and sometimes like sometimes the product owner will say you know we can't do that right now and and that's when you clearly explain to them like you are cutting a corner right now and you need to be willing to accept what happens afterwards right you you have
Starting point is 00:28:20 to be accepted like technical debt has cost and you have to like your job is kind of like when you're estimating things is you're saying this is what you'll cost you and as a product owner you have to weigh those costs right and see like as an example is like okay if you choose not to do this now you may go out to the parking lot this evening and find your tires don't have any air uh yes that's when you flip the switch over to was it nordic black metal yes yeah i might have said noric um norwegian black metal where it gets really scary and somber um no it's just where you say like we're not going to upgrade this thing but you know we're going to be three versions behind and you know they're going to deprecate this system and we're
Starting point is 00:29:04 going to be behind and it'll just be more painful down the line and i mean we've done it we've had to have occasions where we have we have to have the whole entire floor take a day off so that we can upgrade this entire system and you know you eventually have to explain to your product owner your product in general like you can avoid all of those hours of uh developer time which is money for the company where they could have been doing other things not spending that whole day doing that if you had just you know allotted a bit more time earlier yeah it's a battle that you you gotta of it's like picking your fights right yeah i feel like i really like what you said about couching it in terms of cost to the company if they don't do it because i don't know i'm a
Starting point is 00:29:49 developer i know that there's part of me that just wants to go fix everything all the time and there's always something new and shiny out there and and if you just ask me like hey what should you work on to make this better there's a chance that the the list is infinitely long of things that that would make it better but um i don't always just immediately think of it in terms of cost to the business and what would be most effective so i think if if you really want to justify investing in technical infrastructure or dev tooling or things like that the the easiest way to speak that to the business is in terms of money and loss productivity can often be a thing like speed of deploys or speed of onboarding engineers or things like that um yeah but if
Starting point is 00:30:34 if you can somehow turn it into a number instead of just, I feel like there's a tendency to hear developers complaining about technical things and just think it's the developer crying wolf. Like, oh, they're developers. They always complain about tech debt. That's what they do. And so you need to kind of make it stick out from that a little bit. Yeah. I mean, I've done things where we will log, we'll log like how many hours we spent working on bugs for this one system that's technically not our domain right it's it's we have ownership of it but it's an old legacy system that keeps breaking and at some point we were saying like you know 30 of our story points for that agile week was spent on this broken system
Starting point is 00:31:18 so and this is spread across you know multiple multiple iterations multiple months so you can see how we're not releasing the product that you really want us to release faster because this old thing you won't let us go fix this old thing and we can estimate how much it'll take for us to just go and do that for a couple weeks to fix it um and and coming to them with like metrics it is like it takes time you have to take time out of your day to like set that up but a lot of times coming to them with the like this how many hours of my time which billable is this much because let's I work X amount of hours, and this is how much I'm paid. It's going to cost this. This is what it's costing you to not upgrade this. And you're doing CMMI level whatever,
Starting point is 00:32:03 so you have all that documentation. Yeah. Right? Yeah. I'm not even logging my time as much as they are, I suppose. But yeah, if I've learned anything, it's hard to explain technical debt to people who are not engineers. So you need to kind of frame it in terms of business value and money sometimes. You need to kind of frame it in a way that other people will understand. Totally. And I think the risk here is that you bury business people in detail that they not only don't care about, but it's frustrating to them to have just like so many little technical bits spammed to them.
Starting point is 00:32:42 Like, well, we need to refactor this and change that. We have to replace this legacy system and upgrade this infrastructure. And they're just like, whoa, whoa, whoa, tiger. I just need to know, like, how much time are you going to spend on this? And I think a good product owner, their job is to be a liaison between the engineering team and the business. And they can say things to the engineering team like, look, baked into every hour we work on this customer's project is X percentage dedicated to ongoing maintenance and operational improvements. And a.k.a. refactoring and infrastructure upgrades and all those things. if your product manager product owner can do that i think you can have a really good relationship
Starting point is 00:33:21 where you say here's the level of detail we're going to share with you here's what we're going to insulate you from and our commitment is to keep these systems fresh and easily changeable so that in the future when we get big sweeping requirements from customers we can implement them confidently the question asker feels concerned that there's not trust here where the product owner doesn't give them permission to do anything which basically means that they don't trust that it'll be actually useful so it feels like there could be something to explore there to try and increase the trust between product and dev yeah and and like you need to trust the product person too if they're going to be telling you these are the important things to work on then you should
Starting point is 00:33:59 be able to trust that there's a reason for that and it's not just them making it up as they go along it's probably a bigger question to answer though how do you generate trust there yeah that's a fundamental one I mean it's easier to develop trust when it hasn't been broken so I don't know in a perfect world you have you haven't broken the trust so your battery's not on low so you don't have to kind of recharge it and from there you can kind of um kind of just be like if you're willing to believe me if we do if we refactor this system it'll be easier when we have to do subsequent stories for xyz but if that trust is broken i don't know i don't like the idea of like surreptitiously refactoring things and cleaning it up but i mean it could just be that you could
Starting point is 00:34:47 you know limit a bit of refactoring when you're in a part of code to x amount of time and just kind of do it as part of your story and you know none no one has to be none the wiser yeah right one one of the keywords i'm latching on here is tinker and i think you know if you want to tinker with things um that sounds like something you would do on your hobby or on your free time but this is a business who is paying you to deliver value and if it's like well i just want to tweak this and change that if it's really worth your effort doing you should create an item in your backlog and you should track it and the team should agree that you should do it now if it's like a five minute thing and you're just fixing a little broken window that you saw that's
Starting point is 00:35:27 not what I'm talking about. But if it's if you're going to spend a day tinkering with the development environment, like I think you owe it to your business to track that. And I'll give you an example. So like last week, I encountered a gap in some data at work where I'm like, Oh, no, our software is not producing data in this one situation that it's supposed to be. I created a story, talk to the team, and I went ahead and implemented the fix. As I was implementing the fix, I found three other major refactoring jobs that needed to happen on our code base. And my instinct was just to launch into those jobs right away and be like, I'm just going to include these with my fix. The people reviewing my code will thank me for fixing all these unrelated things
Starting point is 00:36:06 at the same time. Exactly. And initially I did, I just went ahead and did it. I'm like, it's no problem. And then I realized my refactoring actually caused a bunch of issues. I had to roll back my changes and I decided, you know what, I shouldn't have done that. And so instead I put three new tasks on our backlog and I said, okay, we will prioritize these when it makes sense. and and i think you owe it to your business to be responsible about what you're delivering and how you're spending your time because otherwise it's just a hobby and and we love doing this like as engineers right like it's our like we we love just like being consumed by making it just a little bit better you know um but at the end of the day you are employed by a business and i think you owe it
Starting point is 00:36:41 to them to show a little bit more responsibility than just tinkering we talked last week about rock star developers and part of being a rock star is long self-indulgent solos where you just are like stand back everybody well i also really like the kind of point you brought up which is that when you did those refactors all in once it caused subsequent problems right which is kind of goes back to like when you chunked it out into smaller bits that were documented you can be more thoughtful about doing those things as well and you know make sure that when you do that one chunk it does it doesn't break everything else and it's it's kind of like that adding that additional process which like is really tedious and annoying and sucks because you just want to do the thing
Starting point is 00:37:27 actually makes it so that you do the thing better and cleaner and nicer and you slow down and you're not just playing heavy metal in the background um yep but it helps it helps i'm like one of those engineers who like really likes process to a certain extent i think it's a it kind of helps i find that it helps me when i write my code it's not always better it should never be that you're antagonistic with your product owner like so kind of back to this whole lack of trust right you don't ever have to like constantly feel like you're justifying making improvements like it always sucks to to kind of have to fight those battles you know and i've been there um but at the same end like the process also helps because
Starting point is 00:38:10 it makes you a bit more thoughtful and considerate about how you implement certain things yep the the question ends asking what's your opinion on the level of freedom that programmers should be provided in order to do their job well and it sounds like we're kind of arriving at a consensus that there's definitely some give and take where this this situation seems like it's pretty far to one end of the spectrum where there's absolutely no freedom to do anything besides what the product manager tells you and that seems weird ideally there's back and forth where you have input in what's important in the product including the vital role of surfacing technical issues so now that we've told you that your problem is solved now you can just do that let me just make
Starting point is 00:38:50 let me just make this comment that over the last like i don't know seven or eight years i have noticed a trend of control moving away from engineers and into the hands of product management where engineers are kind of relegated to this you just implement the spec I will write the spec a UX person will provide you pixel perfect mockups you just make it look like this Dave, sometimes I dream about living that life
Starting point is 00:39:14 or someone just tells me what to do I don't want to decide wouldn't that be nice I want less control yeah I accept I accept this trend but i i honestly believe that engineers who are more engaged in the process of defining the
Starting point is 00:39:36 product actually do a better job at producing good product because they do they can have good ideas to contribute and they can if they have like a full end-to-end understanding they can do they can make choices that a product manager wouldn't tell them to make but their context that they have helps them make better choices so yeah anyway i as much as it's nice to have someone tell you exactly what to do in your job every hour i push back on that idea quite a bit and i think programmers and product owners should be should be considered partners at the table defining the product not you know one subordinating to the other yeah i think it's always good to know enough about your domain to really question when something comes into your
Starting point is 00:40:15 plate because when you question it you can probably find the right answer um a lot of times people are like i want this and how do i explain it it's not like it's kind of like saying you don't really want that you think you want it because that's kind of how you've seen it but what if you ask the right question you can actually get to the bottom of what really someone wants and when you're engaged with your product an engineer can can really say like well do you really want to see the data in this shape because what is the question you actually want to answer and if that's the case then this is probably not the thing that you want to see you probably don't want to see the you know median you want to see the average i don't know that kind of thing right where you
Starting point is 00:40:57 really kind of drive down and that's something that you know your product owner might not be willing to ask because they might be wanting to please someone so you really it's good to have good domain knowledge to ask those questions and really drive to the point of what they really want yeah the the situation i described where someone knows all the right answers and just tells me what to do has never occurred in practice where the places i've worked where people have told me what to do in great detail there's still been huge gaps in uh in in design where there are still questions that need to be asked or in customer feedback or like if if your product owner is omnipotent then it's probably fine to do whatever they say without understanding it or questioning
Starting point is 00:41:37 it but anything besides that there's going to be they're not perfect and and the level of detail is not going to be complete to cover everything so i think that makes sense uh have we answered the question i think so good luck good luck with your capability maturity model integration let us know what the fabled level six is and beyond maybe there's more levels uh well you need to be at level five before you can know that jameson i'm sorry it's yeah maybe it's like more dimensions where our brains as they exist cannot even comprehend them you can't handle level six i can't even pronounce what is beyond level six in a way that you would understand your mortal language is insufficient level 11
Starting point is 00:42:22 it's the closest i can get uh what should people do if they want their own questions answered hit us up on softskills.audio and click on ask a question you can give as much detail as you'd like uh netta how can people find you on the internet or in real life uh well well uh in real life i live in selling california and i guess that's as much as i'll give you um i i exist on twitter but i'm not really um technical but you can follow me there it's my last name amini netta you can follow me there and i'll just talk about pop stars and share my thoughts when i'm drinking fantastic sounds yeah sounds delightful all right thank you so much and we will catch you next week

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