Culture, Quality, and Tech Debt: Lessons from the Front Lines with Greg Conklin
In this episode of "How Many CTOs Does It Take?" podcast, hosts Scott Porad and Brad Hefta-Gaub are joined by special guest Greg Conklin for a candid and insightful conversation on what it takes to build high-performing engineering teams.
Drawing from their shared time at the telemedicine startup 98point6, the trio unpacks hard-earned lessons around tech debt, operational excellence, and culture-first leadership. Topics include:
- Why setting guardrails for quality, performance, and reliability early pays dividends later.
- The real value of postmortems and RCA meetings (and how to make them stick).
- How overly strong culture filters can unintentionally suppress bravery and dissent.
- What startups should prioritize in their first few quarters to avoid painful rework.
Whether you're scaling an early-stage team or trying to fix systemic issues in a mature org, this episode delivers practical frameworks and honest reflection from leaders who've been there.
- 00:00 Introduction and Welcome
- 00:46 Guest Introduction: Greg Conklin
- 02:05 Revisiting 98.6: Lessons Learned
- 03:27 Empowerment and Quality at 98.6
- 05:32 Challenges in Engineering Management
- 10:46 Operational Excellence and Technical Debt
- 24:25 Dropbox Postmortem Insights
- 27:14 Blameless vs. Egoless Retrospectives
- 30:51 Setting Early Standards in Startups
- 35:11 Challenges in Test Automation
- 38:49 Local Development and Ephemeral Environments
- 44:33 Concluding Thoughts on Engineering Leadership
- 47:15 Podcast Outro and Credits
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/
- Greg Conklin: https://www.linkedin.com/in/gregoryconklin/
- Greg's Blog: https://gregconklin.com/
#TechPodcast #EngineeringPodcast #DevTalks #PodcastForDevs #HowManyCtos #Podcast #Ctos #CtoPodcast #Technology #Engineering #SoftwareDevelopment #Entrepreneurship #Leadership #Management #EngineeringLeadership #TechnologyLeadership #EngineeringManagement #EngineeringProductivity #TeamVelocity #DevCulture #TeamCulture #EngineeringCulture #Retrospectives #BlamelessRetrospectives #EgolessRetrospective #Agile #ContinuousImprovement #RootCauseAnalysis #FiveWhys #IncidentResponse #GrowthMindset #TeamTrust #BuildingTrust #SDLC #TechDebt #OperationalExcellence #Postmortems #SiteReliability #SLA #SystemReliability #IncidentManagement #EngineeringCultureMatters #EmpoweredTeams #EngineeringGuardrails #PsychologicalSafety #DevProcess #EngineeringStandards #ShiftLeft #StartupLeadership #EngineeringMaturity #ScalingEngineering #EngineeringOrgDesign #ProductEngineeringAlignment #CI_CD #DevEx #TestAutomation #Observability #BuildPipeline #LocalDevEnvironment
Guest
Greg: Over time are you seeing a pattern here and is there a way for you to look at that as a leadership team?
Yeah,
dig into the technical things that are going wrong,
but maybe your problem is not technical.
Maybe there's something in the culture that you need to fix.
Brad: All right. Welcome to another episode of How Many CTOs Does It Take Podcast?
I'm Brad Hefta-Gaub and my co-host is...
Greg: Stop or add.
Brad: And today we have a special guest with us, Greg Conklin.
Yeah. So, Greg,
you and I and Scott all worked together at 98.6, but you've done so many other things. Why don't you give us a quick little rundown, introduce yourself and.
Greg: Yeah, for sure.
So I've been doing engineering leadership for a little over 25 years,
I think.
A lot of that has been early stage startups.
Some of them have turned into things you know and most have not.
Early in my career it was real networks where I got to work with Brad.
We really were inventing streaming media.
Most recently I spent a bunch of time at Dropbox right I was leading product engineering there building both the core product and some of the new products we were launching around video collaboration and other document collaboration products.
And then the other startup I joined very early that people have heard of is Groupon, right?
I joined their pre-IPO but post-Super Bowl ad.
So the craziness was sort of reaching its,
well,
what I thought was sort of reaching its peak, but learned a ton.
I saw a ton of different transitions and transformations there.
That's me.
Brad: So welcome very much to our little podcast here,
Greg.
It's so good to talk to you again.
Why don't we, I don't know, Scott,
you want to kind of chat a little bit about our most recent time where the three of us spent time together and sort of things we all collectively learned from that experience?
Yeah, so we all spent about a year together.
Roughly speaking,
give or take a little bit, at 98.6, which was a telemedicine startup.
It was kind of peaking during the beginning of the pandemic as people needed to do medicine online.
I think I was there first and then I can't and then Brad you came after me and then Greg we sort of passed like ships in the night. I think you showed up right at the tail end as I was on my way out the door and I think each of us spent about a year there.
Maybe Brad you might have spent the longest time there, maybe a couple of years there.
I guess I have that badge of honor.
Yes.
Well, it's a great badge.
You know, it wasn't a great fit for me. I personally didn't enjoy working in health care,
but I did learn some things there,
which was really great.
And I thought I wanted to share what I learned with you guys, but I wanted to hear about what you guys learned as well.
And I think because I think there's a good lesson in that,
which is even when jobs don't work out or startups don't work out, there's stuff to learn from them.
And the two things I learned at 98.6.
One was I got a whole new appreciation for empowering people.
And let me give you an example of that.
There was some database upgrade that needed to happen and there needed to be a planned outage for it.
And whoever was the engineering manager working on that came to me and said, you know, I need to do this, you know, I need to get approval for this, blah, blah, blah, blah. And I just started working there.
And so I started going around asking people saying,
you know, who do you get to sign off on this to do this thing? We can schedule it, etc.
And the person who I was working for said to me, well,
nobody.
If that engineering manager thinks we need to have a site outage, a planned outage, they need to go around to the right stakeholders,
make sure they're informed,
schedule it.
That's their decision.
They are empowered to make that decision.
And I had never seen that level of empowerment all the way down to creating a planned outage at an organization before. And that was really influential on me.
I thought I was a person who tried to empower my.
I managers and leaders before and I was like, oh, that's a whole new level.
Cool.
That was one thing I learned. The other thing I learned was about quality.
I've mostly worked on consumer internet.
I've worked on some business to business stuff too,
but mostly consumer internet.
And, you know, you get thousands and thousands of errors a day on an ordinary consumer internet website.
But I saw 98.6 getting.
single digits and double digits of errors a day or a week even and then investigating every single one of them because they were doing health care and they said we can't have you just can't have the application not work during an online medical visit and that really gave me a whole new appreciation for what operational quality was like when when I went into my first operational review and there were eight errors the previous week and every one of them had had a post-mortem on them
I was like,
whoa,
that totally blew my mind for what it meant to really deliver a high quality product.
So those were both, even though I was only at that company a short time, they were both really, those experiences were really influential on me.
I don't know what your guys experience like.
Start with you, Greg, since you're our guest here today.
Greg: Yeah,
I feel like when I joined,
there was.
The company was doing or starting through this transition.
I remember when I first joined, I was told they were reaching the point where they needed actual engineering managers,
right?
And then maybe even the next layer beyond that.
I can't remember exactly how large it was.
It was, it was.
tens of engineers right um or or thereabouts yeah
Brad: I think it was like about 150 total across
Greg: okay yeah
Brad: the work.
Greg: but it was at the point where cross engineering dependency management needed to be figured out right it was a bunch of teams that um each were organized to own a particular part of the product or part of the technology
But they were bumping into each other all the time. And so I think what I the thing I sort of learned there is, well,
AI renewed it is cross team dependency management is hard.
And what I learned is one thing that tends to work is just like brute force it.
And we I'm sure we can talk a bit a bit about that. There's no there's no.
There are some frameworks out there and some ways of thinking that can help like optimize the process a bit,
but there was nothing like
Every so often whatever your cadence was getting everybody in the room
All the team leaders and this walking through the list and being like,
okay
We're not gonna maybe work out all the dependencies,
but like what are the ones we need to get into? So that was one and then the other thing the other thing I learned
was the and I'm curious to get your perspective on this was there was sort of two centers of gravity within that healthcare company there was the engineering team technology organization and then the medical team and being able to work in an organization where
both were sort of co-equal and had very different processes and mentalities and a lot of ways cultures and the sort of things I were working on needed to build the tools to support the medical team and that was for me that was a big that was a big struggle trying to figure out the right leverage the pull or the right way to be influential on that
Brad: Yeah, that's so interesting.
There's a lot, there's a rich vein in both those topics,
Greg.
I'll kind of throw out my topics of where I feel like I learned. I learned so much at 98.6. It was, it was a very.
lesson rich environment let's say um i think that one of the things i would say i would categorize i'm going to say my two big learnings my first big learning was all around culture um i i felt like um 98.6 was one of the most intentional by far uh
cultures that I had ever been a part of like I had never I had never I'd never worked for a company that that had such a strong list of core values and such intentionality around hiring against those core values and such intentionality around speaking to those core values in in every minute and so and
There were a lot of good things that came out of that,
and there were a lot of bad things that came out of that.
And so I feel like one of the learnings that I got out of that is just going to be in the category called culture has so many downstream effects that you need to really be thoughtful about the culture you put in place.
Um,
and to Scott's point,
like, um,
that kind of like empowerment thing was an example of that, you know, but another really high level, high order bit that I would say is that, um,
there,
a lot of energy was put into the culture around,
um,
In the hiring process around filtering out sort of like programmerness or like kind of that kind of toxicity that you've seen in so many engineering companies where it's like, you know, this real like, you know, alpha hard push type thing and that got filtered out really well.
And a really strange unintended consequence of that is that also happened to filter out bravery and willingness to.
uh sort of like speak up
Greg: Yeah.
Brad: and uh speak out and so that's that's a that was a thing that I learned from that process now I don't have any I don't know that I got any great answers out of what to do instead but that was definitely like a thing that I learned from that
The other big category I would say that I learned a ton from, and actually I learned a lot of this once Greg joined the organization because Greg brought a bunch of skills and approaches to this problem that I hadn't personally hadn't seen such strong leadership in before Greg came and kind of did it. And that was sort of like solving the problem of how do we have operational excellence.
uh,
while dealing with technical debt. And I think that one of the, so for example, when I joined,
um,
they had a, uh, the,
the product had missed, uh,
the uptime SLA for five quarters in a row, uh,
when I got there and, um,
and
it was because of technical debt and problems associated with technical debt and sort of like turning that into like just going from the we're investigating these incidents into and now what do we do with that?
I learned a lot about the processes and skills to solve that problem.
How many companies do you think actually have?
and uptime SLA that they track for five quarters in a row.
I would assume many
Greg: Yeah,
Brad: do.
Greg: I would think many do.
I think that's
one of the relatively straightforward metrics to kind of measure.
I feel like your system's out of the box.
Like AWS dashboard will tell you your uptime.
And there's also a bit of a...
I don't know if meme is the right word,
but like five nines is a thing.
And if you can't do five nines, you can do four nines.
If you can't do four nines, you do three nines.
Brad: Greg and I worked at a company 20 years ago together that was claimed five nines. That was a revenue science.
Greg: Yeah.
Brad: We did the five nines on one of the earliest versions of behavioral ad targeting.
I think more of what I was trying to make is I don't know that most companies set that standard.
They kind of react to it.
If systems are down a lot, they say this is the problem.
We need to get it back up.
But I do remember we had contractual obligations at 98
Greg: That's
Brad: .6
Greg: right.
Brad: for certain uptimes. So we paid a lot of attention to it.
I'm curious to dig in more. Greg,
you can tell us about how did you handle that situation of.
dealing with these stability issues through the tech debt and
Greg: Well, four
Brad: why did 98.6 which is only four years old have tech debt
Greg: years old is plenty of time to accumulate a good amount of debt,
right?
I think the solution,
there's layers to this, and I think you have to decide.
where on the operational or team maturity you are on this scale,
like do you have these, I mean Scott to your kind of gets to the point of your question,
A,
do you have these metrics,
B,
have you told your engineering team they matter,
right,
and then do you have the sort of observability in place to know how to debug where to debug with something.
Something like that starts to go from green to yellow to red.
Brad: Yeah, and I think that like.
It's interesting that Scott,
you said that you felt like when you got there, there was sort of like, you know, in the operational review,
it was like any any error that happened, there was a root cause analysis of it.
One of the things I noticed was that we we had the process that they had there was they had team members were on call and they would rotate on call.
And when incidents happened,
what it almost always,
at least when I first got there in the first couple quarters of being there,
it was a very much a put out the fire, not a.
figure out why the fire started and move the kindling and the gasoline away from the open stove.
So it was all putting out fires and it wasn't I didn't see a lot of progress being made against really coming back and saying, well,
this is the root cause and therefore we should invest in fixing the root cause.
Greg: Yeah,
that's what I sort of recall too,
like the post-mortem process.
process was it existed but I'm not sure to what extent like engineering teams were putting time into doing the report doing the review either with us or with somebody else understand what was sort of gone it was sort of okay that fires out back to the backlog that the product manager wants me to
Chase down.
Brad: Yeah.
And that's kind of the key insight that I feel like I give you credit, Greg,
for bringing to this. And I was like, after seeing you implement this,
I was just like, oh, this is I am going to use this from now on in the future. And that is, OK,
we're going to do the RCA and then what we're going to do is we're actually going to have like a leadership team meeting that's a recurring.
No-shit-it's-going-to-happen meeting where we're going to walk through the RCAs and we're actually going to ask ourselves,
okay,
what is the technical issue that this RCA is calling out and how likely is it to happen again and therefore we are going to put fixing this issue actually on the schedule.
Right. And when I say it like that, it sounds super simple. Like, of course, why wouldn't you do that?
But it was literally like scheduling the meeting where director level leaders would come in and we would all like we're all sitting there holding each
Yep.
other accountable to be like we read the RCAs and this is what it said. The database is three versions past, you know, the latest version or whatever.
Greg: with the third party off system is is super flaky right and like and then what i mean by looking at the maturity of the team i feel like there's a there's the next couple level ups there the next couple level ups is okay
over time are you seeing a pattern here and is there a is there a way for you to look at that as a leadership team i know in the previous podcast scott you had talked about like creating like a tech debt backlog right um and understanding that the process for looking at okay what's what's been failing and let's make sure we have a more longitudinal plan for getting that done and then the next one from there is like
Yeah, dig into the technical things that are going wrong,
but maybe your problem is not technical.
Maybe we can go through the list. Maybe it could be something about the skills of the team.
Maybe it could be about the nature of the business.
Maybe it can be about, you mentioned culture.
Maybe there's something in the culture that you need to fix.
understanding those.
Brad: So can I ask more about this meeting and this process that you set up?
Greg: Sure.
Brad: Who was in that meeting?
Who were the people? Was it with product management in that meeting?
I guess I have a few questions.
My first question was who is in the meeting?
My second question is you're going to put stuff on a team schedule,
which is inevitably going to be adversarial with the product backlog,
right? It's a zero-sum game.
There's only one team, one set of people on the team that can only do so much.
How did you navigate that piece?
I guess the two questions I have.
Greg: Yeah.
So as an engineering leader,
you, I set clear expectations.
Like these are, these are invariants.
We talked about five
Brad: Mm-hmm.
Greg: nines, like that's an, that's an invariant.
So it doesn't mean it's, it's a non-starter to, I mean, you're always going to have those conversations, I think when business starts ended up in a rough shape and you need to make trade-offs, but.
The outcomes and the to-dos from a post-mortem are priority zero,
and you can put an SLA around that.
Like these issues need to be resolved in two weeks,
or else what is what you need to figure out.
Like everyone gets six demerits or something like that, right?
But that's sort of how this works.
Brad: Yeah,
and I think that the...
The key insight of the let's have a meeting where once a month, I think, was what we scheduled. And it was, so to answer your question directly, Scott,
my recollection was we had, it was, you know, sort of me as the VP,
you know, or in this case, I was the senior most engineering leader.
the next my my staff basically so the directors um and uh the engineering directors and um and i think that we that meeting did include the the product uh like the senior most product people in that case they were i think their their level was director at that point not a vp but um and you know they would come um and
I think that I don't know that it ever necessarily became that adversarial, although kind of getting engagement with them about the importance of quality,
that was something that was kind of an ongoing thing that we were working on.
And to Greg's point,
it was like the or else demerits.
Greg: where Brad had set the tone that we didn't want to show up next month and not had made progress against these things.
Brad: Correct.
That's right.
Greg: And so it was just that recurring accountability that we're all going to sit in a room with a guy who has resting serious face.
Brad: What I meant by adversarial is not necessarily adversarial between the people,
but.
You know,
product managers typically want engineering teams to spend as much time as possible working on their product backlogs.
And that's a zero sum game with then issues like this, which I suppose you could say is in the sort of agile comes out of the agile,
right? This is just deferred work from some previous product backlog work that didn't happen.
Did you have an agreement up front with those product managers?
For sure.
I feel like there's a lot of engineering judgment that needs to be applied during the postmortem, right? Because you can end up in situations where the action items out of a postmortem can be, you know, in certain cultures it could be, ah.
well if it's an if it's a if it's a post-mortem action item and it must be done then i'm going to stuff it with stuff i want to get i want to get done right um or the other culture side of the culture can be like i'm going to i'm going to minimize the amount of things i put on that list of things that need to get done because i got i got a product manager that's breathing down my neck so there's just i don't know if i have any magic spell for that other than you have to apply
The judgment there that, yes, this went down, there should have been a unit, there should have been unit test coverage there.
Okay,
that seems pretty straightforward and light and as the engineering leader in that meeting,
yeah,
I hereby bless that and stamp that as a postmortem action item that should take priority over getting the product backlog done.
And then I alluded to, you know, when Brad and I were there, we encountered a situation where we were getting a lot of outages because our third party authentication system was flaky.
And that's not so simply declared a postmortem action item just to like rip out your auth system. So that one's like,
okay, cool,
that needs to, you know.
be put in the hopper for a bigger conversation at the leadership level including product managers around are we are we going to do this or not
Greg: Yeah, and that was a good example where to Greg's recollection of the story,
like this was a third party off system.
It was the source of many of our missed quarterly SLAs and kind of.
The idea of like instead of just having the RCA that goes,
yep,
third party auth system failed.
That's what happened here to actually like have that catalog and go,
it has happened,
you know, dozens of time and look at the actual like impact on our on our contracts because of it.
And now we were able to like surface that and go, look, this is going to keep happening until we invest in this.
effort and and you know kind of the the
Going from the mindset of, oh,
errors happen,
we put out the fire, and we document that the fire happened,
to a mindset of, we're going to look at all the fires that happen, and we're going to start to look for common themes,
and we're going to start to invest in the tech debt creating those common themes.
That mindset shift allowed us to then successfully have the conversation with the senior product team to say,
We need to invest in this.
This is a huge red flag here that we have to fix this.
Our product is useless if people can't log into it.
Right.
Brad: Yeah.
Greg: And it took that evidence and it took that sort of like process, that additional process was the key to unlocking fixing something that then was a major,
you know, a blessing to the engineering team because like now all of a sudden we didn't regularly have fires on that part.
Brad: One quick Dropbox story that I think about a lot was I was in a series of these postmortems and I was detecting this pattern and the pattern was for some of the Dropbox website that isn't heavily trafficked.
There would be a code change that would, when deployed,
the page just didn't work.
Like it would immediately and entirely 100% of the time give you a 503,
right?
I was like, okay, there's something going on here,
and obviously when you dig in, it's not as simple as you think.
It's about the different environmental and experimentational setup between the production environment and your test environments.
So I gathered up the staff engineers,
and I said, look.
let's do this like meta postmortem every quarter where I want you to look at all the sabs and all the problems and I want you to come back to me with your top three and I'm going to get those things we're going to get those things done and they did that and when they came back they were like
Well,
Greg,
if you really want to do something that's going to reduce our quality risk,
it has nothing to do with these salves. It was, and I don't know if I want to mention it on the podcast,
but it was like some very dangerous activities engineers were doing to get customers back in shape.
That's the thing you should fix.
And that's when a light bulb.
lit up like okay you just need to there's a lot of value in just creating the space to have the conversations around the engineers that know what's going on
This will grow.
Greg: So what you're saying, Greg,
just to clarify,
not to intentionally completely air the dirty laundry,
but you're saying that like one,
you implemented a meta-analysis of the RCAs. Like that's essentially the same playbook that we ran,
you and I ran at 98.6. So you implement a meta-analysis and then it happened to be that the meta-analysis came back and it was essentially a,
I'm going to put this in the category of a culture.
culture thing because it was you had essentially cowboy ops or cowboy dev
Brad: Right.
Greg: happening um in in that was
Brad: Well,
Greg: what they were the doing
Brad: eye opening
Greg: yeah
Brad: thing was, it was something I was not even aware that was happening.
Right.
Greg: right
Brad: And that had me reflecting like,
okay,
why did I?
Why did I not know that was happening?
Right?
You think you have these processes in place that will cover these sorts of things,
but
Um,
you gotta, you know, open up the space to have your engineers kind of lift up these risks to you in a way that's, that's, that's structured and you get the visibility in that, even to that sort of stuff.
Greg: You know, it's interesting.
I don't know if this is, this makes me think about another thing that I learned from.
my time at 98.6 and again like super talented team and i have a ton of respect for the folks there and they worked really hard um and so uh i don't mean this as a judgment anyway but but one thing i noticed was there was a a strong the language around blameless retro had this um
I think unintended side effect where and I've stopped in my current team, I don't use the term blameless retro.
I use the term egoless retro instead.
And the reason for that is that they they would not put people's names on any of the timeline of what happened.
They would basically try to anonymize.
the TikTok around understanding what happened. And what I noticed was that makes it really hard to have a...
Like, well,
what really happened here?
Like, no one's going to get fired over this. Like, it's OK that Brad,
you know, logged into the terminal and started like, you know, deleting rows out of the database. I need to know that that happened,
you know, like and I'm just kind of curious,
Greg,
do you feel like when you say like creating the space,
like how do we get?
How common, I feel like it's pretty common for people to be afraid of kind of really laying out what happened in and it's and how do you create the culture so that people are not afraid of really talking about what happened.
Brad: That's a great question.
I think that's probably a specific question around the general question of like building culture.
Like I think.
I think it's top down and bottom up.
Like it's easy for top down leaders to completely break a culture in that sort of environment where something like that happens and you start pointing the fingers or you start digging in there.
And then bottom up in that.
like you have to make sure that culture and that expectation is set before you get into that post-mortem meeting because at the point at which something has failed and things are a little bit radioactive you're and you don't have those expectations set that it's going to be okay then you're going to have a bad time
A language I used around that.
So there's a lot of language I use. I think you talk about it all the time. You use the word blameless. I've never used egoist, but I kind of like it.
I would continuously emphasize we are here in this room to come up with action items and working agreements to avoid this mistake in the future.
We've all made mistakes.
whoever made this mistake they know it they're not happy about they're unhappy with themselves about it like we're not here to pick on greg for fat fingering something in the terminal we're here to figure out how we can make it so that that the opportunity for greg to fat finger something doesn't even exist any longer either because we've got
We got guardrails around it or automation around it or whatever.
I came back to that language, action items and working agreements.
That's the outcome we're looking for,
not who screwed up, but what can we do to avoid it or minimize the impact of suppose the last radius.
So.
You wrote a blog post, which I think is relevant to this part of the conversation about things to do early at a startup to make it easier in the future.
Yeah.
I did.
These were just based on sort of observations I
I had I've seen the opposite as well where early startups decided early startups populated by engineers that had seen a thing or two at larger companies and decided to kind of over architect the scalability of it ends up slowing them down I think maybe we've all you're laughing and maybe you've seen some of that some of that too but
Yeah.
in a couple
In a couple places I've seen engineering and engineering leadership lay down certain expectations around how certain standards will be put in place.
One that sort of struck me, I didn't kind of realize it was too late at a place I worked was performance,
like product latency and speed.
Even just saying like,
okay, we expect web pages to respond in two seconds,
whatever that happens to be in certain percentiles and certain measurements of that, or backend services need to respond in 100 milliseconds or things like this.
It set the expectation. And what happens if they don't, like you can decide and maybe you crank that down or up over time,
but just setting those sort of expectations.
means that, okay, when I am working with my team to decide how I'm going to meet the requirements from my product manager,
it's non-negotiable that it is this performant, right?
and then the flip side is you know i would talk to teams that didn't have those sort of standards and they'd say well greg if you if you wanted it to be that fast we never would have built it this way in the first place and that's a right and that's like okay oi that that seemed like a conversation we should have had to
Greg: Yeah.
Brad: had earlier and so that that that's that's one that's one example and there's other examples of like i mean we had talked about reliability and
setting however many number of nines and
Mm-hmm.
some other engineering standards you can put into place performance in my experience has been one where it's always hard to kind of retrofit performance even reliability and uptime like it sucks that you have to go backtrack a little bit but it's it when you talk to your engineering teams about what it would take to get reliability up
It tends to be just work, right?
Yeah.
But then performance seems like, oh shit,
like, this wasn't, I turned, it turns out I built a minivan,
right?
Which is what I thought we wanted.
That makes it hard.
If you were starting.
a new company or new building a new application new web app today new online service and what are the top of those things that you could put in place early that makes life easier down the road what are the top three what's the top one
I mean, the things I sort of written about were like expectations and standards.
So like I would, I would.
I mean, I have a list on the blog.
Performance is towards the top of the list. I think analytics,
right,
understanding customer behavior.
And by that, I sort of be,
so a lot of these frameworks you can kind of get off the shelf have like exception logging and, you know, error reporting.
And depending on how big you are,
you can start with grep as your tool and work yourself up from there.
By customer analytics, I mean like who's using your website.
Like the data you would need for a project manager to be able to make a decision.
like a Google Analytics or Amplitude or Mixpanel kind of thing.
Exactly,
exactly.
Where does test automation fall in your framework?
Test automation is on that list.
And by test automation,
what I've seen is...
Engineers have this pre-installed expectation that they're going to write unit tests or they're going to write end-to-end tests.
And then over time what ends up happening if you're not careful is your build system starts to slow.
It starts to become flaky.
right your build time goes from 10 minutes to 30 minutes to hours and then you sort of reach a tipping point where at least I've seen this in a couple places I've worked where the the CICD system takes so much time it actually starts changing engineering behaviors around how they write code right because if it's going to take three hours for the build to run and likely to flake out
then I'm not going to do the quick iterative development process I'm going to batch up and so it's not just yes you should have unit tests or you should have automated testing but like what what are the what are the boundaries of those things like are you going to set an SLA for your build and if it goes beyond that sort of amount of time or the amount of resources the amount of unreliability that you're going to
Push the big red button and do something about it.
Yeah, we did that at Rover where our target was 10 minutes and when it got to 20 minutes, then we took action.
And I would say about every six months,
we had to have someone spend some substantial amount of time working on it to figure out what the next iteration of making it go faster was.
Yeah, and at Dropbox, we had reached a point where our build times were really quite slow and it was starting to change the way sprints were run and the way engineers would calculate,
you know, the work they could get done in a certain iteration.
And we ended up doing a little project to sort of analyze our end-to-end testing.
right um uh like what was going on there why was it flaky and there was a bunch of infrastructures things like you know you at that particular scale in order to do sort of a an end-to-end test you needed automation that would
build an entire mini version of the Dropbox infrastructure just so you can run a test right and that that took some real infrastructure work to kind of work out but then we just sort of did an audit of these tests like what are what are these tests I feel like engineers they look at the code they're building to build the product and
there's this notion that you want to refactor and re-architect parts of the product but it's not really natural for you to do that with your test with your
Greg: Yeah.
Brad: test and
Greg: How often do you go back and refactor your tests?
Brad: what we found what we found is like a third of the tests we could just not run like they were they weren't useless but like they were covered by other tests and then like another i don't know 15 of the tests
were not not critical and so it could be run on a different cadence right not not not for every not for every sort of um code change and that like cut that part of the test infrastructure in half in terms of time which was which was huge
Greg: You know,
I'm curious about what you think about this, Greg.
We ran into this, you and I ran into this at 98.6. And it's so what I learned from that, I added to my list of like,
every new team, I want to solve this problem early.
Brad: Yeah.
Greg: And that is the ability for like,
Out of the gate, do you have an architecture and a plan that allows individual developers to actually run?
the system before making a pr you know like do you have your as your like i almost sort of it's like uh what is it like design for manufacturing where people like kind of think about the design of their physical components so that it can be manufactured i feel like uh design for debugging or design for individual developers to be able to
to run the stack when they're making code changes.
I feel like get that done early or else you can never fix it later.
Brad: Yeah, for sure.
And being able to run the test locally.
Greg: Yeah.
Brad: For sure.
Greg, you talked about how the build system can change engineers'
behaviors.
So can the local development environment.
Something I've seen recently.
Is engineers having trouble?
Greg: running the what Brad was saying having trouble running the whole system locally having trouble running the tests locally so then they want a staging environment to do all that on and then you've just the cycle time becomes really long all because we're not taking the time to invest in actually just getting it to work on the desktop
Brad: Well, and even if you can't get it, there might be reasons why, you know, some parts of your system can't practically run on every single desktop.
At least then make sure you have.
ephemeral environments that are dedicated to the engineer right so that it's not like we're just throwing it into dev before i can do any testing
Greg: Mm
Brad: right
Greg: -hmm.
Brad: like that's that's what i saw i've seen that with teams when it's like there's no practical way for me to test this except for go ahead and commit it and check it into dev and it's in the ci it's been it's it's in the ci cd and it's sitting there in dev and i've you know i'm going to feature flag around it to test it or something
something
Yep,
you
I
know but like that code is in there it has polluted your main line at that point and if that's your only way to test your feature like talk about like super long cycle times right that's that's horrible
Greg: Have either of you worked with GitHub Codespaces?
Brad: have not.
Greg: Dying to meet somebody who's actually used them.
They seem like the answer to so many of these problems,
and yet I have not come across a single person who's used them.
Brad: You asked me this in episode one.
I still haven't researched it because I have a system that's working like the local devs can work in the local environment and then they can also push to an ephemeral environment.
And man, those two things right there are so powerful that.
Greg: When you say ephemeral environment,
each developer has their own environment.
Isn't that right?
Brad: yes yeah
Greg: Their own staging
Brad: i've
Greg: environment.
Brad: seen that too yeah
Greg: Well, that works.
Brad: or even like a you could even do it with off a pull request like every pull request gets its own environment right so then a developer could have multiple things in flight if they wanted and actually like
Go check it out over here. Go check it out over there.
Greg: I think that's how Codespaces works.
But there's a scale and cost problem there,
right,
which is if you're setting up a staging environment for everybody,
it starts to get very expensive really quick because those things are not in use very frequently.
I might use it four minutes a day to test something.
I guess if you shut it down, if you have a way to shut it down and ramp it up, you save money.
Scott: Yeah.
I mean, places like Dropbox had something similar to that where it would fire up the right number of instance or an instance in AWS,
stand up a mini environment,
populate it with mock data, and then it would persist for some period of time and then be torn down when the developer was done with it.
Greg: There must be third-party solutions to do that.
I can imagine saying that to some sort of cloud DevOps-y type engineer and they go script the whole thing out and build it all their own.
There must be solutions for that.
Brad: Well, my point is.
make sure you have it out of the gate like don't don't wait till it's too late and you've got you know 100 devs and they're all sitting there pulling their hair out because the only way for them to test their stuff is to you know
Scott: Push
Brad: deploy
Scott: it.
Brad: to
Scott: Yeah
Brad: dev to push it you know that that's um that's my point is like i'm i'm sure there's we have a solution that's working for us it's not that expensive code spaces might be a great answer for um
you know other folks but yeah i
Greg: And you build that whole system yourself or did you use some sort of third party solution for it?
Brad: mean it's not it i mean it's just kind of like you know whatever your standard infrastructure as code type stuff like terraform or whatever and you know you can usually just pop up an instance pretty quickly it's not free to build it like you have to build it but it's mostly just like you know standing up a
Whatever ECS based on a terraform
Greg: That engineer has like a command line tool they can do that from their desktops. They fire up my got
Brad: We have it wired up into github actions,
so it's just like boom you open a pull request and deploys to your stack and
Greg: it cool sounds
Brad: Yeah
Greg: like you have a product there
Brad: I am I gonna go that far
This is so much fun, Greg.
It was great to reconnect with you and kind of go through some of these things.
What do you, how would you put a bow on this conversation?
How would you wrap this up?
Scott: Oh my gosh,
how would I wrap this up? I mean, we talked about a bunch of different things.
I think overall,
it's about making sure as an engineering leader,
you're setting clear.
expectations around where the where the guardrails are like where where are the guardrails um i think as an engineering leader you want you want to see your team building a bunch of stuff shipping a bunch of stuff getting it in front of customers having the customers be super happy but you you need guard these guardrails at different scales those guardrails could be very different but even at small teams
early stage it's not it's not terribly hard to just start setting up guardrails to make sure that like okay well when you crash into this guardrail like at the very least i'm going to get a slack message from you um and then we can and then we can decide and then we can decide as a team what we're going to do about it
Brad: Yeah,
I mean, I think that, you know, my summary is that.
Sort of like the seeds that you plant early on in the organization,
whether those seeds are cultural seeds or technology seeds or process seeds,
they grow and they result in a garden that is in some shape,
you know, and it's a lot easier to be planful about.
the cg plant then to come back later and try to weed it you know something's
Scott: yeah something's going to grow something's going to grow there what
Brad: growing
Greg: That's a great way to say it.
Something's going to grow there.
Scott: are the what are the things i when i do skip levels or i'm talking with staff or principal engineers or even i'm talking to engineering manager about their team i want to know if they're are they proud of are they proud of what they're doing are they are they proud of the work
that's like a high level because if there's quality problems if they're always dealing with 2am pages they're not they're not proud of that they're not proud of that right yeah
Brad: Yeah.
Greg: Great question to ask people.
I love it.
Brad: Yeah.
Scott: really great this has been great
Greg: Cool,
Scott: catch up
Greg: man.
Scott: really enjoyed the conversation this is awesome
Greg: Before you go, Greg,
where is your blog so everyone can find it?
Scott: gregconklin.com easy
Greg: Easy peasy.
Brad: Nice.
Scott: peasy yeah
Brad: We'll add that to the show notes for sure.
Scott: awesome well thank you two really appreciate it
Greg: All right. Thank you.
Scott: yep bye
Brad: This episode of How Many CTOs Does it Take Podcast was edited by Saffron Heppigow.
Our theme song was AI generated by Brad.
Please follow us on all the social media platforms at at HowManyCTOsPod.
You can find us on YouTube,
LinkedIn,
Instagram,
Facebook,
Threads, X, TikTok,
and Patreon,
or at our website at HowManyCTOsPod.com.
And remember to rate, review, and subscribe on the podcast platform of your choice.
Thanks for listening.