The so-called DevOps guys are stressed out of their marbles, but when the CTO calls me 4 AM I can't say anything but "Sorry dude, I'm not a clairvoyant. I have no permission to do shit in prod, call Ops or give me AWS access now". He stopped calling.
The fun part is Ops wants us engineers to help more, but they don't even trust (and some don't know how to run) my Terraform or CloudFormation scripts (I let them choose which), so they just read the tf/yaml and click AWS buttons manually. Often making lots of mistakes.
As it is, the Ops manager is probably going to have a stroke due to overwork, and it wasn't for lack of people wanting to help.
Yeahnah, you're part of the problem.
If you've not documented it properly, and more importantly, if the team are weary of prodfucking TF/CF scripts, there is a culture problem. You both need to understand how that works, if they don't have enough time, then you're understaffed, that needs to be fixed.
I worked at place that was going through a really painful ops->devops->dev oncall transition. Ops still had a shit ton of power, but nobody included them, and just shouted at them when stuff went red. It took a huge culture shift, and devs sitting in ops and doing a shift or two, to sort it out.
Everything I need from Ops is already enumerated and specified more than well in tickets (which is required, as is par for course with the sysadmin from hell stereotype), and documented in Markdown files within my app's source code.
I generate scripts for them since that's what they WANT and ASKED for several times.
They literally want me and other managers to help with DevOps (Heck, I'm even AWS certified), but don't trust me and others to give access. They ask for scripts and I comply to save their time. How am I on the hook if they want me to create scripts, but some of the new hires don't know how to use Terraform/CloudFormation?
> "there is a culture problem. You both need to understand how that works, if they don't have enough time, then you're understaffed, that needs to be fixed."
The culture problem is Ops wanting to do everything and not trusting. If they don't want to "prodfuck", just review every script. Or perhaps test them in the staging AWS account that I pay for with my own money. Or just stop asking me to make infrastructure as code. Or suggest a fourth option instead of wasting my time and being disrespectful.
I can't change other people's behavior. I can only change mine.
If they are understaffed I can help, or they can hire more. Wasting my time and making me do pointless work is not the answer.
Ah my friend, you totally can change other people's behaviour. go on. hug an ops, sit next to them and work with them. show them a bit of love and make them feel part of the team. Think about it from their view, why don't they trust your scripts?
Why dont they feel empowered to spin up a staging area? is it a skills gap? fear? or do they not feel confident enough to ask.
It sounds like solving their problem will also solve yours....
I can only offer help, do what they ask and try to make their life as easy as possible... I can't hug people via Jira tickets. Yeah, they're that isolated.
But a team focused on making a streamlined platform with ready to adopt patterns that already account for compliance and security related concerns, they can spread DevOps adoption more effectively and consistently throughout the organization.
Kind of like the idea of a scrum master, which was never supposed to be a role
The idea behind devops was to be a single team.
I assume you are pointing out that split-teams is the insane part, in which case I agree. The philosophy was supposed to define the blurred line between developers and operations, using tooling to help facilitate the shared responsibilities where sensible and make hand-off a breeze.
As you pointed out, the division existed 20 years ago, and it still exists now at many places. That lack of integration doesn't offer much improvement in relation to the past.
It's unfortunately inherent that some people want predictable, scalable, observable, stable- and at the same time they want fast moving and many new features.
I think it's not so much that dev and admin work is terribly difficult, it's more that "a man cannot serve two masters" and someone will be focusing on stability and someone else will be focusing on quickly deploying.
Trying to do both yourself I think leads to burnout.
What’s worse is they can be condescending while shoveling out absolute garbage. If I’m honest that’s the part that bugs me the most.
I still see this, developers use archaic or absurd incantations in their build-scripts because they kludge something that works in bash on their machine then push it into yaml and move on, forgetting to comment, document or try to simplify the line so that it's easy to break apart later when it has to be debugged.
Some of the best interpreted code I have ever seen came from a former sysadmin (it was powershell though, that comes with it's own warts of course).
The issue is that we collectively decided that sysadmins should just stop existing instead of allowing it to grow properly. We forget how bad things were for developers back when we decided we didn't like sysadmins. There were companies still passing around code on a USB stick because developers didn't want to depend on SVN being down. (I am not kidding).
Git was introduced 2005 and wasn't really everywhere until 2012, but 2014 sysadmins had all but been retired. This is the timeframe we talk about.
Developers of that time were as bad as the sysadmins were, the problem was that the developers had time and space to grow and we judge the developers of 2012 as if they had all the tools, knowledge and incremental improvements in workflow that they have today.
The sysadmins who were already automating large amounts of tasks for n Unix servers and k switches with p services, had a vastly different skill set and migrated to the more modern software defined devops SRe world no problem. But plenty of sysadmins basically could (and some still) only use a gui, and do things from trial and error. Those people might have retired or become managers, but they had a lot more issues with the transition. Which to be fair the transition happened fast and hard in some companies.
Anyway this is just one tiny example but the same underlying thing starts happening in all parts of the development cycle. “My deploy doesn’t work” … well your program has an error and crashes on startup but looking at the logs would be too much work. Let’s just say we are blocked and log off.
As you can see this is a culture issue but it seems to be common when you have a devops team. And even more common when management (read senior management and up) think that developers “should just be developing”.
Anyway thats my rant.
The only solution I see is to enforce commit checks before hitting shared environments, but that comes with its own set of complaints.
If they had no DevOps team to raise a ticket with, and it had to get done they would find some way to figure it out if they had the ability to modify and initiate their own pipelines. The reason I like "you build it you run it" is I feel like I have far more control over my own destiny. You're not having to negotiate and coordinate with a separate team through some ticketing system. Far less wasted back and forth and miscommunication. If that means you have to expand one of your teams with an additional DevOps person to foster understanding of the tooling on a team who hasn't done it before that's fine. But don't make them the DevOps person. Their goal is to enable the rest of the team to pick up these skills. Their goal should be to transition into a normal contributing member of the team working on product development because the team no longer has a need for a DevOps person.
People do not fix the pain they don't see, and managers doubly so. By shifting operations off to a "devops" team, you just end up with developer teams that don't know about, and don't care to fix, the things that make it painful to deploy or run their code in production. Those that have to deal with the pain rarely have any political leverage they need to even enact change. There's zero motivation for either the developers writing the software _or their management_ to fix it. Dev manager incentives are purely aligned with getting code and features built.
To give a nice real world example, building out new regions for AWS services used to be a pain in the arse (since I left I hear some major top down initiatives have fixed that). The service team I worked for, almost doubly so painful for region build. Standing up an entire region was something like ~50 days of engineering time. Not because it was especially hard, per se, but because the ops team always had to wade through piles of refactored shit that introduced new circular dependencies, or wasn't documented, or broke other aspects of any automation we could produce. (I remember one DynamoDB schema overhaul, where we did a complicated migration. Next region build, service components wouldn't stand up because we'd used the automation to create the new table schemas that had replaced the old table schema entries, but the service code still expected to see the old schemas in the right format. It took several months to get the dev manager to agree to engineers spending time cleaning up old schema references from their code base.)
The dev manager incentives were not aligned with making it easy. It wasn't their engineering resources being consumed, and they had features they needed to ship. The developers never changed the way they worked because even though they were told the issues (and even though they were, virtually to a person, great people to work with, considerate etc.), they never experienced the pain so they never thought about those consequences of what they were doing when they were doing it.
Ops manager never had any leverage, because every single time we managed to get a region launched in time as to not be an issue, and every time things were down to the wire it was clearly as a result of the ops team not building the right automation :eyeroll:, rather than that the dev teams were making some kind of brand new nightmare each time.
It wasn't until the ops team had lost enough members of staff to that BS, and region build shifted on to the developers themselves, that suddenly most of the problems went away, never to appear again. They were aware and conscious of the pain certain decisions would cause because they had felt it themselves, and they made sure not to introduce more pain.
DevOps is about making sure incentives and politics align to make things overall better. Shoving it in to a silo is literally the complete opposite.