Yeah, so I think it's twofold, right? Like the first kind of obvious one is like, I think we don't manage infrastructure as code the same way that it has been for the last decade, right? We actually like package up smaller pieces and make them composable, right?
And so it doesn't require brand new interaction. Like you don't have to make new Kubernetes manifest and deploy them, right? Like you can just take what the ops team has packaged, right? You don't need to make a new main.tf to string modules together. You get what the operations team has packaged. And so it really lowers the, the amount of code review that an operations team has to do. And it shifts them to like adding value, right?
And I think from the developer side, that consistency in like user experience between Helm and Terraform is just really nice. It’s just one less thing you have to think of while you're trying to ship product features and get closer to the customer, right?
I think the other side of this is… and it's funny you kind of like bring up PaaS. I think PaaS is risky beyond a certain point because like there will just be a moment you need to grow and a million dollars to peer a VPC is just money you're not going to want to spend, and you're going to be forced to, and that kind of stinks.
And so the question is like… I look at something like Heroku and the main draw to me, at this point, it comes with like scale and optimization of your resources, right? So like I have plans and those plans are big enough chunks that it's really obvious when I need to go up and down.
In the cloud, we don't have that. There's so many micro adjustments you can make and like this manifests itself by like the hundreds of consultancies optimizing your cloud spend, right?
And it's like, how do you create that thing where it's like, here are 10 resources in buckets that are obvious with alarms that'll tell you if you're scaling out of them. Like you can now provide that through software, right? Cause the alarms are now integrated, right? The thing is instead of every AWS instance in a PR for Terraform, it's like, here are the four we support, move up as you need to.
Yeah, and I think the thing that's really interesting that I've appreciated about our approach is it really does feel like for the longest time… I'm an operations engineer as well for anybody who's tuned into this for the first time, what an episode to tune in to.
But for many years it's like… especially in one of those orgs where like the Ops team tends to write the Terraform and then like also write the Terraform for engineers… it really does seem like you do everything kind of twice, right?
It's like you write your shared modules and then you consume them. And it's like, you're always learning just enough of the operations team’s tooling and process and words as an engineer in many organizations just to get cloud resources, right?
I think the thing that's always been frustrating for me was that developers through and through are fine with abstractions, right? Like we see people run on, you know, Heroku. You see people run on Vercel. Like there's plenty of successful organizations that are running on these businesses.
And I mean, honestly, if I sat down today and Massdriver didn't exist and I had an idea for a side project and Massdriver didn't pop into my head again, I'd be running it on Heroku in heartbeat.
Now, people might be laughing at that, but like, shit, if I got a side project, I got stuff to do, right? I only have so many hours a week to work on this thing. And the operational side of it is something that's not going to make that side project a success or not, right?
I think that many organizations, their teams are in a very similar place. If I've got 45 software teams and they're all working on very specific initiatives that like create revenue and move a business forward.
They're all thinking, I've got so much time to deliver this. I've got external pressures from project managers, stakeholders, et cetera. I've got life going on outside of this. I’ve got 40 to 50 hours this week to ship value. And if I have to stop and learn a little bit of the cloud and a little bit of my ops team tooling and how we do it every step of the way, that is a big context shift. That is a hard context shift.
What I'd love to know is from your point of view, like how does something like Massdriver (like our approach) allow people to get that self-service without that huge context shift of just like, “Okay, I'm looking at a different tool set now. I'm looking at a completely different world. I'm looking at 7,000 knobs for fine-tuning RDS or an EC2 instance? Like how do we give people that self-service without just context switching their life super hard?
And the thing that sucks about that… people hearing this, and maybe you've never lived this life and lucky you… is that role, like if you found yourself in that role, it's an extremely hard one to get that team out of because when you found yourself in that role, you're typically already underwater.
And like finding that room and finding that like, that like Google like error budget is so hard in most orgs. Like it's a hard one to convince the people above you that you need to do. “We’ve got to slow development so that we can make this team better.” It's a hard argument, right? It's like, can I prove that I'm going to make this team better? Like, can this team really add value if we stop shipping software and like focus on our own delivery.
We both know that the answer is a resounding yes. But many teams don't have that marketing and language within them to go out and talk about it, to figure out like, how do we do an MVP to show that we can pause and make ourselves more efficient?
And I feel like that's one of the things that we're trying to help with, right? It’s like, if we can come in and help two different people on your team become more efficient by neither of them learning any new tooling. Like you start to see that people start to rise above water a little bit, right? And like now the org sees the value of it. “We're shipping software faster. What's happened in the past month?” It's like, “Well we're letting people get what they want, but we're not making them learn new tools to do it.” Like that's beautiful, right?
Like you see people clicking around in like the AWS console and like they're getting stuff done. They have no idea what they're doing, but they're reading and they're moving. They’ve got enough docs right there. That's not there in Terraform. It's not there in Open Tofu. It's not there in Bicep or whatever, right? They're clicking around, they're having a good time. Until they need to reproduce the environment, right? Or until somebody needs to understand what's going on at one o'clock.
I feel like that's one of the places that I'm really excited about where we've ended up. Because we actually see that… we see those customers every day that just they don't have cloud experience, but their operations engineer has given them enough where it feels like they know everything they need to know to run this thing at scale. And that's powerful.
And it gives them the time to come back in and learn about the stuff. How does this work under the hood? I actually have the time now and the interest to come and figure that out. And I feel like that's so hard to get to as a team if you don't have a management hierarchy that understands that and lets you get to the point where you have enough time to tread and get above water instead of just kind of get a nostril above the surface of the ocean every three or four weeks.
By making it something people think about ahead of time, right?
I love that analogy of we don't code review every single input. Maybe you do … hold on, somebody in the Elixir camp is like, “Oh no, I use stream test and we test literally every single input.” But like most people don't. The reality is most Infrastructure as Code is a bag of configuration, where we're essentially writing code to be like, we're going to make this HTTP call from a CI pipeline.
And it's just like, okay, my app makes HTTP calls all day and I look at the function, but I don't look at the millions of possible input combinations that are coming from my users. My assumption is I've written a good little black box that does a piece of magic. We've made sure the insides of that black box are happy. And then we can use it. We're attaching it to a web controller. We're attaching it to a gRPC function. People are calling it now.
And when we get to Ops, we're like, “Whoa, whoa, whoa. You want to call that function? Let me take a look at that first.” Right? Which when you think about the scope of software and how we write and the differences in our two systems from the development side to the operations side, when you think about it like a developer, it seems extremely silly. But this is where we are.
This other really great analogy, I think, especially with the reactive processes most people have around compliance… I felt this very recently. So I haveTSA PreCheck. I love it. You know me. I'm dramatic. I love the nicest… I like the nicest everything. I'm like, you know, man, if I go to an airport and they don't have a PreCheck line, like there's a good chance I might take an Uber to get to the other airport. And we were flying. I can't remember where I was flying from. But I got in the TSA PreCheck line and I'm like, “Yeah, self-service. I'm cruising.”
And it was one of those airports where they don't actually have TSA PreCheck, they just have the line and then they put you into the regular line with that card, but they don't quite give you like all the rights. So all of a sudden I'm taking my fucking laptop out, I've got my shoes off and I'm like, “I was just in the PreCheck line, but now like I'm getting scrubbed down.”
And that's what most self-service feels like to me. It's like, “Yeah, no, you guys can do whatever you want.” Like we did it. We've delivered self-service. And then you're like, “Sweet, I can just…” and it's like, no. Plan slaps you, checkoff slaps you, OPA slaps you. You deploy something that's wrong, you're pinging somebody in Slack and they're like, “Let me tell you why you did it wrong. You should have had me look at the PR because I know databases more than the person that approved the PR.” Right?
Our processes in many self-service systems are inefficient. We want to give folks self-service. Self-service is I come in, I pay, I get my food, I go. Like it's not… me just getting tripped on the way out the door, somebody's stopping to check on my bag when I'm leaving McDonald's. Self-service today really is only half the picture and we kind of just trip people up along the way.
That being said, it does feel like many self-service systems are almost intimidating to operations. I know that if I don't have something where somebody's pre-approved, they're going to come back to me to ask me if they can do this. I've given them the ability, but now there's a PR. But the scarier part of that is when that PR gets merged, whether I'm involved or not, I'm back to that 1 a.m. problem that you mentioned earlier. I don't know the system that you've built now, right? And I think that is, rightly so, terrifying to many ops people who are currently underwater.
Besides adopting a system like Massdriver, how do operations engineers get to that place where they can give people self-service and truly feel that they're going to get compliant systems that they know adhere to all their company's organizational non-negotiables on their own? Like, what options are there out there for somebody to go and put something together like this without like leaning towards necessarily a vendor?
I'll look at your Elixir code all day long. You'll look at my Elixir code all day long. We have critiques for each other. We do that. But when it comes to infrastructure, again, it's making an HTTP call. It's calling a function. And it's like that we never… maybe in a test suite, but that's about the extent of it.
But that's the wild thing about IaC - we do have these test toolings. We can use things like Terratest or even Open Tofu or Terraform test to test our modules where we wrote the shared ones. Why do we have somebody looking at the code down the line?
And I think (1) is because it's an artifact of the way that we do it through something like Git. And I think (2) is I feel like people are still just a bit nervous about that loss of control. If you can have approvals in place, there's nothing in SOC 2 that says a bag of meat needs to click a Yes button. It says you need to have approvals. You need to make sure things are compliant. You need to have an approval process in place. It doesn't say it can't be automated.
I think that's one of the key things is like not kind of chaining yourself to this idea of like compliance theater where you're like somebody has to click the button. Like ta-da I'm here. I'm going to click the button now and things can roll forward. Like our job is automation. But then we put this like one part where we're like, we've done so much automation, but let's stop and ask a bag of meat what they think about it. Right?
Meanwhile, we're starting to see AI everything. AI this, AI that. But we're like, we're still going to stop and approve something, right?
How can we be more proactive about these approvals? How can we limit the inputs to these systems so that they're approved from the get-go, right? You can just go run the thing instead of writing some code, getting it approved to run the thing.
It's really wild like how much of our job is about automation. But when you think about like what we've automated, it's like… It's like we make these calls from like one place and it's in the weirdest runtime, like your CI/CD, right? And like we're not truly automating it because there's always like a little stop process in it. So it's like automated-ish. Ish.
Yeah, I mean, it's funny, that going from reactive to proactive, it's like… the spirit of a lot of these compliance frameworks is like prevent unauthorized changes to your system, right? And I think unauthorized changes is all about like limiting the scope.
So with like code, right? New code, the potential inputs into new code are infinite. Anyone can type anything they want, including something malicious. And it's really important that we really focus in on that and probably get more than one set of eyes on it, right?
But when it comes to configuration, it just feels like a giant hurdle. Like it should just be JSON going past to your automation, right? And like people should just be able to self-serve and that should be audited, right? But the second that you have rich validation and limited number of inputs, it's like, cool, you're pre-approved, you're reactive… I mean, you're proactive now instead of reactive.
I even think about code review and how much I actually trust code review. Like how many times have you gotten a giant Terraform PR and you're reading it… halfway through you're like, “Cool that's an instant size, it's real. This will pass.” versus like, “I'm going to go call up the product lead on this product to make sure that that instance type is actually appropriate. I'm going to call the CFO to be like, we anywhere near a cloud budget because this might push us to the edge.”
I feel like that's not happening in code review. But when you're proactive in building these automation systems, you can actually bake that stuff in ahead of time. And if somebody needs to go outside of that loop, outside of the 80 % use case, you've built a product feedback loop.
A developer has to be like, “I think there's a case for a new instance type.” And it's like, “Cool. There's a couple of stakeholders who are going to have an opinion on that. Let's determine whether or not that's reasonable. And let's add it.” Or “Let's make a new thing that maybe there is one use case for this new thing. And if you need this, you can use that. But we'll leave the old one the way it was.”
Yeah, I think the thing that's wild with that is like… you know, I'm a Kubernetes fanboy. I develop locally in Kubernetes. That's my life. I'm fine with it. I'm happy. I'm happy where I'm at, guys. Don't judge me… but like, you know, we're in Kubernetes. We're making like, “Hey, what are your resource requests? Like, how many CPUs? Like, how many RAMs? Like, meh.” And I'm like, “Oh, like, I run my thing locally. I got an idea. I maybe need like 256 megs of RAM for this.” (We write in Elixir, guys, so we don't really require a bunch. Enjoy your Javas).
But like, you know, I throw in some numbers. I'm like, “Hey, you know, one to two CPUs.” Like I got an idea of what my resource requests are, but it is funny like hearing instance types.
Like this is one that always drives me wild is, you can put anything you want in that field. It's a string. I could type and type whatever I want. And like, man, I've been using RDS since it came out. I forget to put the DB dot on my instance types almost every single fucking time.
Like it's like I know databases. My master's is in database systems. I know how to size a database, right? Every single time I make an RDS instance, I'm Googling the fucking obtuse names of instance classes in AWS, trying to remember how much RAM they have, how much memory do they have, how many CPUs they have. That in and of itself, pre-approvals aside, it is such a fumbly way to understand the system.
Seeing a PR come through, and you're like, “OK, oh, yeah, yeah, yeah. OK, he's got our 6G XL. That probably makes sense. I mean, I don't know anything about how he's using this database, but I mean, I know that's a big one, so that's probably great. And I missed the DB part on the front of it, so like, oops, that's going to fall on its face as soon as the plan goes through.”
But like, just that notion of like, “Hey, here's some instance types that we do use.” Maybe we don't use T class at all in AWS because they're burstable, they run out of compute, they get weird. Maybe we just say we don't want people putting them in whatsoever. Being able to say here's a preset list you can select from. Or maybe these are reserved instances that we have, and we want to use this specific type. Or maybe you're on one cloud (I won't mention any names, but you could Google it) and maybe there's an instance type that's just always gone and you look at it and you go, that's perfect. Maybe you know the workload inside and out and you're like, that is the perfect instance size. But man, that thing is always exhausted and there's never one there. Right?
There's just so much tediousness around it. But if I'm in Kubernetes, I'm just typing in how much RAM I want, how many CPUs I want. Like I'm not talking about instance sizes, right? And it works fine for so many workloads.
That idea of bringing that kind… not necessarily saying that's the right thing for every team, but we've seen this with teams today where it's like, “Hey, how many CPUs and how much RAM do you need?” That's what they have in Massdriver. And somebody's like, “I need two CPUs and four gigs of RAM” and it picks the right instance size for them on EC2, or it picks the right database size. There are abstractions that make sense to your org that you can start to build around your infrastructure as code to make it accessible to people.
And I think the wild thing about this is not just that accessibility. That's great. I love that. I love that we give people that. It gives people the time to look into it more when they want to.
But I think the two things that happen, there's two extremely powerful knowledge transfer things… which is the point of our job in DevOps. We're supposed to tear down the silos. Mix the corn in the hay or whatever. It's never about mixing the corn in the hay. Silos serve a perfectly sound purpose. They keep the rodents out. They keep the rain off the food. We like them... But there's knowledge transfer in designing a good abstraction. And two pieces of knowledge transfer happen that I think that we generally miss in IaC.
One is codifying my expertise as an ops person, right? Like to say, hey, this is how we decide on what the instance size should be for a database. I want to know how much data you have today, what the expected growth is over the year, read to write ratios, right? Like there's questions that I will ask you as a DBA to help you size your system. I'm asking you those questions. And then I tell you an instance size and you go and type it in. And then somebody else asks me the same thing, “Hey, what instance types should I use?” I'm going to ask them the same questions.
Why are those questions not the variables to my Terraform? Right? Because now if I write a formula inside my Terraform using… locals are using some sort of like one of the new dynamic providers where you can call functions and go or whatnot. I can actually code my expertise into this thing. And now everybody understands how I do this. If I die, get hit by a bus, whatever, how we got to these values is understood.
And more importantly, the outside of this is exposed to developers in a way that they understand. They know, “Yeah, we're expecting about 3 million users our first month. And like, this is about the average size of the data that we're going to take.”
I can make a prediction at how big my database is going to be and so I can say, “OK, how often do we want to come back in and think about resizing databases?” We aim to do this maybe once or twice a year, maybe every two years.
These are constraints that we have in our business. And I say, “OK, you know what? I'm going to have the questions in such a way that it's going to pick a good instance size that's going to work for that team's growth for a year.” And if they're explosive and they grow way faster, great. I've got a lot more time to work with them at the six-month mark than a year from now if we need to resize, re-optimize, or move them to another database that's maybe a bit bigger.
I think the second knowledge transfer thing that happens there is the outside of your Terraform modules become documentation for that system. When you look at a Terraform module and you're like, “Oh it's using a db.r6g.xlarge.” You go it's using a db.r6g.xlarge and you have no fucking idea why. Maybe you go through Git, and then you find the Git comment, and it's like changes. And you're like, that's not useful.
But when the module's inputs are, “I have 300 gigs of data today, we have a read to write ratio of x. The average data that we're writing this thing is y.” you have documentation about that system. And sure, it's going to change over time. And when that changes, it's going to change the instance type. But that's fine.
We're going to change that instance type if you picked the wrong one too. We're going to change that instance type if you pick the right one when something changes about the way that the database works.
And so the abstraction thing to me is always just… has driven me nuts - like the pressure against it. I'm very excited because the amount of people that I've seen on Reddit and LinkedIn talking about abstractions recently and starting to build abstractions using their IaC modules is extremely exciting to me.
This is one of those areas that I think that people need to think about it a lot more. It's not just a way of making it easier to get. It's a way of making it easier to understand for both sides, that we don't have today.
That knowledge transfer is all in Slack. Or maybe it's happening in a ServiceNow ticket, but it's so hard to search for. And it's a degree of separation from “your code” (I threw some air quotes on that).
But before 2020, it was like every week. It was just like an article from somebody about how burned out they… I feel like anybody I talked to was like, “Oh, fuck, I'm so close to burned out.” And it's like, yeah, man, like everybody's working on startups, working 50 hours a week, maybe 60 hours a week. And then you're like, “Hey, you know what? We're running this stuff on the cloud. We're going to do self-service. And it's going to be your job to also figure that shit out.” Like that doesn't…
We don't look at our time at work and go, “Oh, okay, well, if I'm doing a bit more of this ops stuff, I guess I'm gonna spend 36 hours a week writing software and four hours on this ops stuff.” You go, “I'm not gonna make it home in time for dinner with my family tonight.”
And that's the thing that really just pisses me off so bad. When I see leadership, be like, no, developers need to know how to do all this stuff. It's like, dude, no they don't, man. My accountant and my lawyer both understand law, but guess what? My accountant's not fucking around with torts, he's trying to make sure I'm not cooking my books.
They have overlapping concerns but they have very specific services they’re providing to the business. They might have to understand each other’s world a little bit but to say like, “Oh, no, no, no, no, no, no. You have to understand this thing whole hog to just move forward in life.” Like that is disrespectful of people’s time in my opinion. Now I’m not saying, again, that they shouldn’t learn it. I think if they have the time and the curiosity, they should.
If I have two engineers on my team and one person is like, “I want to understand how this module works under the hood and how you decided the right database.” I'm like, “That's great. You should learn that. I'm excited for you to learn that.” And what I'm thinking in my head is this person might be a good fit for the operations team or the platform team in the future. And then if there's this other teammate on the same team, and they're like, “I don't give a fuck about this whatsoever.” I think, “That's great. You're gonna pay that guy's salary when you're making the company more money.”
Those are two absolutely valid takes on two people on the same fucking team. And I can appreciate both of those people's takes because I realized that they're different people. They're not all apples, right? And you're going to understand people's constraints, their drives, the things that excite them about the business more. And I think it's fine to let them follow that path if they want to learn. If they don't, it's like, great, just ship software, ship value. That's what you're here to do, right?
I think the crazier thing to me about that is the operations world has, I wrote about this in “Elephant in the Cloud”, not much has changed about the way that we write software over the past fucking 50 years. Like I said, I've got some variables, some loops, some stuff changes here and there from language to language, different syntax, maybe we added type systems, whatever.
But EVERYTHING has changed about operations seven times in the last 26 years. It's like by the time you learn this stuff, the new thing's here.
Even just fucking rewinding 14 years, people would start serverless… little sparks of serverless here or there. And that was the beginning of, “Oh, there's a new way to run our app on the cloud.” And that was a moment where it's like we ran our apps on instances. And then it was like, we run our apps on this serverless thing. But where we're at today is, these cloud services are chunks of our app now.
They're not this foundation that we're necessarily… I mean, we're sitting on them, but then we're like, okay, we're touching queues, we're touching SNS, we're touching SES, right? We're touching all these things that are like a little bit of software, right? And like that stuff still changes at the same pace.
And there's so much, as you said, there are so many like cloudisms to it. I understand how a queue works. I understand how Postgres works. I can query stuff from it. Doesn't mean I need to understand the availability zones - like that's probably somebody on the SREs side of the world, right? Or maybe the Ops side of world, depending on like what your org calls them.
But being like, “Shit, no, you need to understand how interzone replication works.” It's like, “No, they don't. If they're not interested in it, that person certainly fucking doesn't need to understand how it works so long as they're building product.” Like that's what I'm paying them here to do. But yeah, man.
I think one of the other big things besides us changing the language around how we talk about compliance… like cutting the red tape, moving people towards pre-approved systems, not reactive approval processes… the other big thing that has really landed for us… and I'll tell you what, honestly, surprised, I've always been frustrated by the thing I'm about to say, but very surprised, because I've been trying to figure out how to get it in the product for a very long time, and I know that's annoyed the piss out of you…but that is GitOps.
Very recently we've just kind of said, “You know what, fuck it. Like just fuck it completely.” Like it's not valuable to us. It's not valuable to our customers. We've teased so many potential customers saying like, “Hey, here's how you could do it with Massdriver. Here's how you can work around and get that GitOps flow. But us… about eight weeks ago at KubeCon, we were just like, “No, fuck it. We don't support it. We're never gonna support it.”
So I think the appeal is generally like… you can check off an automation box, right? Like you can go to your boss and be like I automated today, right? And I think that feels pretty good, especially if you came from a world where nothing was automated.
There is a giant leap that I think… like I know I take for granted because I got the skills early on to kind of like build these systems that were like automatable. But like, I think back to my first like jobs with internet software where it's like, “We're taking down the site on Saturday, and we're FTPing code into web 2 and like, we're gonna test it and deploy it.” That was a nightmare.
And I think this GitOps thing was suddenly like, this is so much better. We can actually just like hit this button and things will happen predictably. But I think the thing that hurts is like, when it's time to know what's going on with the system, Git is just a terrible read tool, right?
Especially when you have microservices or the surface area in the cloud is large. Like what instance types am I using in my orgs? Are they standardized, right? What VPCs have 0, 0, 0, 0 open? These are questions that are tough when your Git is kind of spread through apps or even in a Terralith. It can be really challenging. And so I think like that's a real downside to this GitOps problem.
Then it's also like there's a question of what even needs to be GitOps. Like I think you and I would defend GitOps when it comes to net new code. But if you need to up your DynamoDB read capacity from five to six… what does GitOps do for you there besides like add a barrier when you likely need to scale because of something?
It becomes a fire drill. And I think for like configuration management, it's like your write layer is now hindered and your read layer is hindered. And like, I just don't see any benefit to GitOps once you have good interfaces into self-service.
Yeah, I mean, we used GitOps today. It's how we deploy our app. Massdriver runs on Massdriver, but the app build…GitPush, merges to main and ships the thing. We manage all of our infrastructure also on Massdriver, and we draw it.
The read-write layer is really the funny one, because if you've nailed GitOps… Ooh. We've nailed it. We’ve got a good shared repository where all of our modules are. Developers add one main.tf or they add 20 main.tfs, whatever they want to do, we let them pick. And they love it. They reference those modules. They deploy their pipeline after they copy and paste about 600 walls of YAML. They're having a great time. But they still have an AWS credit. Why can't I just take the AWS creds away? They're creating drift. They're clicking on shit.
Agh, if I could just take this AWS credit away, but I can't because that's where they read. That's that's where they go in to see that the thing… It's not working. Why isn't it working? First place they go is the AWS console to double-check that things worked, right? The amount of times I've seen people go there before they go to like whatever their stupid monitoring dashboard is… because like you don't have a way to read.
You can read your code but that is your best approximation of like how you think that this thing is going to go through some other systems. And tearing that down… it's like, well, we have auditability. I can go in there and I can see who changed what and when. It's like, OK, can you?
Like here's an auditability one: How has that instance type changed over time? “Well, I just look for every single diff that includes that file and then loop through them all, parse the HCL, and capture the value of it. It's that easy, Cory.” It's like, okay. What if the directory moved three months ago? Oh, whoops. It's just like, you can read. Yes, I get that you can read, but like the amount of effort… Again, like coming back to this idea of automation, your database is a glorified text file, glorified tree of files. That's not a database. It's version control system. Right? And like that read layer is not there.
And that's why Devs still have cloud, that's why they still end up creating drift. I mean, they also do it because it sucks to manage it that way, if we want to be honest.
But we just start to then end up in the next sprawl. Which is, OK, well, we don't understand the system. So what are we going to buy? Or what are we going to find in the CNCF landscape that can solve this problem? And now we're in tool sprawl. We're like, OK, well, we don't have a database of our configs. We don't understand the configuration of our system. It's auditable if somebody wants to sit down and grab an accountant and work their way through it, but it's not actionable.
Yeah. And it's funny because like I feel like we've heard, “Well, that's… I mean, they're Amazon.” It's like, yeah, but they weren't. I mean, it was the company name, but they weren't how we know them today. Right?
Like that was a couple of things. It's leadership. It's like true thought leadership. Right? And it's not just somebody saying, Hey, we're going to do this. And I don't have a strategy for getting this there. I just… I decried it. I stood on a mountain and screamed it and I hope people do it. But like, it's not just thinking these things. It's actually like figuring out how to get them done.
There are some skills, I think, that a lot of engineering, particularly operations side engineering management, doesn't necessarily excel at. A lot of organizations, I think, are struggling with this - that internal marketing skill.
You've got to be able to walk the walk and talk the talk to the rest of your org about how you're going to do this. Right? You've got to set a strategy for these teams to be able to get it. Can I get them budget? Can I get the business to pump breaks so that I can show that these guys can create some value? And I feel like that's a part… that's a hard one. That's much harder than learning yourself some Terraform
You know, I saw this early this morning on Reddit. Somebody was like, “I just got into a director of operations role. Like, what should I need to know?” And I'm just like, “Bro, you need to know how to fucking budget. You need to have how to prove your team's worth. You need to know how to market your fucking team to everybody else.” Like everybody's like, “You’ve got to learn CI/CD.” And I'm like, “Fuck, no, you don't. No, you don't. You're just gonna become the top fucking meat gate.” Like you need to figure out how to operate an operations team within a business where the rest of the business can understand and respect it so that you can get the same access to resources that they do, right? You don't want to be a support team.