The Documented SDLC: Why Every Team Needs One (and When)
In this episode of "How Many CTOs Does It Take?" podcast, hosts Scott Porad and Brad Hefta-Gaub start with a quick retrospective, or is it an encore, of recent rock concerts before stage-diving into a lively discussion about the Software Development Life Cycle (SDLC): what it is, when it matters, and how teams can keep it useful instead of bureaucratic.
They explore how the SDLC functions as the connective tissue between engineering, product, and leadership, ensuring teams stay aligned as they grow. Drawing from experiences across startups and mature organizations, Brad and Scott discuss:
-
When and why a documented SDLC becomes necessary
-
How process can scale collaboration without killing creativity
-
The SDLC as a living agreement, shaped by retrospectives and real-world feedback
-
The intersection of feature briefs, technical design docs, and version control
-
Why AI coding agents still need human-governed structure
-
How over-rigid process can backfire — and how to keep the human element front and center
They close with reflections on teamwork, accountability, and the shared satisfaction of building something great together. Whether you're defining your first deployment script or revising a 50-page SDLC document, this episode offers practical insight into keeping your software process both disciplined and alive.
- 00:00 Introduction and Hosts
- 00:48 Music Talk: Concerts and Bands
- 05:26 Taylor Swift and Music Industry Insights
- 08:13 Transition to Software Development
- 08:32 Understanding the SDLC
- 10:41 Documenting the SDLC
- 16:15 Compliance and Security in SDLC
- 21:02 Product Management and SDLC
- 28:31 Version Control Chaos
- 29:26 Deployment Strategies
- 29:48 The Build Process
- 30:20 Managing Code Changes
- 33:36 Commit Messages and Versioning
- 41:13 The Importance of Requirements
- 50:50 Challenges in Software Development
- 55:56 The Team Aspect of Software Development
- 56:52 Conclusion and Outro
Resources:
- How Many CTOs Pod: https://howmanyctospod.com
- Scott Porad: https://www.linkedin.com/in/scottporad/
- Brad Hefta-Gaub: https://www.linkedin.com/in/bradheftagaub/
#TechPodcast #EngineeringPodcast #DevTalks #PodcastForDevs #HowManyCtos #Podcast #Ctos #CtoPodcast #Technology #Engineering #SoftwareDevelopment #TechLeadership #EngineeringLeadership #SDLC #SoftwareDevelopmentLifeCycle #Compliance #Teamwork #DevProcess #CICD
Brad: What are the typical features we would expect to see in a basic SDLC?
Scott: And welcome to another edition of How Many CTOs Does It Take? My name is Scott Porad and this is my trusty co-host,
Brad: Brad Haftigaub.
Scott: Brad, normally we try to avoid
talking about the date in these podcasts because sometimes they get shuffled out of order in how we release them but today I think there is an important and time sensitive topic for us to discuss now I know you are a music lover
Brad: Yeah.
Scott: I know you're a musician.
Brad: I am.
Scott: I think you even owned your own record label for a while.
So the most important question of the day is,
have you listened yet to the new Taylor Swift album?
Brad: I have not.
I
Scott: You
Brad: have
Scott: have not.
Brad: I have been busy listening to other musicians that I recently discovered and that have been really fun and have really exciting. I'm actually in the middle of of this month.
I'm going to so many concerts and that's been an opportunity to see bands that I've known for about for a while, but never seen live before.
And then the opening bands are always a nice little surprise because you.
Because you see you go there for the headliner, but you see an opening band you're like, oh shit,
they're pretty good, too
Scott: A hundred percent.
I got a lot of questions for you in my music festival going days,
I always like to go early in the day when it's not crowded,
you can wander around and you get a smorgasbord of bands you never heard before hear three or four songs from each of them.
So I'm curious to know what you're listening to that you like right now.
And I'm sure all of our tech loving nerds out there kind of know about this too.
But what are you listening to right now that you're excited about and what are you going to see?
Brad: Well, let's see.
I went to go see last week I saw a really fun band,
JVB, Joey Valance and Bray. They're a fun hip hop band that blew up on TikTok a couple years ago with their Punk Tactics song.
And I got to see them live. I actually went to that show with my youngest.
uh child uh who's in you know who's a gen z or so she had fun she's like dad they're they're playing all the gen z bangers and it was fun they're super fun hip-hop band um and uh
Scott: Out of curiosity,
where was that show at?
Brad: that was at the show box um and it
Scott: Market
Brad: was all ages
Scott: or Shoto?
Brad: it was at the market um and it was all ages so but we but we're both over 21 so of course we hung out in the bar area and and had a good time
Scott: For all of our listeners who are not in the greater Seattle area,
they need to know that the Showbox Market is the best club venue in Seattle, in my opinion.
Brad: It's pretty great.
Scott: It's really great.
Okay,
Brad: And then
Scott: who else
Brad: I
Scott: did you see?
Brad: saw this week I saw the band Softplay was the headliner.
They had an opener,
Kenny Hoopla, who I'd never heard of. And Kenny Hoopla was way more fun
Scott: That's
Brad: than
Scott: great.
Brad: I for just a random opener.
This is a good time. This is a really good time.
Scott: You saw the who?
Brad: Saw The Who on their supposedly last tour ever,
but I've gone to at least three Who concerts that were their last tour ever,
so it's hard to track, but this one looked like it really was going to be their last tour ever.
Scott: I have this friend who the very first concert he ever went to was I think in 1982 or 1981 or something like that and it was the Who Farewell tour.
Brad: Nice, yeah,
exactly. It was the one with the clash.
I
Scott: I
Brad: can't would even imagine. yes
Scott: I was like, I was too young to know.
Brad: that was that was that was a that was also a farewell tour anyway uh and then up next is turnstile with emil and the sniffers uh speed and um some other opening band and then after that we've got uh the super suckers and then um heat and boss all all random shows i'm gonna go see
Scott: It is fall music season for you. Please tell me that a meal in the Sniffers is a punk band.
Brad: Oh yeah, for sure.
A meal in this.
Scott: Because
Brad: They're from
Scott: what a great punk band name.
Brad: they're from Australia and they are pretty sure they're Australian, not New Zealand. Maybe they're Kiwis, but they're either Kiwis or they're Aussies and they're just like rowdy pub punk rock.
And so lots of fun.
Scott: Love it. Well, I've seen some music lately.
Brad: Yeah, tell me. By the way, we're turning this into the How Many CTOs Musical Podcast.
Scott: It's really true.
I was in California last weekend and saw three shows at the Hollywood Bowl.
I had never been to the Hollywood Bowl before.
The sound was excellent.
I saw two nights of LCD sound system.
Brad: Oh,
Scott: which
Brad: yeah,
cool.
Scott: is a strong recommend love
Brad: Yeah,
Scott: those
Brad: totally.
Scott: love them and i saw one night of big thief
Brad: Okay, cool.
Scott: which all the kids know and love big thief
Brad: Yeah.
And so all this music and we need have you listened to the new Taylor Swift album?
Scott: I have not yet,
Brad: but Okay.
Scott: after we are done recording today,
I will indeed put it on and listen to it.
Brad: All right.
Scott: I don't know if I would go as far to say as I'm a Swifty.
I think to be a Swifty,
you've got to know the lyrics to all the songs.
I don't really know that,
but I'm a fan of Taylor Swift.
I am impressed with her as a musician and an artist and overall just a.
a force in the entertainment industry.
Brad: I definitely would agree with that statement. I think she's an amazing entrepreneur.
I think she's amazing.
She's incredibly smart and deliberate in her creativity.
So that part,
I'm.
I'm in alignment with I
Scott: Now, I saw Taylor Swift. Was it last summer that they had the big Eras tour or was that like 15 months ago
Brad: was think that
Scott: the
Brad: that was
Scott: big Eras
Brad: like yeah.
Scott: tour?
I went to see the Eras
Brad: Oh,
Scott: tour.
Brad: wow.
Scott: Yeah,
I just thought to myself, this is like a cultural moment and I just want to see it. I just want to see what this is all about.
And I was blown away.
And I'll tell you, I was blown away by a few things.
The fans are just out of this world.
She has such an amazing relationship with her fans and super positive.
It was a giant sing-along. I mean, she could have just got up there and been like,
okay, we're going to sing this one now,
everybody.
Like, I think I went with one of my kids and like we were the only people in there that didn't know every word,
Brad: It's
Scott: every
Brad: so funny
Scott: song.
Brad: you say that because when we were at the Soft Play show,
uh on tuesday and uh the opening band i told you was this band kenny hoopla the crowd there was clearly a crowd was there for the opening band and they knew all the words and i turned to my buddy and i was like i forgot to do the homework
Scott: One last box to check here. Are you familiar with a band from England called Pulp?
Brad: Oh, as in
Scott: Oh,
Brad: like, I don't think so. I've not heard of them.
Scott: okay.
Brad: Check them out.
Scott: I have no idea.
They were the opener for LCD Sound System.
We were walking in towards the end of after their set was over the first night.
We didn't go to see them the first night and there were people walking out like people just came to see the opener,
Brad: Oh, yeah,
Scott: which
Brad: for sure.
Scott: was doesn't happen very often.
And I guess this is a band,
you know, they're closer to our age or they're a little bit older and they're sort of on a little bit of a reunion.
And I
Brad: There you
Scott: don't
Brad: go.
Scott: I thought maybe you'd heard of them. Well,
Brad: All right.
Scott: OK,
the music section.
section of how many cto's does it take is over we'll
Brad: All right.
Scott: move on to the software section of the party it's like a mullet we're going to go to the front of the haircut now and
Brad: This is up front party in the back.
Scott: Business upfront,
party in the back. So we got business to talk about.
And today,
I think our topic is the SDLC,
the software development life cycle.
And I think specifically what you told me you were interested in discussing was the documented SDLC,
the thing that's written down.
Brad: Yeah, I mean, presumably,
whether you write it down or not, every team is following some kind of a life cycle.
Scott: Somehow it gets done.
Brad: it's done somehow yeah and i just i think it's interesting right like i um
I've worked with ventures of all different sizes,
right,
from,
I mean, I guess I haven't, I mean, the largest,
the largest company I've ever worked for had 2000 employees, but so I've never been bigger than that, which obviously there's some, you know, the bigger ventures out there are even bigger.
But, you know, everything from two guys in a garage to, you know, 2000.
And I think it's interesting that.
that there's there's clearly an inflection point where at some point you look around and go oh gosh we should probably write this down how we're doing this and i was just kind of curious about picking your brain scott i know that you and i both worked at 98.6 together where i think we were both really impressed with the the sort of the the you
thoroughness of the documented SDLC that they had but I just kind of wanted to chat a little bit about like when do you need one why would you need one what are the core elements that need to be included in it like if I'm just a one guy in a garage with the AI coding agent should I think about my SDLC
Scott: I mean,
maybe.
actually come to think of it I mean I guess once you go start to make yourself a deploy script then you're thinking about it aren't you you're
Brad: Totally.
Scott: thinking about how do I get this software off my I guess as soon as you decide to commit the code to a repo you're thinking about an SDLC right
Brad: Yeah.
Scott: because that's like conceptually
Brad: Yeah.
Totally.
Totally. Well,
what have you found?
Scott: Well,
I want to talk about what we experienced at HealthCo.
I came in there and the SDLC was already in place and it was pretty robust.
And what I think I appreciated most about it was two parts.
One was that it was a
It was like a tool for retrospectives, if that makes sense.
What I mean is, if something went wrong,
the team would ask, well, what does our STLC say about this? And if it was silent or if it didn't say how to handle this, oh, that's something we need to come to agreement on how we handle this situation.
And so it almost became a repository for working agreements for how we were going to work together. And then the other thing...
I appreciated about it.
There was an owner of the SDLC and,
you know, there was like a quarterly amendment and update process.
It was kind of like the Constitution.
People could propose amendments and then I guess there was a committee of people who approved them. I don't really know how that process flowed, but and then maybe it was more RFC thing or something.
I'm not really sure.
But and then and then they were sent out and it was updated and it happened every quarter.
So as we learned during the quarter,
oh, here's a mistake we made, here's a mistake we made, here's a way we could do it better, then we sort of codified that.
So that's what I liked about it there,
I think.
It existed there for, well, I would imagine it existed there for two reasons.
One is a compliance reason.
You know, there's lots of compliance regimes or lots of them, but there's some compliance regimes that say you got to have it, get to have documented how you make software.
And then I think the other was they were doing healthcare and the quality was really important for them.
And so they wanted to have a consistent process.
And I remember the, I don't remember the exact words, but the preamble.
that was written at LCLC, which said something along the lines, which is, you know, software development is an inherently complex and ambiguous process.
It's a creative process.
To the extent that we can standardize any parts of it and we can minimize the complexity and simplify it and make our jobs easier.
And I appreciated that it made that made sense to me.
So those are all things I appreciated about it there.
Now you ask when, when should you have one?
Brad: Yeah.
Scott: That's a great question.
I think that.
It's probably a good idea to have one under a few circumstances.
One is if you're hiring pretty rapidly.
So like as you're bringing more and more people on,
again,
it comes back to that repository of working agreements.
Like so if somebody shows up, they can kind of have an understanding of like,
this is how we do it here.
Right.
And so if you're hiring rapidly or I think even if you have a environment where you need consistency across your teams or you want consistency across your teams, even if you're not hiring rapidly.
And I would suspect there's a number and that number is probably between like I'm going to guess seven and 15 people where, you know, probably with 15 people, you can still sort of get everybody in a room and say,
hey.
Hey, gang,
this is how we're going to do it.
But you start to get to that 20, 25 number,
it gets a little trickier to maintain that consistency just verbally,
right?
Brad: Yeah.
Scott: The sort of oral tradition starts to break down.
Brad: Yeah.
Scott: It still is maybe somewhere in those ranges is where I think it could be valuable.
And I know that the company I'm at right now does not have a written out COC and we're working to get one in place. And the approach we're taking is, I mean, it's happening. Software development has been happening at this company for 15 years.
I we started by just saying well let's just write down how it works now like let's not try to prescribe some new fancy way we want to do it let's just literally just
How do you do it?
Brad: Yeah,
Scott: So go
Brad: just document.
Scott: ask the question.
So go ask the question.
So when someone has an idea,
how does the, to use the proverbial, how does the build become a law around here?
Brad: Yeah,
Scott: You know, what,
Brad: totally.
Scott: just what are the steps?
And then we can go ask the question,
okay,
where do different teams do it differently?
And we want to make it consistent,
or maybe we don't mind that it's different on different teams.
What do we want to improve,
et cetera, et cetera.
But I think that's where you start is.
Uh,
you know, how do you do it now?
Brad: I think that makes a lot of sense. So how do you do it now?
And I think that, you
know, when I think about the do you need one and I first of all agree with you that like just writing down what you're already doing is probably the easiest way to make one.
I think that.
I want to kind of try to more explore like I love that you're saying like hey it's kind of just the way we do things and there's a there's a certain number of people that once you have that many people you you can't just use oral tradition to keep everybody kind of on the same page you have to like you have to have some other better way than just remind everybody that we we tell we see what we're doing we act and we tell each other like write it down it's easier um it strikes me that there's
Well, actually,
let me ask a question about this. So I'll make the following statement.
I would think that if you were going to do some kind of a compliance certification compliance regime like SOC 2 or HIPAA or something like that,
then those are those are often going to have like expectations and requirements around
Scott: Mm
Brad: things
Scott: -hmm
Brad: like data security.
OK.
And one of the things that certainly matters about how you write software is how you make sure that you don't have either mistakes made or rogue actors within your organization,
which are somehow jeopardizing.
Data security.
Right.
Scott: Mm-hmm.
Brad: So to me, that feels like one of the places where no matter how big you are,
you probably might have to have something written down to guard against that.
to manage data security.
Scott: Yeah.
Brad: So let me ask you that question.
In a world where it's never been written down as an official software development lifecycle document,
is there – am I over-subscribing to this SDLC concept?
or you know just just essentially an sdlc almost immediately exists the moment that you have some kind of a security or an audit policy like you and i decided that's just two of us in the garage but we agree like scott you never check in code unless i code review it and i never check in code unless you code review it like is that to me already almost feels like the beginnings of an sdlc
Scott: There you go.
Right. And, you know, from the auditor's perspective,
they're going to want to know, typically,
they want to know, you know, was this change to the system essentially approved?
Did some person in authority authorize this change?
And they just want to have a...
The words clean my mind is trace log,
but that's not really what
Brad: A
Scott: they mean.
Brad: paper trail.
A digital paper trail.
Scott: They want to have some, okay,
here's a change.
Show me who made the change. Show me who approved the change.
Right.
And your SDLC document would say,
well,
this is who approves changes and this is who makes changes.
And then an auditor would look at that and say, OK,
well, prove to me this happened.
And,
Brad: Yep.
Scott: you know, maybe it's something as simple as,
well, the person who made the change is whoever created the poll request and the person who authorized it is whoever reviewed it.
You can go look in our GitHub and see that every change has an author and an authorizer, right?
Brad: Yep.
Scott: And then they might ask,
well,
okay,
how are those, why are those reviewers qualified or, you know, who authorized the reviewers,
right?
You know, some companies might say, oh, well, all engineering managers can be approvers or all senior engineers can be approvers or something.
Maybe you have some criteria,
but if it's just the two of us and we wanted to be some sort of SDLC compliant,
you know, or, you know, SOC 2 compliant or whatever all the different frameworks are out there,
we would just say,
hey, well,
every PR is going to get approved by one of us and by not the person who wrote it, a different person who wrote it. In fact, there's a checkbox, I think, there.
Brad: And
Scott: You'd
Brad: GitHub
Scott: have you
Brad: enforce
Scott: can,
Brad: that
Scott: yeah,
Brad: must
Scott: PR, they call it a, yeah,
Brad: be approved and can't be approved by the author like that.
Scott: there's a name for those restrictions,
but it doesn't matter.
Brad: Yeah
Scott: The detail doesn't matter.
So they kind of even enforce that in there.
Yeah, I think that's what the compliance regimes want.
They want to know, like, show me the provenance of this chain.
Brad: Right.
Scott: Yeah.
Brad: Because if someone comes along and says you're embezzling money from this company,
you know, the classic office space,
there's pennies going to your account.
They want to know how that happened.
And if so-and-so in accounting who's an authorized approver said it was OK,
then.
Guess it's okay.
Scott: Right.
You know, another place where I think this comes in, and I'm not sure this was, I don't know for sure if this has ever been the motivation or if this is necessarily something you want to protect against, but I have a feeling that there can also be a.
Like maybe the reason that we ended up getting really we end up really getting specific about who's asking for the change and was and did the change go through enough review or did the change, you know, like was there a proposal?
Was the proposal reviewed?
Did the proposal then have an estimation?
You know, you and I talked recently about the notion of quality and how quality begins with like, do we even understand what we're building?
Brad: Right.
Scott: So I'm just kind of curious,
where do you think the role of where do you think the role of the upstream from developers starting to think about code,
where does that live in the software development lifecycle at HealthCo?
There was a big section of the document was was well before developers ever saw the saw the idea.
Brad: Well, it's interesting you say that.
So the company I'm at now has this.
like whole product there's a documented product development process it's all these phases starting from way way upstream of like idea generation right and then there's like this one it's like imagine a flow chart there's one section in the flow chart it just says like development happens right and then it's
Scott: Magic
Brad: and
Scott: happens.
Brad: magic happens and then you know data is is expelled from that and we evaluate it and we go back and do our product process again and i i thought that was
That was funny.
I was like, oh, the whole part that the engineers think about is the SDLC and to the product managers and just there's one box,
which is like developers do stuff.
Scott: Yeah.
Brad: So but I think your question is like,
how far upstream should the SDLC go?
Here,
here's my thought about that.
Pretty far.
Because I think it should include that product part,
personally.
See,
I guess there's a few different purposes for the SDLCs, right?
One is like
How do we as a software team just operate efficiently effectively,
which I think is different than the compliance purpose,
which is how do we know that the software is doing the thing that the business wanted to do,
right,
which is kind of a different purpose.
You
Scott: Yeah,
Brad: know,
Scott: the yeah
Brad: Venn diagram is very highly overlapped, right?
But to me, and I think about it more from the how do we know that we're.
doing the best we can do and from that regard I think including further upstream steps is good like getting into that product management space right of like hey well they collect ideas and then they evaluate ideas with finance and stakeholders and customers and then they probably all those steps I think is good to write down too because I think it's good to show
well with to ourselves but also outside the team like you know this is this is how it gets done this is how it gets done i used to give this talk yeah i haven't done it in a while but when i was at rover and um i would do it as part of the the new employee onboarding in a couple of years a couple of times per year at the like an all hands which is like you know
how do you talk to the engineering team not like you know what do you say like and there were just three ways it's like do you need help with the software you do use to do your job you go talk to the IT team and here's how you interface with the IT team you can go into on the way to help this system or you can go into the slack channel or whatever do you
Is there a problem with the software that works that's out there currently and you need to tell someone about it? Like here's the avenue that you go to tell someone about it and it can get flows through to the person who can fix it.
Or do you have an idea for how to make it better?
And then here's the other channel where you go submit that idea.
In theory, sort of each of those, those are the three, I was like, there's only three doors to technology at this company.
And these are the three. And.
in theory each of those kind of has their own little sdlc so to speak which is like okay someone comes along and says i see a problem with the software right what do i what are the steps that they follow right
Scott: Yeah.
Brad: where's the button they push if they think it's emergency or where's the you know ticket they submit if they think it's not an emergency or whatever and um you know that third one i mentioned which is i have an idea for how to make it better for our customers it's just the beginning of that sdlc someone has an idea
has an idea what happens with it goes into a bucket project management project management does whatever they do thinks about it right they
Scott: Yeah.
Brad: make a you know i think it's i think it's useful to go way upstream even in a lightweight way um it might be in a small company you know if it's just you and me two people it might be you have an idea put a sticky note on the wall
Scott: Yeah.
Brad: Right.
That's step one.
Scott: Well,
and one of the things that we would want out of that, like let's we if we just take our let's just take our T.O. part of our CTO hat off and put our C part on.
Right.
Brad: Yeah.
Scott: Which is we're we're like a chief. We're steward to the business.
Right. Like a big piece of being a steward to the business is.
How do we know that the investments we're making are worthwhile investments,
right?
Brad: Yeah, for
Scott: So
Brad: sure.
Scott: the further, if you only do, if you only sort of think about the process of writing code, but you don't think about the process of what comes into the request bucket,
right?
Brad: Right.
Scott: And you don't have some, you don't have some thoughtful, systematic way of evaluating those ideas,
right?
Brad: Yeah,
Scott: Then
Brad: that's
Scott: that's
Brad: a.
Scott: probably a road to wasted money.
Brad: Absolutely.
And that's more of a typical product management type of function. But even within engineering, we have engineering driven investments that you want to do that as well.
I think that's critical.
In fact, I would actually say from a business perspective.
It's interesting. So often in our careers, I'm interrupting myself,
I'm sidebarring myself.
So often in our careers, at least in my career,
I have CEOs who say, you know, hire more engineers.
Do you need more engineers? How can you go faster?
And when I say sometimes,
and I say it more politely than this.
Well, why don't we just pick better stuff to work on?
Scott: Right,
right, right.
Brad: Like it's going
Scott: We've talked about that. If all of a sudden we're way more efficient as engineers,
that doesn't necessarily mean we get more value done.
It might be we're just getting more things that aren't that valuable done.
Brad: nowhere fast.
Yeah.
So like I learned that from my experience, actually the head of product management when I was at Rover was a really big believer in that. Like, hey, let's.
you know the classic ready shoot aim he was a really big like no no let's aim ready let's really think about where we're going to aim and then when we aim like we're going to pull the trigger hard and blast it we're going to really think this through and I admired that in his his thoughtfulness up front um his his he had a lot of really positive things to to contribute to like my experience but um
I think
Scott: I
Brad: that's
Scott: have
Brad: a good thread.
Scott: I have two like pieces of this that I want to pull on different threads on and maybe you can tell me which one is more interesting or which one we should do first. So one really simple thing is you and I are talking about this SDLC or how software gets done as if it's just like, well, obviously we know how to do it. We've been doing it for 30 years. Right.
But what are the.
bare minimum or what are the what are the what are the typical stops along the way like what are the typical features we would expect to see in a basic SDLC
Brad: It's a great question.
I would think the bare bones minimum.
I haven't thought about this before.
This is a really good question.
I would think the absolute bare bones minimum are the following two things.
where is code stored and how is code deployed or built and deployed if it has to get built um because ultimately like you can't have everybody with their own the same you know different copies of the code we've lived in i don't know i've lived in those days that's craziness
Scott: Yes
Brad: And
Scott: Yeah,
and then you can use the version control.
Brad: totally where version control is a folder on the production server and everybody goes and makes a copy of it.
Scott: Yep.
Brad: Someone changed the sim link and that's the new version.
Scott: Hey, blue green,
baby.
Brad: So think, hey, we all agree,
like here's the repo.
And maybe I guess part of that has to be on sort of what your kind of like branching strategy is.
But I don't think that's too hard.
I mean, there's, you know, there's known patterns out there. You can just say, look, we follow this strategy.
But you've got to have one. You can't have one person having a mainline and branching off of it, another person making release branches and deploying.
You have to have one way you store code and one way you deploy code.
Scott: Okay, hold on a second, though. I like this. I like where you started.
If you start with the
um we could start with the end in mind right how is the thing that the customer is using how did it get into their hands that's deploy so how do we deploy this thing okay and then if you're going to answer the question how do we deploy this thing we got to have an answer of where did it come from where was where did where did we store the thing that got deployed right the source
Brad: And there's a piece in there between which is maybe the build piece,
right?
Scott: So
Brad: Yeah,
Scott: how
Brad: where did it come from?
Scott: do we deploy it? Where was the source code stored?
And we just inserted a new step called the build process.
Brad: Yeah,
which is like, what is it?
Scott: Yeah. Okay.
Now,
if we only have those three things,
I don't think we have a very interesting software business.
And the reason I say that is because you haven't yet talked about how we change it.
Because it feels like
Brad: Yeah,
Scott: how we change it is going to be the very next thing we need to answer
Brad: sure.
Scott: the question of.
Brad: Sure.
So then the other next is how you change it.
What are your processes for changing?
I had this, I can't remember the saying rats.
I have a sticky note with it on it. But like,
you know, if I'm doing something new from scratch all the way a production thing,
I try to just like get the hello world app.
all the way to production first because then there and out it's easy you're just making updates right
Scott: Yeah.
Brad: they're big updates because it just it's right but I've seen this thing where you like somebody builds a whole bunch and they're like ready to go and then it's like oh well now there's this all of this work you got to do to go from it's in wherever you store it to like making it live and that's pretty heavy lifting and if you do that up front it's often lighter weight
But
Scott: Yeah,
Brad: your point
Scott: totally.
Brad: is, I only bring that up from the,
yeah,
how do you change it? Once you've got it somewhere,
how do you start changing it?
Scott: How do you change it? Right.
And that might be that's where we then start to peel that onion and we get the answer we get, you know, deeper. The next layer of those questions are,
well.
You know, how do you change it? Probably the answer is there's a version control system somewhere and we're checking into version control.
Brad: And
Scott: How
Brad: what is
Scott: do
Brad: it?
Scott: you how do you validate that you want the change before you really commit to the change? And so that's a that's part of the how do you change it? Right.
But it starts to really pull on different questions around maturity, which I think are well.
How do you test it?
How do you audit it before,
you know, how do you audit it from a code quality perspective,
right?
These are sort of the things,
the questions that get inspired by the,
now we're talking about how we change it.
Scott,
you and I are going to have little two guys in a garage. How are we going to change this?
And we might say, you know what? We've both been doing this so long. We both trust each other.
Like our answer to how we change it is.
change it brad if you want to change it you change it scott you change it if you want to change it and uh we just we we speak in an unspoken language of trust that we know that we're all right in the right in the like you could write it and i could write it and it would feel like it came from the same brain right
Brad: So there's a piece in here, I'm not sure where it fits in this part of the kind of the life cycle, but I think about it.
from a operational point of view which is like if something is broken and I go look at the last commit for the last deploy I want to know what was in that deploy of course I can look at the code and I can see but I would really like for there to be a description somewhere
either
Scott: Yeah.
Brad: a change log or someone said this is what I'm trying to do here it can be in the pull request it can be in a ticket that the pull request references but I've always found that a really really useful piece of like
Hey, it's 6.30 p.m. on Friday and everything broke.
Yep. What was the last thing to change and what were they thinking,
right?
Scott: Yeah, you know, it's so interesting.
A little side note on that.
One of my newest one of my newest.
First of all,
I agree with everything you just said about like, what is what is the change that was made?
And I think that I've been a big believer, you know, GitHub and pull requests into,
you know, whether your developer branch, your main line,
whatever that might be, that's like kind of been the regime that I've lived in for the last, you know, at least 15 years,
Brad: Mm
Scott: it
Brad: -hmm.
Scott: wasn't always GitHub,
but it was like Git and things like that.
So, you know, kind of the the notion of the
commit log and the and the pull request like i've always been pretty adamant that the at the very minimum the thing that got merged into the the main develop branch whether it was main or whether it was developed but the thing that went from the developer into the group the group version of the code that had better have a high quality description attached to it
Brad: Yeah.
Scott: right
Brad: Or referencing that description for sure.
Scott: yeah
Brad: And that's coming back to something we talked about earlier. That's what auditors want.
There's one what was this change?
Why was it there?
Scott: Yeah. What's interesting is, and I'll admit this is a little bit of like personal growth.
It drives me crazy when I see individual get commits that are things like, try this,
that didn't work,
try again,
right?
That drives me crazy.
And what's really interesting is I have found that the AI coding agents now,
if I've been working,
even if I'm the one writing the code, I'm just writing code or I'm having the agent write code.
When I tell the agent time to commit this,
this is a good checkpoint,
commit it.
Man,
they write really good commit messages.
Brad: Oh, yeah.
Scott: And I'm like, all right, like I would have never written that,
but they wrote it and it'll it'll come in handy if I ever come back and look at this in the future.
Brad: Yes, yes.
Okay, so that reminds me of something because I was doing it the other day on something I was working on, which is version numbers.
Scott: Yeah.
Brad: And how that plays into the SDL. So,
you know, I guess we have hashes on a PR.
A lot of times deploys get a hash somehow associated to it.
Um,
but versions
Scott: I
Brad: are kind
Scott: think it depends on the scale of your project, but
Brad: yeah,
Scott: I
Brad: it kind of depends.
Scott: know recently, not recently, but within the last, you know, year or so at, you know, the one of the companies that I work with, we basically adopted a SEMVER,
semantic versioning. So basically all of our components have a, you know, major dot minor dot.
um sub uh classification to them and you can't change the you can't change the semantic meaning of the api with a minor version if you're going to change the semantic meaning you have to you have to you have to bump the version and you have to we agreed to support the old version and so that significantly changed that was a great example of a sdlc thing right so we had a
You know, we changed one, you know, the back end changed something and then the front end didn't know about it and boom,
some bug got introduced and everyone's like,
wait.
This code is not expecting that behavior,
right?
Oh,
okay. Well, let's agree that we don't change the semantic meaning of stuff unless we support the old version and have a new version and give some kind of a – and that bug happened,
retrospective, figure out what happened. Oh,
let's make a decision about how we change things absolutely turned into a new way of working.
That has I think in the ultimately it's made us go faster.
Right.
But there's tradeoffs with it. And I think that's kind of an interesting aspect of how SDLCs need to evolve as you learn things.
Brad: Yeah, I think I mentioned this earlier to me like
after sort of the sort of foundational just nuts and bolts like we were talking a minute ago it sort of becomes just a repository for all the things you learned in retrospectives where you say oh let's not do that again right and often you just say you say that but an sdlc gives a written document gives you a place to like actually put it and say like oh if we increment the version this is what we do whatever or we don't
Scott: Yeah.
Brad: increment the version unless we
Unless we do the river.
Sidebar,
Scott: Yeah.
Brad: I have a question for you.
I think I've made this mistake several times.
It always seems like versioning is one of those things where you never do it early because you just don't. But then you get a little ways along and it sure would be nice to have it.
And it's probably one of those things that's worth just kind of like putting in a little extra effort up front to have it because if you ever have any success and ever grow to any number of people,
it'd be handy.
Scott: Yeah.
You know, it's interesting.
So I want to I feel like we haven't totally pulled on the thread of the what are the kind of building blocks
Brad: No,
Scott: for.
Brad: we haven't.
Scott: But I will say that this is a little bit of a story of like get stuff in early.
I have really become now just all my individual personal projects that I have,
you know, I I'm.
really loving the idea of right from day one especially now that i have ai code eight coding agents write so much of the the boilerplate for me it's like from day one it's like yeah i've got a cicd that works with it when i you know i've got a develop branch and a main branch and when i merge when i open a pull request boom i get an ephemeral environment up and running that i can play with my play with the latest version and i and i've got you know
automated end-to-end tests and automated unit tests and every time i ask the agent to write me anything i tell it you must make sure the unit tests have 100 test coverage and
Brad: Yeah.
Scott: it must be linted and so like these notions of like lint end-to-end unit tests or unit tests that have coverage end-to-end tests using cypress or play right or something like that and then just having like
No change to the code can happen unless all those things pass.
Brad: And even with it's just be me and my friends Claude and ChatGPT writing code on these projects,
I like having those guardrails.
Scott: Yeah.
So a little while back, we recorded an episode about QA.
Brad: Yeah,
yeah,
Scott: And we talked about, you know,
I talked, I remember I was saying about how that to me, QA begins way upstream with like,
do
Brad: yeah
Scott: you have accurate requirements,
right?
And so all those steps in that process, do you have accurate requirements?
Did you write a technical design doc?
Was there a code review?
Was there test automation?
All these different, all these different steps along the way. Was there monitoring on this, all these kinds of things?
all these steps along the way that ultimately lead to quality to me as you get as you make the SDLC more robust those are all parts that just go into the SDLC and what you're kind of saying is well now the robots do a lot of those parts which is pretty cool
but I
Brad: But
Scott: think it's
Brad: I feel like I still want them to have the SDLC governing them.
Scott: yeah for sure but I think I think all that's part of it I think to me if you're going to purely go just from the engineering point of view I would say the SDLC starts with a written design doc
Someone's asked you to do something,
they've communicated it to you somehow that they want you to change the system.
Maybe they wrote you a document,
maybe they whispered something in your ear,
who knows.
Step one, you write down how you're going to do it.
Brad: Okay, so I love that idea.
But I feel like I want to challenge you and say, I think there's a step before that, that I think maybe even more important.
And that is, do you have, have you described the feature correctly?
So in other words, not the how I'm going to code it,
but the what is it that I'm building?
And I say this only because I was working with this team recently where I.
they you know they came in they asked me to do a code audit i did a code audit and i was like oh the code's in really good shape um i but i then went and said where are all your artifacts that describe this code like where are your feature briefs or what is the you know what and i found that like that's they didn't have anything it was very much a uh you know like the the product owner was very much like a
in a live meeting and describe it to the engineers and then the engineers would build something and like the capturing of that was like not was nowhere and
Scott: I have bad news to report.
Brad: yeah
Scott: We are in violent agreement.
Brad: i wanted to fight over this
Yeah,
Scott: Yeah.
Brad: so it's interesting because what's interesting is then when I worked with that team, I was like,
hey,
you need to start writing these feature briefs. And I took a little bit of time and wrote some feature briefs for the based on what the product owner wanted.
And the development team's reaction to this was,
oh, my God,
this is amazing. We've never had this.
This makes our job so much easier.
Scott: Absolutely. So a minute ago, I said, if you're looking at it purely from the engineering point of view, you'd start at technical
Brad: That's
Scott: design docs.
Brad: the phrase I missed.
Scott: But if you really start the whole thing, I think it starts with just a project charter,
a one pager,
you know, maybe you could do two pages, but that's the maximum of just like, just give me an outline.
What is the problem?
What's the high level solution?
What are you trying to do here? Right?
A user story, right?
What could be as simple as user story,
right?
As a client, I want to be able to cancel my order so that I don't get the thing I bought, right?
Brad: Yep.
Scott: And it has to start there.
And then it goes through depending on the scope of it.
maybe a functional specification maybe wireframes or high fidelity designs maybe interactive designs you know someone made something with figma maybe they made something with maybe they vibe coded something with lovable or something like that that actually shows
Brad: Yeah, yeah
Scott: the engineer here's how see how I really want it to work it doesn't do anything but I wanted to interact this way
Yeah, all that feeds up to now the engineer says,
okay, you've told me what you want.
I'm going to write a document that I refer to as either,
I like to call it an implementation plan.
Here's
Brad: Yeah,
Scott: how I'm going to make
Brad: yeah.
Scott: that come to life.
You know, the company I'm at now, they call them technical design docs. I've heard them called all sorts of things, right?
But I like the implementation plan. Okay,
you told me what you want.
I'm going to tell you how I'm going to make it.
Right. Well,
Brad: Well,
Scott: yeah,
Brad: you know, what's funny is that's what I've also I'm more and more adamant that I have to I tell my AI coding agents,
don't write any code before you write any code. Tell me what your plan is. Give me your implementation plan.
Scott: absolutely.
Brad: Yeah.
Scott: And you said that to me,
I've experienced that, we've had people on this show who said that's the way to do it.
And we've talked earlier,
I don't know what episode it was, but about how, look, AI can only do these like five minute tasks,
right?
So you got to get the implementation broken down into little pieces.
Yeah, to me, the SDLC starts way up there.
Somebody has a user story.
I really
Brad: Yeah.
Scott: have an ethic.
I want to be able,
as a business,
I want to sell widgets so that I can make money.
Brad: It's interesting,
too,
because I think that like I haven't played around with this yet myself,
but I feel like.
An experiment that I'm interested in trying out, I don't do this for my own projects like I don't have, you know, JIRA or Trello or using GitHub issues I don't like create a bunch of to do's and then have them sitting there ready for me to check off the to do's tend to be in my brain,
you know.
But I think more and more, if we think about this from a, so again,
I just feel like there's this whole like confluence of events of like,
what does it mean to build software well?
And now we have this notion of we have all of these, you know.
We have whether we're hiring real human beings to do it or whether we're using AI coding agents or we hire real human beings that use AI coding agents,
right?
Like I'm more convinced than ever that the notion of what are the building blocks necessary to build software well,
right? Whether that be high quality.
feature descriptions into high quality implementation plans into high quality code into high quality testing into a high quality you know CICD process you know whatever that whole pipeline right there I think it's more and more important whether they're flesh and blood engineers or silicon engineers doing these things
Scott: Yeah, especially that upfront stuff.
Brad: Yeah,
Scott: That
Brad: and so
Scott: upfront
Brad: then that makes me,
Scott: stuff
Brad: that
Scott: saves
Brad: makes.
Scott: so much pain downstream.
Brad: Yeah.
So that's the experiment I haven't done yet, which I think maybe that's the next thing I need to do in sharpening my own saw or sharpening my own axes, you know, set up my own personal Jira or my own personal GitHub issues and start writing out my tickets and
Scott: Okay,
Brad: start there.
Scott: I have three thoughts for you. I'm going to just say words so I don't forget them all. They're square,
circle,
and gherkin.
Let me come back to all those.
Brad: Okay.
Scott: My colleague,
Johan Heller, gave a great presentation once to some product managers about the importance of requirements.
And he said,
look,
if you give me a requirement that says you want a square,
what do you want exactly?
And he put up on he had one slide and it was a.
geometric square it's like do you want this and then he had another slide which was like you know the square cash register thing that they've got you know coffee shops and stuff or did you want one of these or then the next slide he put up was you know like one of the in carpentry there's like it's actually triangle shaped but they call it a square and and
Brad: Right, right
Scott: he put or did you want one of these like all of those are squares right so like which square did you want and if you just say you want a square and aren't more descriptive than that
I, well,
there's a two out of three chance I'm going to build you the wrong one, right?
Brad: Yep.
Scott: So requirements are really important.
Circles, you just mentioned the word pipeline, and we sort of talk about this in very waterfall-y way,
but each of these steps actually is a bunch of kind of loops that go around and round,
and people...
are often uncomfortable with that and it's just like look keep on going around on this spec till you get it right keep on going around on this tdd until you get it right keep on we go around on the code until we get it right we don't just write the code once and say well it's done i'm going to commit it and it's all buggy and stuff no we keep on going around around so it's hard when people want to write this write these documents and have this mindset that we're doing all these stages and going from one to the other but actually
Each stage is a loop,
and sometimes it's actually a loop.
back to the previous stage.
That's fundamentally agile scrum, right? Which is like, we're
Brad: Yep.
Scott: going to put this in front of the customer and they're going to say,
oh no,
no,
that's not what I really wanted.
And we're going to go back to the beginning.
And that's very hard to write in a document when we use, you know, words and bullet points and indentation and, you know, you know, what's the, you know, the, when,
what do you call the, the not bullet points when you have the letters and numbers,
what's that called? An outline.
I don't know.
You have an outline.
It's very hard for us to capture that in writing.
Brad: Yeah.
Scott: Right.
But it's really the key to the successful thing.
And the last thing I said was Gherkin.
I'm not super familiar with this. I've never actually personally used it. But there's this framework.
I think it's called the Gherkin framework for writing requirements.
And I once worked at a company where we had this contractor who wrote this thing.
So that a product manager could put requirements using this Gherkin framework right into a ticket and it would read from the it would read from the Jira ticket and change the code.
And I was like,
whoa,
well, that's cool,
but we're not there yet.
Right.
Brad: Right.
Scott: But now with with AI and vibe coding,
we might be getting a lot closer.
Brad: Yeah, yeah,
Scott: Especially
Brad: curtain.
Scott: if those requirements can have acceptance criteria and all those kinds of things.
Brad: Yeah, yeah.
Okay,
so here's the other topic that I was wanting to pick your brain about. And I always ask this whenever we talk about one of these best practices or like whenever we talk about these notions of like.
You know, systems for improving software productivity or development.
I always like to ask the question,
well, what are the unintended consequences? What are the what are the potentially toxic side effects that can come from this?
And I.
I believe I have seen in practice,
and I think that it's explainable that this can happen, that some teams can just get overly literal or overly focused on the rules of the software development lifecycle and
Scott: Mm-hmm. Mm-hmm.
Brad: sort of weaponize them against each other.
Scott: Yeah.
Brad: And I'm just curious what your experience on that is or what you think about other
Scott: I haven't
Brad: than the human nature of it.
What do we do to prevent that?
Scott: had that experience of weaponizing, but I've had the other experience of like software engineers,
look, we write code and code has to be precise,
right? It has to do exactly what it has to.
There's not ambiguity when the code's written. It does a thing, one thing or the other.
And sometimes software engineers want their SDLC to like be equally as precise and there's going to be gray areas.
I see this also just tangentially related to like career leveling guides,
right?
These software
Brad: For
Scott: engineers,
Brad: sure.
Scott: they want like everything specified for how they get promoted to the next level.
And it's like, well, look, we can't write every single thing down.
with how we make software.
There is, if you follow these steps from software,
it's not going to come out right.
You still have to use your brain and you still
Brad: Right.
Scott: have to collaborate with your peers and have conversations and think a little bit, right?
So to me, that's more of the pitfall, which is people want to go to such a level of specificity and get every single thing done. And well,
if so-and-so does this and then...
they want to every single step as opposed to saying there will be a code review they want to say this is exactly how the code review will happen and this person rejects it and then they do this and if they or they accept it and they do this and they have 48 hours to do this and so on and so forth it's like at some point you just have to you can't actually prescribe every single step of what we do
Brad: Yeah,
that's like the conversation around like we can't take everything literally,
right?
Scott: Yeah.
And I see engineers getting wound up. They want, it's just their nature,
they want to figure out every detail.
Brad: Yeah,
Scott: And I think that's probably, if you're going that way, you're kind of missing the spirit of it.
Brad: yeah,
I think that's that seems certainly true. And I think that the
One of the things I've noticed in some organizations where they maybe it's because they get big,
maybe it's because of cultural tensions or things like that, that they they feel they gravitate towards notions of like of like accountability matrices,
matrices,
right? Like,
well.
i'm you know i don't know this is like this is a made-up example but like well i can't fix that bug because the software development life cycle says that the product team has to prioritize the bug and they get together once a month but they haven't been meeting and they haven't been prioritizing they haven't been tagging any bugs as as
Scott: Mm
Brad: to fix so that's why i'm not fixing that bug because this the stlc says i
I'm not supposed to do that,
Scott: Yeah,
Brad: right?
Scott: we're just talking Dilbert at that point, right?
Brad: Yeah.
Scott: there's this Dilbert I can't remember Dilbert's buddy not not Aesok the intern but the other one who was really a rotten guy and he says um you know he's asked for oh Wally that was his name Wally and he's in the status meeting and he says you know the weekly Wally report is bristling with tales of success and he says you know I gave so-and-so inaccurate estimates because they didn't give me a good spec and I gave
gave you know i submitted this bug because i didn't have time to do it right and so and so forth and the pointy haired boss gets really mad like how could you call any of that success and he said well i don't have any written objectives to compare them to and so it's kind of the same idea like you know if you get in these dilbert worlds where people are just so either blindly following the rules or if there's no rules and they're just doing ridiculous stuff again it comes
It comes back to the same thing at a certain point, you have to be a team,
right?
Yes, you have to be
Brad: Yeah.
Scott: a living,
breathing,
collaborating.
We're in this together to make software. I've said this probably on this podcast,
software is a team sport,
right? It takes a village and there's a certain quality,
qualitative aspect of community and teams that you can't codify.
Brad: Yeah.
Yeah.
I agree with that. That seems true.
Scott: It's kind of the most, the team part's kind of the most fun part of software.
Maybe.
Brad: Totally.
Scott: I mean, getting to see it work is fun too.
Brad: Yeah,
I mean, I'll, yeah,
I think so. I mean, I know that in my career, the thing that gives me the most joy is.
that we built it together right like you can look across the table at the people that you built the thing with and yeah you built it that's cool but
Scott: yeah
Brad: it's also cool that you built it together yeah
Scott: we did it together we did
Brad: yeah
Scott: this I
Brad: i
Scott: feel like that's a great spot to stop we
Brad: agree that sounds like the right ending
Scott: did it together
Brad: We did it together. Awesome.
Scott: All right. Well,
ladies and gentlemen out there in CTO land,
remember to tell all your friends to smash that subscribe button to rate and review.
And we'll see you here next week. Is that right,
Brad?
Brad: Yeah,
absolutely.
Scott: All right. Have a good one, everybody.
Brad: This episode of How Many CTOs Does It Take Podcast was edited by Saffron Epigow.
Our theme song was AI generated by Brad.
Please follow us on all the social media platforms at at how many CTOs pod you can find us on YouTube LinkedIn Instagram Facebook threads X TikTok and patreon or at our website at how many CTOs pod calm and remember to rate review and subscribe on the podcast platform of your choice thanks for listening