How Many CTOs?

Transcript: Navigating BADD vs. FaDD: Strategic Refactoring in Software Development

← Back to episode

0:00 Scott A risk of bad is the four most expensive words in the human language,

0:05 Scott while you're at it.

0:24 Scott Hey, Brad,

0:25 Scott how are you doing?

0:26 Brad I'm doing great. How are you doing, Scott?

0:28 Scott Good.

0:29 Scott Do you want to record a podcast?

0:30 Brad Yeah,

0:31 Brad let's do it.

0:32 Scott What should we call it?

0:33 Brad How many CTOs does it take?

0:35 Scott That's right. This is the How Many CTOs Does It Take podcast.

0:38 Scott My name is Scott Porad,

0:39 Scott and this is my trusty co-host.

0:41 Brad Brad Hefta-Gaub.

0:43 Scott Brad,

0:44 Scott I've got a question for you today that

0:45 Brad Yes, tell me.

0:46 Scott has nothing to do with AI.

0:48 Brad Okay,

0:49 Brad good.

0:50 Scott It might have something to do with AI possibly, but I don't think it does.

0:54 Brad All right,

0:54 Scott I'm

0:54 Brad I'm listening.

0:55 Scott sure AI will come up.

0:57 Scott I want to know what you think of the bad strategy versus the fad strategy.

1:02 Brad I'm going to have to learn more about the both of those strategies before I can answer.

1:08 Scott That's right.

1:09 Scott Let me tell you.

1:10 Scott Okay,

1:10 Scott so there is...

1:14 Scott A part of the system at the company I work at, the company wants to refactor. Well,

1:19 Scott it doesn't want to refactor at all. It wants some new functionality in that system.

1:24 Scott And in order to get it there,

1:27 Scott really the code needs to be refactored.

1:30 Scott Okay.

1:31 Scott It's a tangled mess as it is now because it's been hacked on for a lot of years and they want to add a lot of complexity basically to keep it really simple.

1:39 Scott Well,

1:39 Scott imagine if it's a one-to-one relationship now and they want it to be a many-to-many.

1:44 Scott It's just, it's all tangled and they're just going to make it more tangled.

1:47 Scott And so they're on board with, you know, they want to do this and they want us to invest the time to refactor it. We've been able to make that case,

1:54 Scott no problem.

1:55 Scott And a lot of this is actually we don't use the language refactor, we use the language modernize. So that's our issue.

2:03 Scott But let's set that aside.

2:05 Scott Okay.

2:05 Scott So of course there's, you can't go down this pathway without starting the conversation,

2:11 Scott should we start it over from scratch?

2:13 Brad That good system?

2:15 Scott And of course we entertain that idea for a week or so,

2:18 Scott and then we're like, this is nuts.

2:20 Scott We're not going to write it over from scratch. We need to refactor it. Okay.

2:22 Brad Right.

2:22 Scott So now there's two possible ways you can,

2:26 Scott well, there may be many possible ways you can refactor this, but there are two that I am currently debating.

2:30 Brad Sure.

2:31 Scott Let me tell you about the bad strategy and the fad strategy.

2:34 Brad Okay.

2:35 Scott They're acronyms.

2:36 Brad Okay.

2:36 Scott Bad is B-A-D-D,

2:39 Scott and it stands for Better Architecture Driven Development.

2:44 Brad Okay.

2:46 Scott And fad is also an acronym,

2:48 Scott but it's not a very good acronym because it doesn't have all the right letters, but for having a pithy choice,

2:54 Scott it fit.

2:55 Scott And fad is feature-driven development.

3:00 Scott There's no A in it.

3:02 Brad Now it's FDD fad.

3:04 Scott It is FDD,

3:05 Scott but I threw that.

3:07 Scott It's really,

3:07 Scott okay, well, let's talk about these things.

3:11 Scott The fad is,

3:12 Scott I think, what we commonly do,

3:14 Scott which is we say,

3:16 Scott okay,

3:16 Scott we want this system to work in this new way,

3:19 Scott so we're going to refactor it.

3:22 Scott As we add these capabilities to the system,

3:25 Scott we are going to refactor along the way so that we deliver the thing that we want to deliver.

3:32 Scott The bad strategy says, no,

3:34 Scott no, no.

3:35 Scott Refactor that thing and just make it work good the way it is,

3:39 Scott and then after it's been refactored, add your new capabilities on top of it.

3:45 Brad Okay.

3:46 Scott Now, I want to know what you think. Are you a bad guy or a fad guy?

3:51 Scott And I know your answer,

3:53 Scott which is it depends.

3:54 Scott So upon what does it depend?

3:57 Brad I Or don't know.

3:58 Scott should we just explore the pros and cons Let's of bad and explore fat?

4:01 Brad the pros and cons because I'm not sure.

4:03 Scott Let me give one more piece of context.

4:04 Brad Yeah, sure.

4:06 Scott I have always been a fad guy.

4:08 Brad I've never felt like I've been asked this question before,

4:10 Brad so

4:11 Scott Yeah.

4:11 Brad I was taking a moment to check in with myself to sort of like,

4:16 Brad wait,

4:17 Brad what do I think about?

4:18 Brad Like, I definitely couldn't just like shoot from the hip on this one.

4:25 Brad I

4:25 Scott Okay,

4:25 Brad had to check in.

4:26 Scott let me give you some more context.

4:28 Scott So I've always been a fad guy.

4:29 Scott If you're going to refactor, you refactor in a direction and the direction is toward the capabilities that you want.

4:37 Scott But I was challenged on that in the last couple of weeks by the funniest of people,

4:42 Scott by the CEO and the chief product officer

4:45 Brad Interesting.

4:45 Scott of the company I

4:46 Brad Yeah,

4:46 Scott work

4:46 Brad yeah, yeah,

4:47 Scott at.

4:47 Brad right.

4:47 Brad Right.

4:47 Scott I wasn't quite challenged. They didn't intentionally challenge me.

4:51 Scott They just said, well, why are you doing it that way? Why aren't you going to modernize it first and then build it?

4:57 Scott the new stuff on top second that seems like it would be easier and i did all i explained all the reasons why you don't do that right because this gives us actually need to take a step further back i've been pounding the table like hey if you want us to refactor this thing we need some product requirements we need to know

5:16 Scott And not just like product requirements for this little tweak you want us to make, but like long term, where do you want to go with this new

5:21 Brad Right

5:22 Scott set of capabilities you want us to have here so we can start building in that direction. They've been saying, why do you want to know that? Aren't you just going to you're just modernizing it. Right. Then after you're done modernizing it, then we'll add the new capabilities on.

5:33 Scott And then I explain,

5:34 Scott well,

5:34 Scott no,

5:34 Scott no,

5:34 Scott we need to do this in a direction. If I give the engineers a blank check,

5:38 Scott they're just going to fix a bunch of stuff and we're not going to get anywhere.

5:41 Scott And, you know, I

5:42 Brad Well,

5:42 Scott mean, like the

5:43 Brad like yeah,

5:43 Scott engineers would love to do it that way, but that's not the best way for the business.

5:47 Scott But then I thought to myself,

5:48 Scott I mean, these two individuals are not dumb.

5:52 Scott They're executives at a pretty big company.

5:55 Brad I totally yeah

5:55 Scott should reflect upon that for a second. Is there something I am missing?

5:59 Scott Why am I a fad guy and not a bad guy?

6:02 Scott And so I've got some further thoughts on that. I can tell you, I can lay more out, but it seems like you got some thoughts.

6:09 Brad yeah so I've had time to check in with myself um

6:12 Scott Great. Let's hear it.

6:15 Brad I feel like the very first reaction that I had well actually when you said I've always been a fad guy that like a little thing went off in my brain going yeah I think I've always been a fad guy too so then I was like okay what why why is that

6:35 Brad i mean bad the the bad better architecture driven development like that feels like second system that's like screaming second system to me and it's funny i actually have this memory oh my god this is so long ago this is 20 years ago at real networks more than 20 years ago because i've been gone for more than 20 years but i remember

6:59 Brad There was a point where essentially one of the dev teams kind of was like, we're going to rewrite everything.

7:07 Brad And they were kind of like this little,

7:09 Brad you know, kind of pirate group,

7:12 Brad you know, they were kind of like they had their their their their leader, their VP level leader was like, screw everybody else, we can do it our own way.

7:22 Brad And.

7:23 Brad They basically effectively made a better architecture argument.

7:31 Brad Like stuff has changed since this code was written.

7:35 Brad There's better ways to do this. It's become this big monolith.

7:38 Brad Why don't we start over and build the small thing?

7:42 Brad And they got a demo working of the top veneer of the features that mattered.

7:51 Brad enough just enough to kind of like keep the momentum going and then they just they got stuck in the churn of trying to build all the new features so it was like classic second system effect well

8:04 Scott Yeah, that's second system. I don't think that's what bad is. Bad is not second system.

8:09 Scott But here's

8:09 Brad okay

8:10 Scott what I envision bad being.

8:11 Brad tell me

8:13 Scott Okay,

8:13 Scott you've got a monolith.

8:15 Scott you're going to decompose this into well let's say let's not even decompose it you've got a monolith with a bunch of spaghetti code we're just going to go in there and like we got these methods that are 2,000 lines long and that are recursive and that are all messy and we're just going to refactor this code it's we don't want it to do anything differently than it does today we just want it to be easier to work with

8:37 Scott We've got a monolith, a bunch of code and a giant repo with millions of lines of code. We're going to decompose this into, let's just say, half a dozen different macro services and they're going to talk to each other through some communication mechanism.

8:50 Scott And so I will have a smaller footprint to finish with.

8:53 Scott So we'll just have a better architecture.

8:55 Scott We're going to document our APIs and

8:57 Brad yeah

8:57 Scott we're going to have right APIs.

8:58 Brad but this but this is the but this is yeah but hold on a second so like

9:02 Brad When I hear someone say,

9:04 Brad let's do a better architecture,

9:06 Brad I hear that. And even when I hear you like it'd be one thing if it's like.

9:11 Brad like i mean i i'm i'm dealing with this with one of the one of the teams that i'm working with where we've got just a file that's like 3 000 lines long and it's like oh my god like who let this file get so big well let's start peeling pieces out of it and you end up changing like of course you're not trying to change the behavior but but when you like are like hey this file has become monolithic

9:37 Brad itself is too big let's make let's pull out the helper classes let's pull out you know a bunch of these functions and make them tiny little helper classes instead right like maybe i i guess are you saying that's that's not second system but that's but that's better architecture is

9:54 Scott That'd

9:54 Brad that i

9:55 Scott be an example of refactoring in order to make the code better.

9:58 Scott Don't get too hung up on the word architecture.

10:00 Scott I mean, I was just, you know, I had to come up with some pithy names for these things,

10:03 Brad see

10:03 Scott right?

10:03 Scott Right.

10:03 Scott But,

10:04 Scott you know,

10:05 Scott like you're basically saying to the team, look,

10:07 Scott we want to make this code right now. You're saying it takes a long time to build things because the code is a ball of mud.

10:13 Scott Right.

10:13 Brad Yeah,

10:13 Scott It's

10:13 Brad right.

10:13 Scott your spaghetti code.

10:14 Scott Fine.

10:15 Brad You just go in

10:15 Scott We're

10:15 Brad and unmod

10:15 Scott going to spend a bunch of time and making it.

10:17 Scott What's that?

10:18 Brad unmod it

10:19 Scott Yeah,

10:20 Scott we're going to unmud it.

10:21 Scott That's what we're going to do.

10:22 Scott We're going to make the messy things unmessy. We're going to make the spaghetti untangled and we're going to make it a lot easier.

10:27 Scott And then after we've done that for a while,

10:30 Scott we'll define what maybe what good looks like there.

10:32 Scott But after we've done that,

10:35 Scott then we'll go.

10:36 Scott Now it should be easier to work with, right? Then we'll go add in the stuff that the business wants.

10:40 Brad Yeah.

10:41 Brad Man,

10:42 Brad I don't know. I'm feeling.

10:46 Brad I'm feeling uneasy about this.

10:48 Brad You sort of said something a few minutes ago that I think is maybe the articulation of what I'm feeling uneasy about.

10:53 Brad You said something like, if I don't give the developers a direction,

10:57 Brad they're just going to go do stuff that

10:59 Scott Yeah.

10:59 Brad is not necessarily,

11:01 Brad it just maybe makes them feel better.

11:04 Scott Yeah.

11:05 Scott Like, well, let's go back to what are we trying to accomplish?

11:08 Brad Yeah.

11:09 Brad I mean, you said something earlier about what the business goal was.

11:14 Brad It's like essentially pivoting from like a one-to-one relationship to a many-to-many relationship.

11:20 Scott That's not really what it is. That's just an illustration of like, imagine you had some complex thing and then that's what they wanted to do, right?

11:28 Scott You'd be like, oh my God, we're going to just make this a really tangled ball of mud.

11:31 Scott No,

11:32 Scott it's what's practically happening is the business is saying we want this capability.

11:37 Scott engineering is saying okay it's going to take you this long to get that business is saying that's going to take us too long how could you get it faster the engineers are saying well if this system wasn't so crappy we could get we could build it for you faster like if we weren't having to deal with this ball of mud

11:51 Brad Yeah.

11:51 Scott and and the and the business is saying cool fix the ball fix him up great

11:55 Brad development.

11:56 Scott yep

11:56 Brad Yeah.

11:57 Scott they're saying great fix them we're happy to we're happy to have you fix the ball of mud because you're going to have if it isn't now it's going to be the next thing we want you're going to have to fix it so great fix the ball of mud and then we've arrived at this question of like well how do we fix the ball of mud and the first question you ask is well should we start from scratch and you entertain that for a little bit until you realize that's a fool's errand and then you get to the next thing

12:17 Scott thing which i've always taken the fad approach which is like okay we're going to define what we want the product to be like the software to be like and then as we build towards that we'll refactor along the way to make it less money and i was i used the word challenged i mean i'm the one who took the challenge i don't think they meant to challenge me they were just asking like

12:37 Brad So why

12:38 Scott we

12:38 Brad are you doing

12:39 Scott thought

12:39 Brad it that way?

12:41 Scott Well, they didn't even say why they were just like I assumed you were going to do it this way Why are you doing it? Yeah, I assumed you were going to do it this other way like

12:47 Brad modernize

12:47 Scott just to come it in

12:47 Brad then add features well

12:49 Scott right

12:49 Brad i want to try to like i i think this is a super interesting question and i feel like

12:54 Brad I feel like it's worth me challenging why am I uneasy about this?

12:58 Brad Like, what am I uneasy about?

13:00 Brad And I think maybe,

13:01 Brad like,

13:02 Brad let's go down this better architecture driven design approach for a second. Let's go down that. Let's let's

13:07 Scott Let's

13:07 Brad try to explore

13:07 Scott talk about pros

13:08 Brad what.

13:08 Scott and cons.

13:08 Brad Well,

13:09 Brad no,

13:09 Brad before we talk about the pros and cons,

13:11 Brad let's make sure we're clear on what that would look like.

13:15 Brad I'm feeling I'm kind of feeling a little my kinesthetic learning brain is kicking.

13:21 Brad kicking into full gear here and i'm like what would this look like and feel like what would this mean like how

13:28 Scott Here's

13:28 Brad would what would

13:28 Scott what I think

13:28 Brad we yeah

13:29 Scott it would look like.

13:29 Brad yeah tell me

13:31 Scott It would, I mean, I don't have the definitive answer,

13:34 Scott but I think these are some things that it would look like.

13:37 Scott It would have,

13:38 Scott at the architecture layer,

13:41 Scott it would take the monolith and break it into,

13:44 Scott let's just say, half a dozen major chunks.

13:47 Scott meaningful domains and those chunks would communicate via messages with each other at the code layer it would look like let's just call it

14:01 Scott fixing a lot of the unbest practices but the worst practices right the get getting rid of the you know taking the 3 000 line files and fixing them those kinds of things that the code you know this is a system that has a lot of it's written in ruby and ruby sort of it uses a ruby on rails and so it has this active record spawns these events you know on save and on update and on these things and people have tapped into those

14:28 Scott into those and it makes navigating the code very complex and so maybe you straighten some of that stuff up so that people who are trying to reason about how the system works it might not be taking advantage of all the ruby and ruby on rails magic but it would be for a large team of developers it would be easier to reason about you would write documentation or have ai write documentation for you so that people understood how the things work you know you do those kinds of things you maybe would refactor

14:53 Scott refactor some of your databases like your database well you certainly as you broke at the architectural level as you broke your system into domains you'd separate out your data but even within a given domain when you're refactoring code you might say look the way these tables are constructed

15:10 Scott isn't is inefficient or it doesn't make sense anymore i think ultimately so what are you trying to do like conceptually what you're trying to do is make it faster for engineers to develop

15:22 Scott So strategically, what you're saying is if I can create smaller components and within those components, they can follow more of the best practices,

15:29 Scott you know, all the things from test automation on down,

15:32 Scott then it'll be easier and faster for engineers to get things

15:35 Brad Right.

15:35 Scott done.

15:35 Scott That's

15:35 Brad Okay.

15:35 Scott the idea.

15:36 Brad Okay,

15:36 Brad cool.

15:37 Brad So I,

15:38 Brad that's, I'm, that sounds like a really good answer.

15:42 Brad What pops into my mind is, for example, I was working with this, you know.

15:48 Brad my the team i spend almost all my time with is a team that we recently were like god we've got these 3 000 line files we should figure this out we should basically like modularize this stuff and so as a team we wrote up like a working agreement to use your language about code modularization and we're like guiding principles you know single responsibility principle low coupling high cohesion maintainability test right so we like wrote up

16:13 Brad wrote up a working agreement there and i could totally imagine a world where maybe you already have those like coding standards or guide you know kind of architecture like like because to me right like this this is like this is like totally you know giving uh the the conversation that we had with ted neward about like um look there are no such things as best practices there's just practices that as a team you've agreed to you

16:37 Brad Right.

16:37 Scott Sure.

16:38 Brad And so the first step is like, OK,

16:40 Brad do we have working agreements on all of our what this code, what what good architecture looks like, but what better architecture looks like?

16:48 Brad And then I guess I could totally imagine a world where like you basically get a whole bunch of like we're all aligned on these.

16:54 Brad what better architecture looks like and then we essentially go on a module by module basis component by component basis file by file basis and we you know we somehow like score it and say yep this one is not meeting our definition of better architecture ted you get to go re-implement this file to have single responsibility principle

17:22 Brad And

17:22 Scott Sure.

17:23 Brad Ted gets to own, you know, whatever, whatever scale task that is for that file or,

17:28 Scott Yeah,

17:28 Brad or, or, you know, work through it.

17:31 Brad Is that kind of what, what

17:33 Scott it could be

17:34 Brad looked just like like.

17:34 Scott that.

17:35 Scott Or you could take it from the perspective of pain points, you could ask your team, well, what makes it hard?

17:39 Scott And they might say,

17:40 Scott well, the fact that we have files that have 10 different concepts in them makes it really confusing to figure out how stuff works.

17:47 Scott So maybe

17:49 Scott So you can take it from that perspective,

17:50 Scott like there's a lot of ways you could get in like Ted said you just agree on what you want to agree on whatever the best practice is that we're going to single responsibility or no files bigger than a thousand lines or whatever it is right.

18:03 Brad Right.

18:04 Scott Tabs, not spaces,

18:05 Scott you know, spaces,

18:06 Brad Yeah,

18:06 Brad totally.

18:07 Brad Well,

18:07 Scott not tabs.

18:08 Brad I'm also a big believer that anything that can be enforced with lint and prettier.

18:15 Brad We should just enforce

18:16 Scott Sure.

18:17 Brad with lint and prettier.

18:18 Scott Well,

18:18 Scott I was just joking about the tabs and spaces thing. But yeah, I think that's exactly the approach you would take.

18:25 Scott And it seems like, you know,

18:27 Scott what are the pros?

18:28 Scott It's really like you can determine if it was done correctly,

18:32 Scott meaning does the system work the same way it worked before?

18:36 Scott You're not.

18:37 Scott you're not trying to do two things at once you're just trying to you know there's some of the interesting things about software or some of our principles of software engineering like you know only try to do one thing at a time don't make a commit that does two things make commit that does one thing so it's easy well fundamentally with fad we're trying to do two things at a time with

18:57 Brad Yeah,

18:57 Scott bad we're trying to do one thing at a time right that's those are pros

19:01 Brad I would argue that.

19:03 Brad That there's a step that both these approaches require,

19:07 Brad which is your first step,

19:08 Brad which is alignment on what the better architecture is.

19:11 Brad So maybe,

19:12 Scott Yes.

19:12 Brad you know what I mean, like if you really are going to do fad correctly,

19:16 Brad then you do have to agree on the better architecture before you even start building new features.

19:22 Brad Because you

19:22 Scott Absolutely.

19:22 Brad said you were going to build the new features with the better architecture.

19:26 Brad So that's

19:26 Scott Well, so you have to agree on the architecture on both sides.

19:29 Scott But on one side, you don't have to agree on the product requirements.

19:34 Brad fair.

19:34 Scott You just need to make sure you don't break it.

19:37 Brad and and and were you partly inspired by this because I think this way you told the story was you're like yeah okay let's go down this road by the way we need to know what the what your vision and product requirements are and

19:47 Scott Yeah, I've been

19:48 Brad they were

19:48 Scott pushing

19:48 Brad like

19:48 Scott on

19:48 Brad well

19:48 Scott the product requirements.

19:49 Brad wait why do you need that why do you need that don't you want to like modernize it

19:53 Scott Yeah,

19:54 Scott that's exactly right.

19:54 Scott I've been saying we can't get started until we write the requirements.

19:57 Scott And they've been like, well, why?

19:59 Scott organizing it first i was like well yeah we are modernizing but we need to know like what we're working toward and they're like well don't you modernize first and then we add on the stuff we want and i explained oh no that's not why you do it because you know if we do it this other way we get the business value faster because maybe you get some incremental gains along the way and we get the scope right so that we're not building stuff that doesn't matter and um

20:22 Brad But

20:23 Scott you

20:23 Brad then there are, yeah,

20:23 Scott know

20:24 Brad so I agree.

20:24 Brad I obviously agree with all that stuff, and that's why knowing

20:26 Scott Yeah

20:27 Brad the direction you're going.

20:29 Brad You know, because there's like there's always six ways to do something,

20:32 Brad all of which are not wrong, but

20:34 Scott Right.

20:35 Brad one of them is going to, you know, some of those will improve your chances of doing the future thing and others will make it harder to do the future thing.

20:43 Scott Yeah.

20:43 Scott And I made the argument like, you know, hey, it's like you're asking me to, hey, you want to add two bedroom, you got this old rundown house and I want to update the whole house and add on two bedrooms and you're asking me to update the whole house.

20:55 Scott And then once that's all done, have

20:57 Brad But

20:57 Scott the construction

20:57 Brad add

20:58 Scott crew

20:58 Brad the

20:58 Scott come back and add the two bedrooms and nobody would do that,

21:01 Scott right?

21:03 Scott So here's a few of the thoughts.

21:05 Brad But they also but, you know, I guess if we're using our house renovation analogy,

21:10 Brad it wouldn't be wrong to say, but wait, you just told me there was knob and tube wiring all over the existing infrastructure and.

21:18 Brad You know, you're like, that's not modern. Let's put true new modern electrical in.

21:24 Brad You could certainly do that to the part that's standing,

21:27 Brad even though we haven't done the design on the new addition.

21:34 Scott Yeah, you could.

21:37 Scott unless you thought well i used a let's actually not use an addition because that's not what we're talking about here by the way as an addition we're talking about remodeling the layout of the house we're

21:46 Brad Yeah, we're going from

21:46 Scott remodeling

21:47 Brad we're

21:47 Scott the kitchen going this

21:47 Brad from to

21:48 Scott is actually open we

21:48 Brad open floor plan

21:49 Scott work well actually let's do this way we want to totally update this kitchen make it modern new appliances you know the best in the best in refrigeration that you can possibly have and then after it's done we're going to get rid of all that

22:02 Scott that and we're going to come in and put in a new kitchen with like an island and a better cutting board and all sorts of stuff right that's kind of what it is okay

22:08 Brad Yeah, that would be nice.

22:08 Scott so here there's just two other thoughts that come across my head a risk of bad is the four most expensive words in the human language while you're at it yep

22:25 Scott And so one risk of fad is that your business

22:27 Brad Or

22:28 Scott doesn't

22:28 Brad what, is it,

22:28 Scott have the discipline,

22:28 Brad it's, wait,

22:29 Scott I'm sorry, bad,

22:29 Brad wait, wait.

22:30 Scott a

22:30 Brad Yeah, okay.

22:31 Scott risk of bad is that your company doesn't have the discipline to actually do it, right?

22:36 Brad Yeah, so you end up fatting.

22:38 Scott You end up fatting, but you end up fatting without good requirements because your engineers have got the patient open and they're like, oh, and now you want me to stick in the new refrigerator?

22:47 Scott Okay,

22:48 Scott well,

22:48 Scott I guess I'll just hack this in here.

22:51 Scott That's one risk.

22:52 Scott Another risk is, so you do it. You're at the end of the modernization.

22:57 Scott The house,

22:58 Scott the kitchen,

22:58 Scott it's all sweet.

22:59 Scott And the business is like,

23:01 Scott what did I get for that?

23:04 Scott Well, now we can build stuff faster.

23:06 Scott Okay,

23:06 Scott cool.

23:07 Scott Now I want you to build this new thing.

23:08 Scott Okay, well, that's going to take eight months.

23:10 Scott Well,

23:11 Scott I thought it was going to be a lot faster than that.

23:13 Scott Well, before it was going to be.

23:15 Scott 18 months now it's 28 months they're like yeah but I wanted it like in two or three months right

23:19 Brad Yeah, yeah, totally.

23:20 Scott so there's there's

23:20 Brad I think

23:21 Scott a risk

23:21 Brad that's I think that's your biggest risk.

23:23 Brad Like you might have oversold how much easier this is.

23:26 Brad Some stuff

23:26 Scott I

23:26 Brad is

23:26 Scott haven't

23:26 Brad hard to

23:27 Scott sold

23:27 Brad do.

23:27 Scott it at all I don't I don't know I literally couldn't tell you how much faster it's going to go because

23:30 Brad No, no, no, I just mean,

23:31 Scott don't know what you want me to build

23:38 Brad yeah,

23:39 Brad that's yes,

23:39 Brad yes,

23:40 Brad yes, yes.

23:41 Brad I think that like.

23:43 Brad Yeah, man.

23:44 Brad I

23:45 Scott Okay,

23:45 Brad mean,

23:45 Scott wait, here's another wrinkle.

23:46 Brad okay, tell me.

23:48 Scott Is it possible that we,

23:50 Scott and I said like almost every person I've talked to about this has said fad. Every engineering leader has said fad.

23:59 Scott Is

23:59 Brad That's

23:59 Scott it possible?

23:59 Brad where I felt the pull to.

24:03 Scott It's totally, it's totally where I go to totally was okay.

24:07 Scott But is it because of this? I have never been able to successfully sell.

24:13 Scott bad to the business stakeholders and

24:15 Brad Yeah, you're

24:16 Scott then the occasions that i have like it's been a little disappointing but i've never they never buy into that because they're like well what am i going to get for my money and you're like you're going to get faster stuff how much faster i don't really know they're like no i'm not going to do that so in order to actually do modernizations in my career i've had to learn the technique of bad which is okay you want this thing we're going to add a tax to this thing which is doing the modernization work and you can't

24:40 Scott You can't remodel the kitchen without doing the knob and tube wiring.

24:45 Scott So we've got a tech.

24:46 Scott And so we've learned how to do fad because it was actually the only way that we could do the modernization because

24:53 Brad Modernization.

24:54 Scott we couldn't ever quantify or express the value of the modernization.

24:58 Scott And I now find myself in a unique situation.

25:01 Brad Your bluff has been called.

25:03 Scott It's not even a bluff.

25:04 Scott It's just like I'm not having to sell it. They're actually saying,

25:06 Scott why aren't you taking it?

25:08 Scott And I was so thrown for a loop. I was like, wait a second, why aren't I taking it?

25:13 Brad Right.

25:14 Brad Why aren't

25:15 Scott So

25:15 Brad you taking

25:15 Scott I wonder

25:15 Brad it?

25:15 Scott if it's just like I'm scarred. I got like, you know, wounded puppy or abused puppy syndrome.

25:20 Brad Right.

25:21 Brad Right.

25:22 Brad Right.

25:24 Brad We're just trying to give you some wet food.

25:26 Brad I don't know what you're so skittish about.

25:30 Scott And so here's another puzzle piece.

25:32 Scott as i said every engineering leader i've talked to including ones inside my own company they instantly go to fad they were like well that's crazy because they've all had the same experience that i've had in their careers which

25:44 Brad Right.

25:44 Scott is like oh bad is terrible every time we've ever tried to do bad every time we propose bad they shut us down and even we do it

25:52 Scott They get impatient and cut it off partway through,

25:54 Scott so we actually never get the value from it.

25:57 Scott So

25:57 Brad that

25:57 Scott that we've

25:57 Brad that's

25:57 Scott missed learning

25:58 Brad like that

25:58 Scott to do fast.

25:58 Brad right there is a real that's a real concern that right

26:02 Scott Yeah,

26:02 Brad there is

26:02 Scott it is real concern.

26:02 Brad because you get halfway halfway done with the bad and you've got nothing and then they get then they get skittish and and stop it like that's that's like i think that's a real legit concern

26:12 Scott As a matter of fact, I have that in two places in our system right now.

26:19 Scott before I started at this company they went about upgrading from some front-end framework to another front-end framework of course only finished two-thirds of it and so now the front-end developers are frustrated they got to deal with both not only do they have to deal with the bad one they deal with the bad one and the new one right that's the worst of both worlds and

26:39 Brad Right.

26:40 Scott then we have a project where we were

26:43 Scott rebuilding refactoring a key part of the system and wanting to extract it out of the monolith and their idea was we'll build it inside the monolith first and then extract it out well they finished about 80 of it inside the monolith and then stopped so they got now they have this particular subsystem there's two of them running both inside the monolith side by side and so they first they got to finish it and then they got extra and so

27:08 Scott every you know on the first case which was purely bad um they just didn't get finished the second case was actually fad and it didn't get finished and in this case you got business stakeholders saying like what those guys worked on that for like three years you're telling me it's not done hundreds

27:24 Brad Yeah, 100% agree with everything you just said. I've seen that happen hundreds of times. It's like, of course gonna happen.

27:29 Scott of

27:29 Brad It's of course gonna happen.

27:30 Scott course

27:31 Brad So the question then is,

27:35 Brad So as we were talking about this earlier,

27:37 Brad I was imagining,

27:38 Brad well,

27:39 Brad maybe what you do is you.

27:42 Brad You do these working,

27:43 Brad you agree,

27:44 Brad you come to agreement within the team about what good architecture is, what better architecture is.

27:49 Brad You stack rank the, and I love your point,

27:52 Brad like ask them what's taking them, you know, ask them what's hard,

27:54 Brad ask them what makes it hard.

27:55 Brad You stack rank the stuff that's going to make the biggest difference to the developers'

27:59 Brad productivity and velocity,

28:01 Brad right?

28:01 Brad Like that's what this is all about.

28:02 Brad This is all about can we make it more high velocity developers,

28:05 Brad right? Because you're not, because I'm assuming that you're not dealing with the...

28:09 Brad the rickety system that has these you know hard to you know constantly falling over bugs right but but but even if you had that it wouldn't matter you still do an analysis where you're like what's the thing that as a team we genuinely believe that if we make progress against these goals we will have higher velocity

28:30 Scott Yeah, one

28:30 Brad And then you rank those things like which ones do we to the best of our professional ability believe are going to make the biggest difference in velocity.

28:39 Brad And then.

28:41 Brad You you bite size those and you you know, what's the saying?

28:46 Brad How do you eat an elephant?

28:48 Brad One bite at a time.

28:49 Scott bite at the time. Yeah.

28:50 Brad And so you you've set a set of you've you've created a punch list.

28:57 Brad or like a meta punch list that

28:59 Scott Hmm.

28:59 Brad is that is to the best of your professional opinion the thing that's going to increase velocity the fastest and you start working through that punch list and each point along the way you make sure you've you've you've hit a checkpoint that you've made a difference and then before you move to the next bite right and then at any point along the way

29:24 Brad You're able to stop.

29:25 Brad You're able to stop working on it and move on to back to features.

29:31 Scott Yeah,

29:31 Scott I think what you're saying is if you go down a bad route,

29:34 Scott you really need to be incremental so that you can stop.

29:38 Scott You need to swarm around things and get them finished, not have many things in flight that are partially finished.

29:45 Brad And then.

29:49 Brad as you're doing that features can also slot in so long

29:53 Scott Mm hmm.

29:54 Brad as the features are done following the better architecture agreements and

30:00 Scott Yes.

30:01 Scott Don't

30:01 Brad so

30:01 Scott make it worse.

30:02 Scott Stop digging the hole deeper.

30:03 Brad yeah and so i sort of was like that's how i would that's how i think i would approach it and i was like maybe that's something like

30:13 Brad Bad wafad.

30:15 Brad It's like, it's

30:16 Scott It's a version

30:18 Brad bad with fad.

30:18 Scott of hybrid.

30:19 Scott It's

30:20 Brad It's

30:20 Scott a version of hybrid.

30:21 Brad It's bad, not fad, not

30:25 Scott The

30:25 Brad bad.

30:25 Scott hybrid I've had in my mind is slightly different,

30:28 Scott which is there are parts of the system where you might want to do bad. So like that front end framework.

30:38 Scott thing i was just talking about that was just bad right that was just like we used i don't even know what the frameworks really we used angular and now we want to use react like that's just i mean i don't know if that's a trade-up or not but like the it might just be a lateral move so yeah

30:52 Brad don't get the listeners fighting with each other it's

30:54 Scott i don't want to obviously not not

30:56 Brad answers

30:56 Scott trying to start

30:56 Brad obvious no it's spelt is obviously the right answer i mean come on

31:00 Scott right so exactly of course so i'm not trying to get in a fight here i'm just trying to say like

31:05 Scott That's just bad, right?

31:06 Brad Better

31:07 Scott We just architecture. want to better architecture.

31:09 Scott Hey,

31:10 Scott we've got two mobile apps.

31:11 Scott One of those mobile apps talks to our backend via GraphQL and the other talks to the backend via REST.

31:18 Scott You know what? We're going to make them just both talk the same way.

31:21 Scott I don't care which one, but why do we maintain two interfaces for this is silly.

31:25 Brad Yep.

31:25 Scott Setting aside that you might want a BFF for each app separately,

31:30 Scott the point is.

31:31 Scott it just adds complexity to the whole thing i now have to know two things and think about it differently etc um taking that piece of that component that i just mentioned a few minutes ago that's 80 done just finish it and extract it any extractions are just bad certain extractions are just bad just like just take this chunk extract it take this there's no there's no but there's some pieces like when we were talking about the one-to-one versus the one-to-many piece earlier

31:58 Scott That might be a fad where we say this piece,

32:03 Scott actually, we do want new functionality here.

32:06 Scott And so we're going to do fad on this one.

32:12 Scott And let's be intentional about that.

32:14 Scott Let's not do fad everywhere.

32:15 Scott Let's do fad where we think it's high leverage or high value.

32:20 Brad Yeah, and it's so I feel like there's two pieces of this hybrid strategy that we're kind of coalescing on.

32:30 Brad One of them is never just.

32:34 Brad open up the entire system and put everything on you know just never never take the whole thing apart you're always going to be on the bad you're always being incremental you're thinking about it you're being intentional about always having stop points and break points and then that way if you have to stop your improvement your architecture improvement mid investment you're never left with hanging

32:59 Brad hanging components and

33:01 Scott Mm-hmm.

33:01 Brad then part two if you've clearly articulated your better architecture agreements then it's there's nothing wrong with slotting in an intentional feature uh

33:13 Scott Or

33:13 Brad that is

33:14 Scott an intentional fad.

33:16 Brad all new features definitionally should

33:18 Scott All

33:18 Brad be yeah

33:18 Scott new features should be fad. Yes.

33:22 Brad You're going to do all new features as compliant with the new agreed upon better architecture.

33:27 Scott Well,

33:27 Scott that's a very interesting thing. I was talking to one person today,

33:30 Scott a woman on our team who's one of our leaders,

33:32 Scott and we were talking about that piece,

33:36 Scott which is she was we were discussing this topic and she was saying how she felt like this is all great.

33:47 Scott But there's this piece of our culture that needs to change,

33:50 Scott which is, as you summarize it with this, everything is fat.

33:55 Scott She sort of said, look,

33:56 Scott we got to get to a situation where people don't make things worse,

34:00 Scott right? Right now, there's this, in the name of going fast,

34:05 Scott getting stuff done,

34:06 Scott people dig the hole deeper. And if I've said it once, I've said it a thousand times,

34:10 Scott the fastest way to get out of a hole is stop digging.

34:14 Scott But we still dig.

34:15 Scott And so this is what she was saying,

34:17 Scott which was, Scott,

34:19 Scott this sounds fantastic.

34:20 Scott Like, I love that we're going to do this stuff, whether it's fad or bad,

34:24 Scott I don't really care.

34:24 Scott But it doesn't matter if we don't actually get a culture of, to use your language,

34:29 Scott that we're always fad, that everything we touch, we try and make it better,

34:32 Scott a little bit at least.

34:34 Brad Yeah.

34:35 Brad Well.

34:36 Brad There you go.

34:37 Brad I guess we landed on it. We actually made the case for how to do bad and fad at the same time, so long as you follow these rules.

34:46 Scott And it's called HAD.

34:48 Brad It's called HAD.

34:49 Brad We had the discussion and we landed on HAD.

34:52 Scott I think there's one other thing to take from this, which is, this is a lesson I've learned from it.

34:58 Scott Our non-technical stakeholders can sometimes at least.

35:03 Scott open up our minds to things that maybe we didn't think about or

35:06 Brad Yeah.

35:06 Scott at least or cause us to think is a strongly held belief I have why do I have that strongly held belief is it true is it just due to the scars of previous situations and you

35:22 Scott know be open-minded it's been an enjoyable thought process for me

35:27 Brad Yeah,

35:27 Brad totally.

35:28 Brad That sounds good. It sounds awesome.

35:30 Scott Now I just got to get, you know, every other technical leader I've talked to on this topic to change their mind.

35:37 Brad Oh,

35:37 Brad man. Well,

35:38 Brad I am so happy that you brought this topic.

35:40 Brad This is it's got me thinking it's a pretty cool concept.

35:44 Scott Yeah,

35:45 Scott the last thing I'll say is I, you know, I talked to about, say two weeks ago, I was talking to the head of product about it.

35:52 Scott Maybe earlier this week I was talking to our CEO kind of having the same conversation and I did just stop for a minute and I was like, huh,

35:58 Scott they're smart people and they're asking me something and why,

36:03 Scott what,

36:04 Scott you know, they caused me to be reflective and that was, I'm glad that I caught myself and did that and I hope I continue to do that.

36:10 Brad Love it, man.

36:12 Scott All right. Well, is that it for today?

36:14 Brad That's it for today.

36:15 Brad sounds like we hit some we landed we landed someplace real we should you know what when you land stop

36:21 Scott Land.

36:21 Brad moving land

36:22 Scott Yeah.

36:22 Brad mad

36:23 Scott So I've got a new framework.

36:25 Scott It's called Shad.

36:27 Scott It's called smash that subscribe button.

36:32 Scott Rad rate and review and tell all your friends about us.

36:40 Scott All

36:40 Brad All

36:40 Scott right.

36:40 Brad right.

36:40 Scott Talk to you soon,

36:41 Scott Brad.

36:43 Brad This episode of How Many CTOs Does It Take podcast was edited by Saffron Epigow.

36:47 Brad Our theme song was AI Generated by Brad.

36:51 Brad Please follow us on all the social media platforms at at HowManyCTOsPod.

36:56 Brad You can find us on YouTube,

36:58 Brad LinkedIn,

36:59 Brad Instagram,

36:59 Brad Facebook,

37:00 Brad Threads, X,

37:01 Brad TikTok,

37:01 Brad and Patreon, or at our website at HowManyCTOsPod.com. And remember to rate, review, and subscribe on the podcast platform of your choice.

37:13 Brad Thanks for listening.