The heaviness of maintaining systems
pcable.net
pcable.net
In the short term, it can feel that way.
But in the longer term, at least in the part of the industry I'm in, operations are the core thing. Everybody I know who has become good at building resilient and robust systems that survive contact with the real world has a lot of experience understanding and fixing broken systems. A lot of humility of seeing good plans go wrong, and good ideas turn into bad ideas. The best have all this experience and still deep optimism about what's possible, about what can be built next, and about being able to fix the problem this time.
> How do ops people thrive and grow as those who take care of the systems around us, without letting the systems consume us?
An excellent question. In my career, I've optimized for working with people I can trust, and people I know who care as much as I do. In the short term, that can be stressful, because people express caring in different ways that aren't always productive. In the long term, its all worth it. The times in my career (careers?) I've felt most burned out were when I worked with people who didn't care, who I couldn't trust to care, and so I ended up being the only person in the room who cared. That's exhausting.
> In what ways are the systems we maintain mirrors of ourselves?
Another excellent question.
Wow. I feel so seen with this particular sentence, having felt this at numerous jobs both professional and volunteer. Well said.
Been there, but I don't see it as a problem. On the contrary, by being the only one who cares, I got promotions and salary raises. In the few situations in which I didn't get more than my peers (who didn't give a damn), I resigned.
So, at least for me, being around people who don't care that much is an opportunity for me to by working normal hours (9-5) and caring, get a salary bump.
Then management cared.
> In the few situations in which I didn't get more than my peers (who didn't give a damn), I resigned.
Yeah, that's a legitimate response to nobody caring if you can.
This is definitely not always the case. I can think of cases in my own career where this attitude was actually detrimental to my success at the company.
I’d say most cases, in fact. Being able to standout is a skill.
Having also been in a similar situation, I'm going to guess that it wasn't actually the caring that made the difference, but the practical actions that you took (motivated by that caring) that made the difference.
It's one thing to "care". It's another to do data recording and a subsequent Pareto analysis of the sources of outage/downtime/bugs/losses, then to apply efforts to solve the 20% of things that likely result in 80% of the losses, thus dramatically improving the operations of the company.
Other people don't seem to care at all, while others "care too much" (meaning won't accept anything other than 100% fixes to 100% of issues, meaning they can skip over the hard work of data collection and analysis).
Creating good outcomes is generally rewarded; mere caring is not.
Personally I still somewhat care, but it's hard when a company doesn't give raises or bonuses and blames the economy for it over the past 2 years. I've been in hearing distance of a few other reasons within the last decade that would destroy my motivation if it happened directly to me too.
If you dropped me into a role working on something distant to my own passions and principles, I would expect the same to be said of me.
Maybe my work experiences are karma for being a bad roommate in college…
Especially in the IT sector many people never have to maintain the things they built themselves. There is always a shiny new project and off to greener pastures.
Part of this has to do with learning on the job. You build a thing and once it is done one very easily could have a good idea how to build the same thing, but better. Part of it is scatter brain. The IT guy is interested in toying around with a project and being the hero that solves it. But once that is done the thrill is gone, shall others deal with that.
I try really hard to build things for maintenance, because I tend to be the person who maintains it myself and I try to keep my own bus factor low. A lot of that has to do with a wise choice of dependencies (less=better), but also with good documentation. I try to write the code in a way it doesn't require a lot of documentation. This means consistency, avoid being clever, always asking myself how one would expect a thing to work and then build it that way etc.
I've spent a long time in startup land, sometimes as the only "back-end" person and nothing teaches you to build for maintenance like having to maintain some self-inflicted cleverness or overarchitecture.
Now that I'm a pointy-haired boss, I make sure that my teams are accounting for observability and maintainability in addition to scaling and reliability. That means using tools and topologies that are known, understood, and not overly complex.
Very true. There's nothing more humbling than trying (and failing) to coherently explain something I thought was truly elegant to a new team member, only to realize it wasn't nearly as great as I thought.
Some people are clearly writing abandonware while new investments are still coming in.
Companies also want to save cost on maintenance. Once the project has shipped they will put the project into maintenance mode. They will move the expensive engineers to the new project. The maintenance then gets outsourced to lower cost locations.
Now you say that even where that infrastructure was the product, the work was still regarded poorly. That is so sad! How come such a thing can exist? Wouldn’t the business fail in the medium term?
That's not what I was trying to say. I was trying to say that it's far more noticeable to management that the guy waking up at 3am to fix an outage than the guy who builds resilient infrastructure that never suffers the same outage. One looks like he's "doing" more, but that doesn't necessarily mean it's better.
> While a certain minimum of capability is required to do your day-to-day work, what your value usually consists of is in grinding yourself against the piercing pincers of elusive bugs and razor-wire bundles of bullshit code until something resembling progress is made. You are rarely a problem-solver, but rather a problem-endurer. >
Other people wake up in the morning, 'A new day! Ah, up and at 'em!' I wake up, the heaviness is waiting for me nice. Sometimes I even talk to it. I say 'Hi, heaviness!' and the heaviness looks back at me, 'Today you're gonna get it good. You'll be drinking early today.'
The job is always to make that computer box there do X when I the paying customer click Y button. On the inside there is some algorithm design and logic that tells the computer how to do the job, and also there is some stage setting and lighting and camera setup to cue the computer on what, when, where, and why do the job (and write down who told it to do it).
In terms of classic 'developer writes features then leaves it to ops to actually make the code be useful to customers' (AKA specialization inside the software realm), the division of front-line soldiers vs logistics comes to mind here.
If you don't have a front line, the enemy takes the land and you lose. If you don't have logistics, you lose the front line to starvation / lack of ammo, and then you lose the front line, then you lose the war.
So if you are in strict operations, you may be the logistics side of that, and the front-liners may look down on you for not doing 'the thing', but if you weren't there to do your job, then they get to starve, run out of ammo, or do your job as well (aka becoming more generalist / end to end ownership / full stack SRE) as their previous job.
Reader: Ok smart guy, what's your solution?
I advocate to stop splitting the job of dev and ops into separate roles and doing the devops practices for everybody. We lose theorized competitive advantage but gain flexibility and more well-rounded skill sets so we really can call ourselves software engineers.
If you can code algorithms but not properly manage the lifecycle of your code after entering it into the source code file (testing, deployment, runtime, data migration, upgrades, decomissioning), you only have half the toolkit.
If you can do one or more of the other pieces but not do reasonable data structure and algorithm design relevant to the problem space, you only have half the toolkit.
We don't have residential plumbers arbitrarily split between vertical pipes and horizontal pipes...all the pipes are needed, so the plumber learns to handle both. Why did we let the 'expensive computer operators + cheap clerical roles' of the punch card era split up our profession today into 'devs' vs 'ops'?
I am 100% with you on this point. Ops is treated as a cost center vs a core feature. This means it is often a chore to maintain and the first thing to get scrutinized when it comes to budget.
> I advocate to stop splitting the job of dev and ops into separate roles and doing the devops practices for everybody. We lose theorized competitive advantage but gain flexibility and more well-rounded skill sets so we really can call ourselves software engineers.
You lost me here however. Software engineers often do not want to think about the Ops problem their code will create over time. Either they do not have the skills to know what they don't know or they are being pushed by the business to work on "business value" over sharpening the Ops axe so their current code runs well for the best possible price.
Growing those skills are either not a priority for them personally (not a dig at all, I think it is totally fine for people to have personal limits on what they want to learn) or a priority for the business so they can't learn how to do things better. This is why you are seeing a boom of making PaaS the thing that is used to deploy software which is super expensive for what it is, limited in features, and limited in choice when you want to move to a new provider.
I am all for making Ops easier for everyone to consume, but in the end, if you don't understand the fundamentals of the underlying plumbing you are going to have sub-optimal results. To use your residential plumber analogy, of course you can fix your plumbing yourself, but having an expert plumber do the job not only saves time but often money in the long run. That's why you hire them. Expecting every home owner to have the time to grow the skills to be a functional plumber is unreasonable. Why do we as an Industry allow the C suite to expect developers to be functional operators? They took the "DevOps" movement and used it to shove all the responsibility onto developers to cut FTE count on the SysAdmin/Systems Eng side of the house.
The tech industry has devalued Systems Administration and Systems Engineering in a race to bottom in order to cut costs in the short term and that's why we pay out the nose for Cloud Services that are used by non experts to create over engineered setups.
That's an easy problem: pay them less and make it clear that this is why
Finally, it would be interesting to see how people prioritize. I could see people willing to take a pay cut in exchange for not to having to worry about ops stuff ever again. Throw in not having to do the on-call rotations and you could probably even use it as a recruiting benefit.
Specialization is the key to managing complex projects effectively. Effective teams will increase specialization where possible, and improve the feedback mechanisms between specialists.
Take a look at other complex industries like aircraft. We do not have simple "Airplane Professionals" who design/build/maintain/fly planes. But rather each of those categories are divided into subcategories with specialists.
I'm not a super ops guy nor do I do support (unless it's really bad), but I care about those teams and I try to learn the basics so I have an idea how my the code I write will affect them.
The product builders tend to understand that no matter how smart the implementation, not functioning means it all counts for nothing.
At the end of the day it has to run, and the ops matters. This means those product oriented engineers build systems that actually scale and perform their purpose well.
It’s a spectrum, not binary. But to a large extent stops it being heavy when performance and availability are seen as worthy features.
And at some point in every org the engineers who keep things running are valued because it’s actually challenging to keep things running, and things running powers the business. Over any significant timeline Ops always matters.
The first being: if something is not work, speak out and push for the thing to either be fixed or be ripped out entirely, propose an alternative or a solution, if possible. If you see promises that aren't kept, words and words circling about the issue, minimisation of the issues our outright denial of the issue... Just get out, walk away and don't look back.
The above work as well with companies as with people (either friends or significant others).
And in the house... I very often realize i opt for stuff that's low maintenance instead of shiny (99% of the time i don't need the extra features anyway). I bought a lot of "dumb" technology and it's awesome, I get none of the annoyances people complain about nowadays. I particularly love my dumb TV (that I don't watch much anyway). Stuff that mostly does one thing and it's trivial to replace.
Oh and I've learnt to have spare stuff because I know from experience that things break when you need it the most (and stores are closed). So batteries, an extra shampoo, a spare laptop etc...
Ops is truly grunt work but I'm truly happy to have been shaped by it
(I worry a lot about the consequences of my own actions, though).
Doing ops work is very a very delicate work. When you work on mission critical systems you can pretty easily commit mistakes that cost millions of dollars.
* https://pcable.net/posts/2020-02-29-heaviness-of-systems/#fn...
I just recently completed an Reiss[0] assessment, a scientifically proven approach to understanding motivation and through this process, I was better able to understand what drives me to make the decisions I do. Biggest lightbulb moment for me was that ALL of us are motivated by the same 16 basic desires (e.g. acceptance, beauty, order, tranquility) BUT at VARYING degrees. How much we are motivated to satisfy those desires depends on both genetics and environment.
So, now, before jumping into incidents, I find it helpful to check in with myself on what the underlying motivation is.
Yes that is one way to summarize extremely complex neural networks. Come up with some categories and then tell everyone this is now the truth. I agree with you that we all have varying degrees of motivation in various things, but not that we all satisfy exactly those 16 categories.
Or you could group those as bodily needs together with peeing etc.
I agree that these models are not literal binning functions of Normative Truth, but rather they are intended to be useful.
Another way to consider: everything natural is analog (afaik), and everything digital is human-culture influenced. So whenever you see X categories, it's ALWAYS arbitrary humanness. For me personally, realizing this made me get over whether something was "right or wrong" and back to whether it was useful or not.
Thank you.
Yes, if you destroy capitalism and wash away this weird bourgeois conception of having a "career", so you can actually do work that cares for other people....
Sure we wont have the profit driven ad tracking ops and social media to maintain, but as long as there is a need for communications infrastructure, people will be doing this out of curiosity and desire to create. Whatever would be left of the internet would probably be higher quality.
The thesis of the book "Capitalist Realism" states the all encompassing nature of the economic system we live in bars the average person from being able to imagine a world outside that system.
Outside a profit motive, people still create and imagine new ideas. Profit motive in our current tech landscape is 80% innovation in selling ads. Basically a pointless expenditure of resources IMO. All we have is advertisement and war, with a sliver of toys to make our days easier. Outside of a profit-centric environment, there's reason to believe ideas can be explored on their own merit, not on their potential profit.
Do you think the comment to which I originally responded was a "thought experiment"? To me it sounded like another knee-jerk anti-capitalist response that ignores the realities of life today. It certainly wasn't a very practical response to the question of how one works in Operations without burning out. So read my response as a knee-jerk pro-capitalist response.
To be honest, it was annoyingly worded so I went with the thought experiment route. While I agree with what the user said, I try to convey my thoughts with a little more tact on the Venture-Capitalist forum.
I do think a post scarcity scenario would breath some life into a tech field that's been bloated with "because money" tech and solutions. Any interesting tech cannot be explored inquisitively without being useful for profit optimization. LLMs would be a really cool tech if the main usecase in our society wasn't "remove the human who does X better to save costs". An AI therapist will never be the solution, even if it was effective, IMO it shouldn't be the solution.
Back to the operations context, so much of the plight of the operations engineer is that teams shrink to reduce costs, take on more responsibility to reduce costs, and drive the operations engineer to an early grave to reduce costs. I firmly believe there should be room in society and the economy for a business to be considered a success without massive year over year growth, hell even static non-growth. Stability should be sought for certain aspects, and disrupted when the solution is actually improved, not just because its shiny.
And replace it with what?
E.g. if you have legacy systems that cover and handle edge cases you didn't even know existed. If you build your new thing you are going to learn about them. Probably in production. Suddenly that fresh feeling of writing a new thing will be replaced by another, considerably worse feeling.
It really depends on the problem your old thing is solving. If it is a simple problem, then a new thing can be a no-brainer. If that old tool is however interconnected with other things in a hundred places, good luck. If the problem you are solving is complex but very contained (e.g. just a tool that takes document X and transforms it into document Y), easy — wrire a new one.
But I know many operational people who are genius at understanding their systems and tools, but are not good at developing software.