This is so well said and on the nose that it hurt to read.
I am entering into my third major project in a row where it’s almost the exact same situation (and same consultant I’ve bumped into)
- site starts to scale, never had an ops team
- realizes oh shit we cant manage this ourselves but who wants to hire some hacker nerd for $150k a year that “gEnErAtEs nO BuSiNesS rEvEnUe” so they hire a consultant or consultancy firm
- firm builds them a solution that will technically “scale” but no one in the organization bothered to learn how it works
- it works for a while til it doesnt and then the “oh shit” moment becomes “oh shit we need a dedicated devops team”
- devops team attempts to work with the shitty consultant solution (editing yaml) and does an okay job until something breaks horribly again or they become a massive bottleneck
- finally they allow someone to come in and clean house and you get an infra platform like the author of this blog is describing
Platform engineering is the right word. “devops” has literally no meaning. I’m only 6 years or so into my career, but I can count on a single hand the amount of devops engineers I’ve worked with that can actually “dev” - and by dev, I mean do stuff like dig into application code and suggest modifications for the infrastructure, or write their own full fledged libraries.
Let’s get rid of devops and hire platform engineers. The problem is it’s a really weird and rare combination of skillsets, in a field no one really wants to do except complete weirdos (I am one). I’ve long said that DevOps isnt a career you choose, it just happens to you.
20 years ago, when I was trying to enter the field, sysadmins were almost all former developers who had a pretty fundamental understanding of operating systems.
Somewhere along the way "sysadmin" became a euphemism for helpdesk, and some folks thought "devops" (as a job title) was new, but it was just the same old sysadmins really, or new devs becoming new sysadmins with the fresher title, they felt themselves the vanguard of a new paradigm, I'm sure.
Now we're in the same situation again, where "devops" (as a job title) can have no development experience. So we need a new term, apparently.
Maybe gatekeeping is useful to stop this job title treadmill.
I think part of the reason this trend has been going on, and I have observed a similar thing as you point out here, is that businesses have tried to get rid of this “role” for a long time now and by constantly reinventing and renaming it. They have failed miserably. When people ask what I do, I call myself a systems engineer or “backend engineer” if that makes more sense to them. it’s more apt for what is actually needed and asked of me.
Things went wrong when we started calling Computerization, "Information Technology".
This was a totally misguided re-branding of the field. It attracted bureaucratic personalities and classist managerial types, and utterly destroyed the field.
Like you, I couch my job description: I'm a "Systems Software Developer, I develop software systems" .. because its true, thats what I do, even if its a majority of the time working on embedded projects.
And if someone then responds with "ooh, so you're in IT", I immediately go to another corner of the party and avoid them like the intolerable bores they are ..
> And if someone then responds with "ooh, so you're in IT", I immediately go to another corner of the party and avoid them like the intolerable bores they are ..
No need to be arrogant towards people outside the field. My grandma doesn't know the difference between the random IT guy that updates your Windows printer driver and a Linux kernel dev, but I'd still not call her an "intolerable bore".
I go a step beyond. When I’m interacting with “non-IT” folks, I say just I’m “in IT”.
It isn’t a problem for my ego to do that, and it’s something that’s both relatable and typically stops the conversation from revealing anymore about my work (not that there’s really anything to hide, I just enjoy my privacy and no, I don’t want to meet your “computer genius” nephew or fix your phone).
If I’m in a clearly technical group, I’ll go into more detail. I don’t identify myself with the DevOps term though, or sysadmin, or developer. I don’t clearly fit into any of the -currently assumed- definitions of those.
I always default to "I work in IT". If that person is in the space I might go into specifics; but even then majority can't relate or understand the role i spend my days working in.
It also has the benefit of coming across as more blue collar and I catch less grief, as the disdaine for tech workers continues to grow.
In social situations, I usually just say "I'm into computers". Most people who ask what I do don't really care, they're just engaging in ritualistic small talk anyway. If someone does care, they'll ask clarifying questions.
Guess Problem is that a lot of managers also don't know, and have same understanding as your Grandma. I've seen plenty of companies take a very highly paid engineer and have them install printer drivers on peoples PC's.
I was getting paid £200k/yr as a Software Engineer for a company with an unresponsive offshore IT help desk. I would often spend a few hours (!!) a day helping various stakeholders with their desktops/printers/email. This was an insanely ineffective but absolutely necessary use of my time (I was managing a small development team with stakeholder satisfaction kpis), sadly my IT efforts were clearly more appreciated than development.
Hard to convince management that a dedicated onsite IT would be required - especially when they think it is your job already.
I suppose there is a difference between companies that are tech to the core (where everybody in the management chain up to CEO is actually a sw eng) or a company where software engineering / programming is just a dept. somewhere on the side.
Gotta appreciate if you're working in the former. Drawback is you can't BS your way through issues. Everybody above me in the chain (which is like 4 people) could write a quicksort blindly. If anybody tries any BS they don't have their job much longer.
The term 'wage slave' is commonly used. It is not always a humorous take on the situation. If you live or have skills where you have a lot of options. Then that is good for you, not the default for everyone.
I disagree. Data center ops have been completely reinvented by the devops practices. Sure it's a bunch of sysadmins at the start, but a bunch of sysadmins really trying hard to take themselves out of the loop so that things can scale.
A good example is how software releases work. Where I worked 15 years ago, releases were something we could afford to do about four times a year, at night, on the weekends, doing the rollout by logging onto machines and starting them back up, babysitting the rollout. Because rollbacks were catastrophic, an insane amount of time went into QA, so the time between a code change and a release could be easily multiple months. Now I'm at a place where releases are done every day of the week. Rollout steps are largely automated. Rollbacks are mostly drama free. Risk is mitigated through automated canarying (and automated testing before that).
And certainly the business has successfully gotten rid of paying people to log in to servers on a Saturday night to perform a release (which frankly not a lot of people are into in the first place, so everyone wins).
From what I've seen recently is the inverse of that.
There are scores of developers who have little understanding of OS scaffolding or networking, but are good at writing merge sorts in Python.
Most Devops people I know are not the ones pushing "vanguard of a new paradigm" BS, they are just ops who can code and understand performance tradeoffs, networking, subsystems, etc.
I guess we can blame Devops for one thing, the paradigm has encouraged the behavior of "real devs" (TM) not understanding anything about the underlying platforms they are writing code for. That was the point, but it's not all gravy.
[Weeps] That wasn’t the point, the point was exactly the opposite of that, to get developers and ops working as a single team, building an understanding of each other’s domain in order to make things better. Sadly the point was lost long ago, and devops engineers and devops teams have taken the place sysadmins and ops teams in providing a nice little silo you can chuck your terrible code over the wall at and not have to think about how it works.
But you know what? There are tons of developers who are _perfectly fine with this_! There are tons of developers who just want to write business code in their CRUD webapp and call it a day, the more abstractions you can give them, the happier they are. And while I don't like it, I don't blame them.
Absolutely agreed, and if they have to think particularly hard about things outside their application space for a CRUD web app then either you’re in an extraordinarily high throughput environment, or the platform engineering needs a bit more work to abstract things away. That’s the ideal outcome here, developers can develop, and when they’re done they hit the Deploy button and off it goes.
Where this falls down is when development teams are building complex systems and then expecting the ops team to divine how that’s meant to work in production.
Do you dislike it when application developers don't think about the way CPUs work at the silicon level? Or the way TCP/IP works under the hood (handling packet ordering/ connection negotiation etc.)?
It's not immediately obvious to me that an application developer should have to worry too much about how their software is delivered/hosted etc., though I'd certainly agree that understanding it better generally makes you a better developer. And that the reality of modern O/S's and hosting platforms still means that implementation details inevitably leak their way into application space, unfortunately.
assuming the code is reasonable and can scale they should be allowed to and enabled to do this. as a dev I dont want to think too hard about the infrastructure underneath it, I just want it to run.
the ole “runs on local therefore it’s good to go” should be good enough.
You can ignore some of the details, but you can't ignore everything.
Which database you choose and how you scale it will affect your application code.
You can't write code that makes use of the local file system (or in-memory data for anything meant to be persistent) if you have more than one container serving your app. (And yes, some people need to be explicitly taught not to do that.)
Yep, you can think of it as overlapping circles in a Venn diagram, or if you prefer T-shaped people, imagine an entire 4-row block in Tetris. How do you fill out expertise in the entire domain but also have broad knowledge of it across the team. The business side hates it because people with expertise aren't interchangeable widgets they can throw at any problem.
Having done this job once upon a time, I think the downtrend in title is inevitable.
What tends to happen is that at some point in time, an organization finds itself in a bad place. Where pagers fire regularly, and the skills you need to manage the noise are "fast context switching", "good communication", "debugging", "ability to work insane hours". Very little of this involves coding, or building software.
Teams may start by assigning some engineers into this role as an elite team, but if you come back in a couple years you'll find that the elite team has burned out or forgotten how to write software and due to the impossibility of hiring new elite team members - has resorted to hiring people to carry a pager.
There are a few companies which invest in big platform orgs, but due to the lack of revenue generation - it seems that this can only be sustained with very strong leadership buy-in.
“Having done this job once upon a time, I think the downtrend in title is inevitable”
I absolutely agree with this. It seems like a it inevitable for anything that a business needs to do but doesn’t really want to do. Another place where you see it is with project management, where there have been many different titles for the same role.[0]
I do think there are differences. If you read LISA papers there is obviously something fundamentally different about what we did when we were practicing system administration than what we were doing when we did devops.
One of the fundamental shifts in my opinion was building APIs on top of sysadmin tasks. Provisioning a VM, installing an OS, getting software onto the server, configuring ingress/egress, handling process restarts, etc.
These all were turned into tasks you could run from a developer’s laptop.
But it was still a different skillset and devops dumped that skillset on developers (“Hey! Now, instead of opening a ticket, just write a 1000 line magical incantation of poorly understood YAML and the system can do it for you!”).
Platform Engineering grew out of that pain. It’s the layer we are building on top of devops in a way. We are taking those APIs and treating them as foundations to build products that manage the SDLC lifecycle for developers.
I think at its core, deveops was about “how much sysadmin work can we turn into an API and give to developers?” The answer turned out to be almost all of it. Then Platform Engineering is “now that we have APIs, how much can we automate away for developers.” We don’t know the answer yet, but suspect we will find the answer is also “almost all of it.”
Site Reliability Engineering seems to be following a similar story arc and converging on Platform Engineering.
The problem with handing over infra provisioning and maintenance to developers is they don't have the expertise or the time. Unless your platform is REALLY solid, and onboarding is easy and has enough guardrails, you end up with a dozen different little platforms that are like Galapagos island birds.
At my current company theres literally no coherence. Some people deploy on EKS, or ECS, or Anthos, or regular linux hosts. We use every database on earth. Things on Azure GCS and AWS. Databricks and Snowflake. The list goes on!
I work as a SRE and have done a lot of platform engineering in my life. I call the sysadmins you're talking about "operations". This role proliferated because system administrators/engineers that were coding were paid the same as a SWE while ops people came at a discount. Every contracting and consulting firm ever had an "ops as a service" contract that they'd offer large businesses. This was the norm for a little over a decade I think. Things have changed now and it's harder to exist in the SRE space if you don't code, but finding people who know systems, infrastructure, and application code to a high degree is pretty difficult and, again, comes at a premium. This is the result of more companies reaching scale that cannot survive on blueprint infrastructure and lifecycle designs, and things like tooling mattering so much to DevXP. Companies see the value in people who work on this kind of stuff now.
A lack of gatekeeping I don't think was ever the issue; the incentives were just perverse.
I spent time working around the space industry. Almost a decade of my life.
The big contractors in aerospace have a _really_ difficult time finding people who know enough about the hardware and the software to be competent engineers. They’re basically unicorns.
Not that they don’t exist, but if you’re looking for someone who is demonstrably good and has a validated educational background in both, you don’t have a huge pool of talent to go with.
So they hire them when they find them, but they also just tend to hire experts in each field and let them collaborate. They didn’t try to reinvent the wheel with some new “paradigm shift”.
As a former systems engineer who was still in that role when DevOps became a thing, I think there's a a more fundamental difference.
The team I was on was made up of ops/engineering[1] people who knew how to code. We built tools to fill gaps or let us do things we couldn't do otherwise, but would typically use out-of-the-box functionality in third-party products by default because it was cheaper in the long term than building and supporting custom code. Maybe there's a better term for this, but I think of it as "OpsDev", and AFAIK it's more or less extinct.
DevOps has always struck me as being developers[2] getting fed up with having to deal with a separate ops team, and building tools and platforms to automate away that ops team entirely.
The two things can look superficially similar, because they achieve similar goals (automate away repetitive work, let people do more work), but the approaches are almost totally different. Kubernetes and Terraform do amazing things, but they are very obviously tools written by and for developers. I think it would be difficult and unwise to hand off first-tier support for issues involving them to a help desk, for example. It's pretty safe to write instructions for first-tier support to use a GUI or run a command but substitute the name of a server farm and a software package in the arguments, especially if the command is a script written by the engineering team to verify that the work makes sense before executing it. It's a lot less safe to try to have non-developers hand-edit source code, a script or even a YAML file and push the result to production.
Both approaches work. They just require different kinds of people, and each has their own benefits and drawbacks, and IMO it's a mistake to put them both under one label.
[1] "Engineers as in Geordi LaForge or Montgomery Scott": the people whose primary job is to keep the engine(s) running, respond to emergencies, make improvements where possible, and generally be a smart-person-of-all-trades.
[2] "Engineers as in Burt Rutan": the people whose primary job is to design and build new products (for lack of a better word) from the ground up.
I'm not sure, but I haven't seen places where devops team hire people without exp. I myself tried to get some interviews (I do have some dev exp, albeit data engineering ones, not backend) to no avail. To this point I believe most companies don't hire green for the devops team.
No programming experience required (only some minor scripting in shell languages & a reference to education), in fact this job ad reads identically to a sysadmin job from 2014; in the middle of the "sysadmins can't code" zeitgeist, when all developing sysadmins had moved to become devops engineers or whatever.
Copied from the ad:
----8<----
Your tasks:
* Containerization and orchestration of our products for development, testing and production environments designed for cloud and on-premise solutions
* Produce reference architectures and standardize solutions to streamline efficiencies within the business
* Mitigate against Cybersecurity threats by ensuring systems are safe, secure and compliant to best practice recommendations (e.g. CIS Benchmarks, Vulnerability scans and Penetration tests)
Your profile:
* Finished studies in Computer Science or software engineering (Bachelor, Master)
* Proficient understanding of virtualization, containerization and orchestration (e.g. Kubernetes, Podman)
* Experience working with CI/CD tools such as Azure DevOps, Jenkins
* Experience of Infrastructure as Code tools such as Ansible, Terraform, Helm
* Scripting knowledge including bash, PowerShell
* English fluently, German is an advantage;
* Improvement-driven, structured and proactive team player, high sense for quality, open minded
Requiring a Computer Science/Software Engineering degree for a non programming job is a little weird.
The point is coding skills are not required to do the job. Sure it would be nice but if somebody ticks all the other boxes then being good at programming isn't important.
Those education requirements almost always go out the window or can be ticked by passing Cisco certifications or something else vocational. (speaking from experience)
What I'm trying to drive home here is that you do need programming experience to be a good sysadmin/devops/platform; back when devops as a job title was becoming "a thing"(tm) I was told over and over again that sysadmins couldn't code and thus we need devops.
Now it seems devops don't need to be able to code (which you seem to think as well). So we will come up with a new term to cover programmers who understand systems.
But the criticism was that the job ad was not requiring knowledge of how to write code, and I was pointing out that the degree requirement (strict or not) indicates that that's not true.
If you don't have the required degree but can demonstrate equivalent skills, then that's fine. Kudos to the company about being flexible on the formalities side.
There is a line that is universally ignored in job ads. This is that line.
if I showed no ability to write a for loop or a linkedlist. I could still get that job.
I see it time and time again, it's like we must add that line to job descriptions, but it's never checked, never verified and ultimately it serves no purpose. There will be no difference between someone with a BSc in CompSci, an MSc in CompSci or no degree at all.
The thing that will get you that job, likely, is discussing how http works, how tcp works and perhaps something to do with exit codes.
My experience with sw eng job interviews is very different and I've been interrogated quite intensely about data structures, design patterns, computer architecture internals, and have done the same on the other side of the table many times. It brings a good perspective on whether the candidate knows their way around the box and has a deep understand of what happens inside it. And I also appreciate if my colleagues know how an L2 cache works, what an RB tree is and what's good and bad about microservices. Whether that's been acquired through a university degree or through self-learning or experience on the job, I don't care though.
If I'm interviewing person A and person B, all things being equal, I'll go for the one that has a degree on CompSci (or equivalent). That's it. It's not that difficult. Obviously if person A doesn't have a degree but knows much more (based on the tech interview) than person B who has one, I'll go for person A.
The only european country that takes titles even more serious is Austria. So without a M.Sc. in CS or a similar M.Sc. your chances may be quite low to even get an interview.
Especially since university is basically free here so many people have a B.Sc. or M.Sc. in germany.
I have a computer science degree and barely mention it in my resume because it’s just one of those “checkbox” things that doesn’t actually matter. At my current job I’m not sure anyone even knows that I have one from a decent school. it’s just credentialism. you don’t need a CS degree to be a good systems engineer. It can help you solve weird problems, and IMHO it allows me to think about certain things from a very particular lens a lot better than others, but you absolutely do not need one.
> The point is coding skills are not required to do the job.
I’m sure this is the case in some places. This can’t be farther from the truth in many others. At every organization I’ve been a part of, the best “DevOps” on the team was usually the person who was the best at coding, or at least understood it the best - and coding is one of those things that you can’t really understand well if you don’t do a lot of it.
Any by the same token the best developers have a good understanding of Ops. Often these will be the Senior ones and in some cases they built the platform before Ops people were hired.
But plenty of developers only have a vague picture of what production looks like especially in a complex environment. However they are perfectly able to do their job okay and produce working code.
In my experience they also don't want to have the computer make a api call and wake them up at 3am.. but are happy to let the DevOps guys take that sword.
Being great at DevOps means lots of Production experience. The level of experience required to go from thinking about working software (code) to running software (Production) is immense. That's why it is so hard to level up DevOps talent in the current dichotomy. In a silo DevOps engineers won't run enough software to understand their customers (the engineers in your org).
Assuming these are the tools and processes that build and deploy your main product, I don't understand this comment.
Sure, maybe some of the work isn't writing software. But some of it is, and it shouldn't be written by amateurs. Also, they are building these things for people who do write software. It would be hard to produce something that works for them without understanding what they do.
As somebody who does a job like this almost none of it involves writing software. 90% of what you write will be terraform and ansible. The remaining will be 20-50 line bash/python scripts.
Reading code, understanding building and deployment are all useful and required to some extent (especially the latter). But specific programming skills are not required any more than that would be for say a technical writer or network engineer.
I believe you, but I think this experience/job varies pretty wildly. That is, there are organizations where your job does involve writing software that's more than short scripts. If a company chooses "best of breed" for their pipelines, for example, there's quite a lot of integration between SCM, build tools, security tools, deployment tools, and so on. Doing that in a way that serves the end users well isn't always trivial.
Yeah, a lot of JD reads like that, but hey why would anyone be proficient in these skills without dev exp? Or they are already a devops anyway.
Proficient understanding of virtualization, containerization and orchestration (e.g. Kubernetes, Podman)
Experience working with CI/CD tools such as Azure DevOps, Jenkins
I believe most companies don't hire green for the devops team.
Most companies do. Perhaps not top Silicon Valley tech companies with cutting edge needs and paying over $150k, but overall I've found that dev ops teams have plenty of jobs for 'green' team members. You just have to accept a 'green' salary and 'green' job responsibilities.
"To this point I believe most companies don't hire green for the devops team."
Yes. Devops people come from a SWE background generally + they understand infra. They usually have 10+ years experience. Most specialties work this way in software: security, devops, AI, ML, ... etc. You need to be a SWE first, then specialize.
This is not what I've seen at many places I've worked it. Plenty of devops people with only basic programming background plus a AWS/Azure certification course or two.
Also I work in AI/ML and hardly anybody has 10+ years of SWE experience before specialising. Most people start fresh out of a PhD or postdoc program or come from some sort of math or physics background.
In my experience, it used to be 60% former sysadmins that didn't know how to code or approach problems from a software engineering perspective, and 40% SWE who liked doing platform stuff.
Now it's actually 80:20 due to software engineers becoming frustrated and disillusioned with the current state of things. Not only due to specialization and the push towards tool standardization (you don't get to build many custom components because we k8s all the things so most of the time you're just writing yaml/hcl), but because working with regular sysadmins gets extremely frustrating.
I now saw it several times of when they needed a DevOps team, what they meant is what I think is different from the typical sysadmin. For doing the change itself on the Salesforce platform is easy, but in the end everything has to be merged, deployed, etc. The new DevOps teams are doing that stuff. They're not concerned with the dev part of the change, but all of the deployment/release tasks around it. This is actually novel for a lot of organizations, because their pipeline was so much simpler, e.g., a three system architecture, where every project deployed to one test system.
For a brief moment about 15-20 years ago developers were actually doing operations work. The infrastructure was simple. Some monolithic app servers behind a load balancer, memcached, perhaps a master/slave SQL database but mainly big iron… and then someone coined the term DevOps to describe the process of automating the management of these services…
One thing that was very different was provisioning new machines consisted of ssh’ing in and installing the required packages and binaries. The deployment was probably a simple script that used scp.
However, once the term DevOps was coined almost immediately some people began to stop doing development work and just focused on automating operations work and constructing glorious crystalline castles in the clouds to handle traffic that could have been realistically served by 1U in a shelf somewhere. Complexity begets complexity.
Having developers deploy the code to production is a security concern. You need permissions separated to ensure they do not sneak extra code into production after QA does their part. Our SOX audit was adamant about us changing this.
Is this sarcasm? What's stopping whoever does have the permissions from "sneaking code into production?" This seems like something pretty easily addressed by a combination of code signing and time-gated permissions. A small dev team may not have the time or energy to stand those systems up, but a blanket statement that it's a security concern seems like a bit much.
> What's stopping whoever does have the permissions from "sneaking code into production?"
In our arrangement, the ability to push code to production is gated by the GitHub/Azure integration path. The QA or project person who is rotating the production deployment slots (azure functions) is not granted access in GitHub to deploy to those same functions.
So, the developers pushing code and those deploying code are mutually exclusive groups. You could still defeat this with collaboration between employees or screwing with AAD records, but that's why we have a ton of audit logging turned on too.
Developer credentials should not be able to deploy to production, only CICD system credentials should.
Absolutely, you need proper controls in the system to control and authorize deployments with appropriate responsibilities in place, but fundamentally if your deployments are fully hands-off, it shouldn't matter who clicks the 'deploy' button
On the flip side, giving more people permissions increases the surface area for a social engineering or disgruntled employee attack. If your solution to sneaking code in is to delegate deployment to another team, now you have two teams that could sneak code in—one has to be sneaky and get around QA (not hard at most places), the other can just put the code in before deployment. Making the organization bigger isn't a great solution for lack of trust, it tends to exacerbate it.
DevOps is similar to agile. Originally they both described a set of principles, an ethos, not a specific role. DevOps was your development team work closely with ops as one team, using software engineering practices, config as code etc etc.
Then, it just came another name for sysadmin and later platform teams and back to where it all started, passing things over the wall from engineering to platforms.
> Originally they both described a set of principles, an ethos, not a specific role.
The way I understood DevOps (back from the first DevOps Days in Ghent) is that clear separation of sysadmin and developer roles harms the process of software delivery and that developers should maintain their code up to production, and learn from the process.
It was, in a way, a critique of the project-driven business where teams ship and jump over the board.
When it first started doing this I found it be to more tear down the moat many developers like to put between them and the rest of the business. Basically get up and go talk to QA, helpdesk, delivery, and marketing. Find out what is failing and fix that. Make sure those groups can use and maintain the code being delivered. THEN work on things that are new or champion those things that are broken to get fixed in the next cycle. That was devops to me.
Then it turned into this guy who can not really do anything. Can not really check in code because the devs do that (separation of duties). So you never get any real experience in the codebase. Can not make any decisions because the marketing/product owners do that. Can not really make better test cases as that is for QA. You can however help on the helpdesk they are short 3 people today. Then the meetings. Endless meetings upon meetings. Because your 'devops' you need to know everything that is going on and better have those statuses on the high priority items to be fixed. Oh and you are 'on call' so you can never really 'go home'. Then if something breaks all you can do is just call in others and make them fix it. Making you little more than tier 3 helpdesk. Useless paper pusher job with zero authority.
The problem is, however, that those two roles require different knowledge, skills, attitudes and mindsets, and so many (most?) developers don't really like sysadminning: you know, messing with VLANs, DNS resolving, packet routing, gluing two networks (one in Sidney, second one in New York) into one via VPN, watching disk quotas and memory limits, working around bugs in Linux scheduler, pinning CPUs, all that mind-bogglingly boring (but needed for smooth operation) stuff.
I enjoy making sure software works for people, the more people the better. If that involves all that sysadminning, I will enjoy that as well.
But most of my peers are oblivious to the fact whether their code will be used at all and are having fun filling their heads with complex abstractions right before spitting them on screen.
Yeah, that was it. And like Agile, it sounds good on paper.
Point is, once developers start doing support, they stopped taking those learnings and going back and developing better. Instead the organization just started having developers do support. But then, why are the support people these highly paid developers, lets change the role definition again to not need to code.
Seems like on-going title shuffle, around, we don't really want to pay to develop, why can't we get by with no-code.
> Platform engineering is the right word. “devops” has literally no meaning.
If you want to cut through all the BS, this is ultimately a debate about cloud vs on-prem relative to our ability to manage complexity across multiple vendors & styles of product. If you go to the cloud and actually do it entirely their way without antagonizing the process with 3rd parties and other ridiculous nonsense, you don't need leet hackers to figure things out for you and build elaborate processes that you'd require a "devops" team to support.
In all 3 major clouds, there are well-documented happy paths that a junior engineer can follow to put a perfectly functional webapp live on a TLS-secured domain in about 1 business day. As far as I am aware, "getting the site live on public internet and making sure the certs are ok" is DevOps bread & butter. I am not going to pay for a dedicated team to do this kind of babysitting in 2023.
The real tragedy is all of these companies who "went to the cloud" but just wound up in an even more complex & contorted hybrid stance with the cloud simply appended to their vendor list.
I 100% agree with this. I don't see how the average internal platform-engineering team or "devops" team will be a better platform-engineering team than AWS/GCP etc.
This is exactly how I've been selling the whole idea of hardcore, cloud-native to leadership & our customers. Most responses begin something like:
"By leveraging the capabilities of a multi-trillion dollar Death Star ..."
The objective is to get completely out of the game of managing VMs, certificates, authentication, MFA, et. al. There is no way in hell we can do a better job than any cloud provider when it comes to compliance, consistency, security, etc.
Maybe when we have 10k+ employees we can reconsider the benefits of suffering additional complexity.
you’ve clearly never built a website of any scale or complexity on any of these clouds. they’re esoteric and fussy. the documentation is often poor and wrong. they trick organizations by providing tiers of expensive support but it’s not great, especially when you’re running into a novel problem. there are “easy” plug and play solutions offered but they cost a lot and come with tons of drawbacks. Building a functional, secure website at scale is a lot different than exposing some ports and loading certs.
> you’ve clearly never built a website of any scale or complexity on any of these clouds.
That's a hell of an assumption.
> there are “easy” plug and play solutions offered but they cost a lot and come with tons of drawbacks.
Agreed. But, I'd argue that these drawbacks/constraints are exactly what you need when you are faced with a virtually unlimited # of choices. When you are building software that needs to survive audits and is sold to financial institutions with 5+ year contracts, intentionally paying to have your hands tied is a fucking blessing.
I also used to shit all over the cloud until I was put in charge of the whole product stack and had to field difficult phone calls from other CTOs. You may find your position change over time too if you are put into this kind of a situation.
First of all platform engineering is two words. second of all what is my understanding that devops = platform engineering? Do you have a dictionary definition for these? No, so it does not make sense to say that you should use X instead of Y. Btw. systems engineering and technical operations are the things we usually mean by devops, deploying, configuring and scaling applications in an IT infrastructure and dealing with different aspects of running these applications. DevOps was just an approach to remove the silos that some companies built between development and operations bringing good old tribalism to technology because we cannot exist without tribalism.
> Let’s get rid of devops and hire platform engineers.
Sorry, english is not my first language, but I’m glad you pointed out my confusion about how many words are in “platform engineering.”
> DevOps was just an approach to remove the silos that some companies built between development and operations
I know this is always the intention but it is never implemented this way, it becomes a “throw crap over the wall” situation again because now you’ve made a second team and management sees that stuff as “their” job and the silos develop.
I don’t profess to know the correct way to do it, but if I was managing an IT team, I’d assign a dedicated “Ops” guy to every dev team who would occasionally also write code. I dont care what you call this person. I’m in favor of platform engineer because it’s a lot more defined than “DevOps.” People have wildly different ideas about what “senior” devops is too. With a term like platform engineer, my gauge for if a person is a senior at that role is by the quality of the platform they can deliver to me. it’s vastly better, but again, I don’t give a crap what you call it as long as organizations finally understand what they’re hiring someone to do.
I suppose I'm the guy you're talking about - I'm the lone ops guy on the one dev team for a small SaaS business. I try to write as little code as possible actually; which isn't to say I try to spend little time writing code, it's more that I try to rely on community maintained frameworks because I fear creating some complex duct-tape and zip-tie web of homebrew automation that becomes increasingly hard for myself (or god forbid another person) to maintain.
I like the term platform engineer or maybe just infrastructure engineer, but I don't think they really add much specificity. For instance, we don't use any of the big three cloud providers, which I suspect would be an expectation for most of these titles. I think the possible diversity of modern tech stacks is just too much to pin these titles down, and mostly I just tell people I'm an "IT guy" ; it's only when you talk to someone in the industry that titles like Devops or Platform Engineer have any meaning, and as this thread shows, there's not even that much consensus within.
I've had now like 6 titles in these years - infrastructure engineer, DevOps, SRE engineer, platform engineer. They always want essentially the same thing it seems like.
Technically all words are made up. And, part of the problem is industry does keep shifting the definition. Think point of article was Devs became DevOps became Support.
> “devops” has literally no meaning. I’m only 6 years or so into my career, but I can count on a single hand the amount of devops engineers I’ve worked with that can actually “dev” - and by dev, I mean do stuff like dig into application code and suggest modifications for the infrastructure, or write their own full fledged libraries.
To me that is simply not DevOps. That's just Operations. Businesses are throwing around the title without a care for the word
From what I understand, "DevOps" helps you get what you want into production. Whether that be a few Docker containers of your node.js or Rust or Go or Java or C# or whatever application (probably an HTTP microservice or a batch job) as well as your infrastructure (Redis, Postgres, a message queue maybe)
Obviously scaling your microservice API from 2 to 4 isn't "all devops do". I also get that not everything is a Docker container. I'm just curious what I am missing.
I get that for example, making Postgres "scalable" is much harder but... is that really a "devops" thing or is that a Postgres-specific thing?
Same for Redis if you need multiple scalable instances.
Scaling infrastructure isn't easy but I thought devops was just responsible basically for standing up the "pipelines" to deploy whatever you want.
Why can't you just have a monorepo of application YAML that goes into ArgoCD or something like that? Where do you hit the "need devops/consulting" part specifically?
I usually come in after the fact to clean up whatever horrible thing the consulting firm did. I don’t want to malign them publicly but it’s the same one every single time.
I think they might not “need” it as much as they think they do, but they want faster deployments, better automation, less downtime. Usually the devops team is the one that handles this for most organizations. ramming code into prod by scp’ing some files into a single monolithic host can get you a long way, but at a certain point, it doesn’t, IMHO.
> 6 years or so into my career, but I can count on a single hand the amount of devops engineers I’ve worked with that can actually “dev” - and by dev, I mean do stuff like dig into application code and suggest modifications for the infrastructure, or write their own full fledged libraries.
damn, that sounds pretty good. need to look into some devops courses.
> Let’s get rid of devops and hire platform engineers. The problem is it’s a really weird and rare combination of skillsets, in a field no one really wants to do except complete weirdos (I am one). I’ve long said that DevOps isnt a career you choose, it just happens to you.
It always has been. Always!
This is why FAANGs paid their SREs top dollar.
The problem, as you noted, always starts from the top. Cultural change needs to be championed by someone with power inside of the company. However, cultural change is slow (site starts to scale) and expensive ($150k hacker nerd) and many executives still think of tech as a cost center to be optimized (see also: ChatGPT).
Platform Engineering now is where "DevOps" was in 2014 or so, but with more Kubernetes and Rust. But as long as executives who do not (or refuse to) understand the value that strong engineering teams bring forth, the Platform team will just be interchangeable with today's DevOps team.
I'm more than happy to focus on "DevOps" (wretch) but not in the course of building an application. One or the other. If I'm building an app and working through all of the requirement gathering and development the last thing I want to do is fuck with containers, deployment, build scripts, or cloud services. I'm might just be an old grouch, but having this stuff foisted on me makes me want to quit everything.
The AWS Lambda + Serverless framework shit trend has to go. There are no savings or agility. It never handles everything. The gaps are the painful parts, not the bits it gets right.
I'll choose a simple nodejs app any day over that yaml trash fire.
I am not sure I agree. I am a DevOps by title and I am reading the flagship code before I try to get answers from development about why things do not work. I dig into stack traces, read legacy BS, "stare and compare" logs I had no idea even existed until this moment. I deploy code to production during the week after hours, I make SQL DB changes on the regular, both manually and via liquibase. I am expected to troubleshoot issues with kubernetes as well as standard applications.
I do not think my organization would call this a platform engineer, as that title makes no sense for the work I do.
In faanng componies I know, they r usually the infra engineer/reliability engineer/production engineer, etc. They are treated the same as typical software engineers just that their focus is not on the product.
> Let’s get rid of devops and hire platform engineers. The problem is it’s a really weird and rare combination of skillsets, in a field no one really wants to do except complete weirdos (I am one)
TIL about platform engineers. But I'm still unsure what kind of things they produce. I know that they basically create a self-service organisation-specific infrastructure that can be used by developers inside an organisation to deploy software. But how does this self-service look like? Do developers fill in a web form to automatically get a server with the right firewall rules?
Explaining what platform engineers do requires explaining why platform engineering exists.
The whole idea behind platform engineering is the mindset that the "platform", i.e. the stuff that runs the things that business cares about, is a product.
Reframing the platform as a product instead of "IT" or "the place where apps go" introduces three concepts that were previously foreign to operations:
1. The platform has customers instead of consumers, and getting/acting upon their feedback is important,
2. The platform has some semblance of reliability guarantees, and copious observability is needed to uphold them, and
3. Like other products, the platform needs a dedicated, cross-functional team to maintain and improve on it.
So basically platform engineers are engineers that focus on either the "developer experience" part of the platform (i.e. the platform's frontend) or the platforms back-end (servers, persistence, networking, etc.).
> But how does this self-service look like? Do developers fill in a web form to automatically get a server with the right firewall rules?
Kind-of. In an ideal platform, developers wouldn't even know or care that their stuff is on a server. It could be in a toaster, for all they care. So it's kind of just there. They write and maintain code locally, and their build and release pipelines stores and deploys into it.
I've read a lot about golden paths. And therefore I guess: The UI of the internal platform might not look as polished as AWS, but maybe it is much more focused on the features that the developers in the organization actually need?
In reality I spend my day doing everything from yes infra work and living in yaml, to working in Go/TS/ruby/elixir/etc repos and building those as well.
We have dedicated infra team, and as platform engineer I have to know their job to an intermediate level in addition to having advanced level in shipping code across stacks.
I love it but most other people seem to struggle with the constant context switching.
The shittiest thing is to think that "devops" is a team or profession or group of people or some practices for admins. DevOps is the paradigm which have to be followed by the company which generates revenue online.
What you say is very true and I have seen it myself a few times (even being said consultant :)).
I’ll add that platform engineering is where much of the hardcore engineering happens nowadays in modern software stacks. In the olden days, SWEs had to know the hardware/low level software stack themselves.
I think the SWE role is what is at risk of commodization. It’s something sufficiently good LLMs may even be able to do themselves at some point given the right instructions.
Platform engineering will never go away - it’s close to the hardware and so many things can go wrong. You’re building the abstractions so SWEs can sit in their cozy IDEs debating about overly complex language features and libraries (said tongue in cheek as I’m guilty of this plenty).
But if you don't have a dedicated ops team, some people get pigeon-holed for the role in the team. Not necessarily the best thing for them, because now they face pressures from both sides.
This is a simple organizational problem with a simple solution: don’t do that. Instead, ensure everyone on the team has a production pager, and that the person responsible for work prioritization gets every single page in order that they feel the pain of that (this may well be the lead, like you say!).
Align incentives to create simple, reliable software.
Having one single person get all the pages does sound like it's going a bit far. The point though is for there to be a tight feedback loop between problems in the infrastructure and the ability to solve them. If this isn't the case, someone else in the organization is feeling that pain, but often they aren't empowered to solve them.
I think if everyone around you is changing the definition of a word, then it is fair to say it doesn't have any meaning anymore. Either if everyone around you is using it in same way, then you adapt. Or if everyone has different meanings, then it is meaningless.
Indeed, there are many examples of this (“woke” and “DevOps” are two I’ve encountered just this morning), and we should push back on all of them rather than accepting a continuously escalating stairmaster of bullshit.
The problem with DevOps is not really how it is practiced, but how it is named. DevOps is a bucket that a bunch of things are thrown into, and everybody thinks the thing they threw in is DevOps with the others being mislabelled.
Is having a DevOps team wrong? No, having automation experts, infrastructure experts, integration experts, etc. all makes perfect sense. Bundling all those disciplines under a single term is what is wrong.
Is aiming to do "less DevOps" using "serverless" wrong? No, aiming to reduce infrastructure maintenance and design overhead is perfectly sane. Interpreting that as entirely avoiding infrastructure, or as affecting any of the other disciplines is what is wrong.
What we need is better work descriptions and team organizations. But while the buzzword DevOps is bad, it's not so bad to have a fancy term that executive management understands and can put some money behind - money that allows you to spend time or buy solutions to solve your actual process problems are.
"DevOps" was never originally a team or job role, it was just a workplace culture philosophy that dev and ops should work closely together rather than in isolated, and often mutually hostile silos as was common in the 90s.
It just became a buzzword that everyone had to have, then C-level leadership needed "invest in DevOps", "grow the DevOps team" (because buying is easier than fixing the culture) until we lost sight of the original point and DevOps just became... ops.
I’ve always considered DevOps to be Developer/Operator - as in - you run the stuff you build. This perfectly aligns incentives for creating stable, scalable systems. If it goes down or breaks, the ones who wrote it are the ones who feel the pain.
My last job was the first place I saw DevOps as developers working along side operators as DevOps, which was a slight improvement over when they didn’t work together, but seems unnecessarily disjoint. Unfortunately, they had compliance requirements that forced developers and operators to be separate humans with separate access. Not wanting to get back into that world, I’ve not looked at how strict those requirements are or if there are ways around it (HIPPA, FIPS, etc.), but it was an annoying distinction.
> I’ve always considered DevOps to be Developer/Operator - as in - you run the stuff you build
This is also exactly how i've always understood the term, and it makes perfect sense.
But the origin of the term is indeed in distinct dev and ops people working more closely together. The origin story is basically Patrick Debois watching this talk, and then turning the title into a noun:
The problem is that lots of developers who have no interest in operations, and even most who do aren't that good at it. I've worked with perfectly capable developers who didn't really know what an IP address was beyond "numbers with some dots in them".
Personally I view platform engineering (or SRE) as the best endpoint of the ops role and devops philosophy. A good platform engineer is a developer that knows OSes, networking and databases and can expose abstractions that meet the requirements of application developers, akin to how a good application developer knows their the business domain and can expose an interface that meets the requirements of users. Nowadays, the platform engineering is often done by AWS or Google and that's sufficient for many developers and smaller organisations, but many orgs will probably still need some people of various skillsets between what is exposed by the cloud and the business requirements.
I mainly think traditional ops is just a dead end. If something happens often enough that you feel like you need to develop a runbook and hire someone to follow it, you should just be automating the fix or fixing the underlying problem. DevOps in the sense of applying a development philosophy to ops (i.e. automation and version control rather than paper runbooks) and applying an ops philosophy to development (i.e. writing stable systems that are robust in the event of failures) is still a valuable philosophy, but the word itself is meaningless now.
Back when I hunted willy mammoths, "DevOps" meant that there was no "dev" and "ops"; developers did ops, to avoid the friction of throwing code over the wall. Essentially it meant more "vertical" "full stack" teams, instead of horizontal layers. You knew how to write and run your system, and probably has a narrower scope of product than someone who was dev for more features or who was ops for more apps.
That’s how I thought about it (and lived) as well. Developers knew how to configure operating systems and databases, deploy them, etc. Everything but racking their own hardware. And sometimes even that.
Interesting. When I started I was told the idea is you apply operations principals to your developer workflows, i.e. your developers making code is as important as getting their code to production.
Yep. At work, I'm being a bit picky about the wording, but it's shifting people into a better direction. We don't have DevOps people. We have a fairly modern operations team, we have more or less modern developers and tasks or projects follow a DevOps-mindset.
Like, if your DBA is attending plannings of teams working on a database heavy project. That is an action following a devops-mindset - breaking up siloed knowledge at the right places in a good way in order to save time on both sides. Weeks of planned work can disappear with the words "Oh there's a postgres extension for this. Give me a week to check it out."
Or, if we work on some system so a consultant managing a customers system can roll versions forwards and backwards automatically with a simple UI. Again, something following the devops-spirit of removing yourself from the loop, putting trust into the automation and enabling people to work with less friction. But again, this isn't done by a "DevOps engineer", it would usually be done by one of our operational dudes with a focus on automation and pipelines in close cooperation with the dev-team.
It may be picky and pedantic, but it steers thoughts into a better place. And it gives us an answer to "What the hell is ops doing all day?" Making your devs better, and you money, good sir.
Interesting point and one that I feel applies equally to Product Manager, another catch all title that has a ton of stuff thrown in.
IMO there are 3 distinct roles that product gets thrown into, 4 really but the technical product manager is completely different.
Research/data, operations and UI/UX and then the 4th being the technical product manager.
The person that maps and sets up the metrics, KPIs, product intelligence and knowing the business model is very different from the person that knows the UX flow and can inform the UI.
The problem IMO lies in the middle management layer, maybe ai will be able crack that but for us ;)
It seems to be a problem all over many disciplines tbh
As someone who has managed teams (including devops teams, while not being a dev myself) for 26+ years...
What we need is LESS HR.
And what youre saying is what we just refer to as an SME (Subject Matter Expert [SUBJECT])
Its stupid to worry about labels. But if youre an SME on the sites DBs, or Network, or scaling factors etc... your the SME for [SUBJECT] and you can still be an SRE, Dev, Ops, Network guy and still be on the Devops team/ops team/ IT team.
I've been an automation engineer on small dev teams (5-15 devs) and felt like I had tremendous impact. There were a few larger integrations I was generally hired for and then got to tackle pain points I had seen and heard about within the dev team and on the business side. Not to mention being able to refine CI/CD and take that off developers hands.
I've been at a large organization for a while now and my backlog is mostly planned out quarters ahead and I don't feel like I have nearly the same impact.
With 15 people and 7.5 hour work days, saving each person just 30 minutes a day is cost equivalent to a permanent full time role. At 30 people, you need to save just 15 minutes. At 90 people, 5 minutes.
And that is without considering that a full time role would keep doing more work than that singular time saving, or the decreased operational cost from failures in manual process execution.
Just because the jobs seem menial to you does not exclude it from bringing great value to an employer.
(Above numbers are subject to crude linear extrapolation, but are sufficient to make the point.)
>> "The growing zeitgeist is that “platform engineering is the future.” And given that I co-founded a product in the space, I sure hope so!"
I am so sick of these shoesalesman trying to get you to adopt their platform which runs on another platform which runs itself on wishful thinking and startdust.
Kubernetes can be deployed with a single binary nowadays there is no magic anymore the terraform scripts do look similar because you are not doing the actual hard parts like cis compliance or even selinux.
This whole discussion is so moot, that every time it comes up i feel a little bit sad inside. Call the things i do what you want, call us the "server-clowns" who cares.
It doesn't matter if its "platform engineering" "principle engineer" "devops dude" its the whole shebang of "guy with experience builds stuff that code runs on".
You dont get people who do "DevOps" fresh out of college or people that have been barely using a computer for some time. You get the dudes with experience, but every time someone with experience makes up one of these buzzwords like "platform engineer" "lord of the box" or whatever, tons of people just assume the role without having the experience. And then you hire the cheapest ones and wonder why you need 15 of them.
None of this is hard if you have been playing with these concepts for ages and finally that's what companies pay you for.
And having your entire statup on serverless? Give me a break. How can you tell that someone doesnt follow compliance or any other regulatory body in one sentence....
If you click on the username you will see that this person tried the same post 7 month ago and therefore i will say it again:
Please let al bundy, the shoesalesman complain somewhere else.
> I am so sick of these shoesalesman trying to get you to adopt their platform which runs on another platform which runs itself on wishful thinking and startdust.
I think you misunderstood basically everything about this post. The author is not saying to adopt the author's platform, the author is saying that beyond a certain scale, every org is actually building their own internal platform whether they elect to view it that way or not: the author is arguing the opposite of what you describe in this sentence.
> You dont get people who do "DevOps" fresh out of college or people that have been barely using a computer for some time. You get the dudes with experience, but every time someone with experience makes up one of these buzzwords like "platform engineer" "lord of the box" or whatever, tons of people just assume the role without having the experience.
did you even read the post? From the post:
> We have an industry-wide shortage of expertise in the cloud space, a great IDP should have safe, dependable building blocks for designing cloud services quickly.
The ... entire argument is that you need strong foundations and reusable building blocks, and those things take expertise to build specifically because most product engineers do not have or want that expertise.
Your whole argument is describing something the post isn't saying.
> " the author is saying that beyond a certain scale, every org is actually building their own internal platform whether they elect to view it that way or not"
Ohh so devops is not bs? quelle surprise ;)
> The ... entire argument is that you need strong foundations and reusable building blocks,
Like the terraform code he himself admitted to copy and pasting.
> because most product engineers do not have or want that expertise.
henceforth again, devops is not bs. Therefore i conclude the intend of the post is nothing more than an advertisement piece.
Of course the post isnt directly saying "buy my product" by showing it in your face, but then again I have not said that either.
Its super easy though to click on the logo in the top left corner of the post to realize the site, on which this blog is on is directly advertising itself as "Defining Platform Engineering"
heneforth, yes i conclude shoesalesman trying to get you to adopt their platform through a linkedin advertised blog post =)
> If you click on the username you will see that this person tried the same post 7 month ago
I bang this particular drum quite loudly, for sure. However if you'd indulge me as to _why_ I hope I'd be able to change your mind.
To start with, I'd like to state that while I'm not a fan of useless things, I can definitely make peace with non-perfect terms, systems and things that serve no purpose.
However, when it comes to things that actually cause harm: I can't abide that.
Why would "DevOps" as a term cause harm?; you might ask.
It's harmful because it is:
A) Rewriting history
B) Has no universally agreed upon definition
C) Is a term that's proginator can't even define in his own terms
D) Has no chance of ever having a universally agreed upon definition.
The deal is thus: if you have a devops team, some people will say you have failed devops.
If you have a devops engineer; some people will say you failed devops.
If you "practice devops" and you have no people focused on operations: I would say you've failed devops.
So what do we call the people who actually ensure operational excellence and best practice? Aha. DevOps.
I'm not trying to sell you anything, I just think this treadmill needs to stop.
I know it's unfashionable but hiring sysadmins into your project team and having them tied to your Agile methodologies is fine, sysadmins need to code though, as they always did. Heck, even Pat Dubois (originator of the term DevOps) originally envisioned the role as "Agile Systems Administrator".
You might think me pedantic or that I'm being needlessly overwrought on this topic; but precision in language is a very real engineering problem.
We must be precise with our terms, and if we can't even get our methodologies or job titles to align as an industry, can we really be trusted to get any other terminology right.
While your concerns about the term "DevOps" are certainly valid, I'd like to offer a tiny counter-perspective that I think could offer some clarity.
Firstly, the idea that "DevOps" is rewriting history doesn't hold up well when you consider the natural progression of any industry. Concepts and terms evolve over time. It's not rewriting history, it's a sign of the industry maturing. Speech is in flux all the time, otherwise this post would also read like Shakespeare.
Second, the lack of a universal definition isn't necessarily a bad thing. In fact, it might be a strength. It allows different organizations to interpret and apply the principles of DevOps in a way that best fits their specific needs. This flexibility can actually drive innovation. Or differently set, the meaning is assigned and not a given. As a freelancer in the space I get a lot of different offers under the same umbrella, but the truth is that i can simply help in a lot of areas by definition.
Third, just because the originator of the term can't pin down a solid definition doesn't necessarily discredit it. It's common in tech for concepts to outgrow their original definitions as they are applied in new contexts and grow in scope.
Your point about DevOps teams or engineers signifying failure is also too black and white, in my opinion. The title is less important than the actual practices and methodologies being implemented. Whether we call them DevOps engineers or agyle sysadmins is secondary to their contribution to the project. That is what the job description is for.
However, calling this entire branch of IT "bullshit", will remain a marketing scheme for your underlying investment, no matter how much you now try to blame it upon technicality.
> Firstly, the idea that "DevOps" is rewriting history doesn't hold up well when you consider the natural progression of any industry. Concepts and terms evolve over time. It's not rewriting history, it's a sign of the industry maturing. Speech is in flux all the time, otherwise this post would also read like Shakespeare.
Yet words like "bridge", "ceiling" and "concrete" are unchanged for a century. Evolution is fine, but we're chocking on our own spit trying to be "next" and "hip" and whatever. So much silly useless effort, but this is worse anyway because we went from more formalised and easy to understand terms to a fuzzy one which nobody had clearly defined.
> Second, the lack of a universal definition isn't necessarily a bad thing. In fact, it might be a strength. It allows different organizations to interpret and apply the principles of DevOps in a way that best fits their specific needs. This flexibility can actually drive innovation. Or differently set, the meaning is assigned and not a given. As a freelancer in the space I get a lot of different offers under the same umbrella, but the truth is that i can simply help in a lot of areas by definition.
Sorry, no this is a super bad thing, you don't get to choose what "yes" means given a concrete context. This is not materially different. If you have a different job: it should be called as such.
> Third, just because the originator of the term can't pin down a solid definition doesn't necessarily discredit it. It's common in tech for concepts to outgrow their original definitions as they are applied in new contexts and grow in scope.
He never even supplied a definition, so we are stuck in this loop of defining it constantly. And our definitions almost never match. Lets just let it die. Almost as much time wasted as with timezones.
> Your point about DevOps teams or engineers signifying failure is also too black and white, in my opinion. The title is less important than the actual practices and methodologies being implemented. Whether we call them DevOps engineers or agyle sysadmins is secondary to their contribution to the project. That is what the job description is for.
I'm just pointing out that many people disagree on the definition, so many will just claim outright that you're doing it wrong.
I agree that actions are better than definitions, I'd rather have shitty definitions and functional actions; however that's a false dichotomy, we can have both.
> However, calling this entire branch of IT "bullshit", will remain a marketing scheme for your underlying investment, no matter how much you now try to blame it upon technicality.
I am invested in nothing, I have no financial or even sunk-cost gain from taking this particular fight, so you're concretely mistaken. FWIW, I am not the original author of the article; mine is here and was written a year earlier: https://blog.dijit.sh/devops-confusion-and-frustration
There are over 6500 languages out there (so google tells me) which means there is a lot of interpretation for what word should actually be used for "bridge". At this point we have not even talked about the fact that DevOps is an umbrella term by definition.
> "Sorry, no this is a super bad thing, you don't get to choose what "yes" means given a concrete context. This is not materially different. If you have a different job: it should be called as such."
Sure we do. It's a made up word for a concept. Especially when we are describing the widest range of possible work for a person working in IT.
I have a final point for you:
If you really want to go down your own road, your job should have been called "Person who sets up the Kubernetes cluster with terraform, ansible and yaml". No platform is the same. No DevOps is the same. Henceforth we use umbrella terminology.
Probably best reserved to people that implement distributed systems. One can deploy and manage a K8s cluster with 0 distributed systems knowledge.
> Cluster Administrator
That's a good one. But many DevOps do more than managing clusters: I create and manage templates for our CI/CD pipelines, project templates and internal libs that abstract best practices, manage networks, databases, data lakes, identity providers... And develop internal applications to automate ops of all those resources.
> Container Platform Engineer
Same issues as the titles above.
> Deployment Automation Engineer
That's a good one, I like that. In the end of the day, everything a "DevOps" do is done to deploy things faster and more consistently to prod, as well as keeping deployments running correctly. I think we can even drop the Automation and use "Deployment Engineer"
Not every distributed system is a kubernetes cluster
> Cluster Administrator
There are many services which should always run outside of kubernetes, loadbalancers are the easiest counter example. The IAM Role is called like that because its closely scoped to all things cluster in amazon.
> Container Platform Engineer
entails that you only work on the container platform, while a cluster admin for instance can setup everything on VMs or bare metal
> Deployment Automation Engineer
This sounds like you are only taking care of deployments, monitoring and logging come to mind as counter examples
> Or should I just call developers "IT"
I tend to call myself Freelance Sr. Engineer with Kubernetes / GitOps / DevOps / Golang Focus in order to bring german exactness to a widely defined field. So depending on my hat, I become what's necessary in that scope. But yeah, to most managers, I am simply someone from IT
Companies have a goal in mind when they go out an hire staff for their objectives. Overall I still think that DevOps is neither b*s* nor insufficiently defined to yield a job title. Titles are vague on purpose, because especially in the realm of DevOps your scopes will get extended to more things than just terraforming.
Sorry for being that guy, but it's "moot" not "mute". A moot point is a point with little relevance to the discussion at hand, while a mute point would be a point that is either unheard, or made using mechanisms other than speech.
Would people read this article less critically without knowing the author's position?
If so, then THAT'S the problem with devops (and every other software buzzword). If someone is reading online about ideas in their profession, why should they ever treat the ideas with anything less than maximum critical thinking and distrust? This is their livelihood, after all.
I disagree. DevOps was, and still is, extremely successful as a paradigm.
Ignoring all of the other changes it brought into the industry (the fact that CI/CD is table stakes now, for example), the single biggest thing that the DevOps culture instituted is the _idea_ that ops will need to code sometimes and engineers will need to _ops_ sometimes.
Sure, many engineering orgs translated this into creating a "DevOps" team that writes YAML and manages The Jenkins™. (At these places, this is, sometimes, the ONLY way that breaking silos can be done due to complex organizational rules. Also, many of these teams are composed of ex-sysadmins AND ex-SWEs, i.e. the literal embodiment of DevOps.)
But it also brought about operators managing high-complex software like Kubernetes in even the biggest of BigCos.
This simply would not have happened without the DevOps mindset taking hold.
For example, from the article:
> For every operations person without software development skills, there are FORTY engineers without cloud operations skills. If you are going to build an internal platform, you’ll need experts with overlapping experience in both fields working together.
DevOps as written is not what you're saying; this has been mentioned at least 20 times in this thread.
Sysadmins of yore were developers, they used perl and C and eventually ruby. Then there was a glut of sysadmins who couldn't code, then people acquired collective amnesia that sysadmins ever coded and invented a new term.
The issue was that the term that they decided to use for this new breed of developer operations folk was the same word that was used for a methodology of breaking down siloes (having developers and operations as distinct entities but working together)[0] and the same word that was being used to describe sysadmins adopting Agile[1].
The annoying thing about the passage of time is that you look back and see only what has changed and may conclude that those changes are a result of paradigm shifts: you could be right, but sysadmins were using proto versions of common paradigms now: version control integrations used to be bad and fragmented, but it was ops pushing VCS; infrastructure as code via cfengine; cluster management with clustered ssh clients (cssh).
I was there, I saw this.
It's hard to differentiate between the slow march of progress of operations tooling (rebranded as devops tooling) and the fact that it might not actually be linked to devops as a methodology.
I really didn't. One of the definitive books on the DevOps ideology, _The Phoenix Project_, spends basically its entire plot driving home the point that DevOps is about dev and ops working together instead of ticket-passing.
To your point, doing this requires going back in time a bit where sysadmins used to do a little bit of software and devs had to be a little bit of a sysadmin.
(I blame Windows and the dot-com boom for the silos having been erected in the first place.)
Then you've chosen someone elses definition but it's not the origin I'm afraid.
That book (I've read it twice, I think it's the only book I read twice honestly) is about the Toyota method and Agile and now that I think about it: warns against having "super stars" who do everything; which seems to be some other folks definition of devops xD
Everyone has their own definition. That is the core of the problem. Devops was supposed to be that there were no separate devs and separate ops. You should own everything from building it to running it.
Now enter the snakeoil salesmen and the agile consultants. Throw the work devops around. It can mean whatever the fuck you want. Devs? They cannot be bothered with operating the service. Look at Google! SRE!!! Ops? Are the addibg any business value? I mean c'mon they are "running" the service!
I know, i know: devops team! A team where we do devops stuff! And we'll replace the operations team (secret time: we will not. It's the same shit with a new name). Now we just wait for all that agile fairydust to kick in.
I have no idea how DevOps morphed from having the Dev team and the Ops team working together instead of throwing shit over the wall to a job description that neither side wants to have, yet here we are.
I feel like DevOps should be a skill to mention you have experience in (Ops with experience of Dev or vice versa) but somehow morphed into a job description all on its own, defeating the objective of the term completely
I can tell you how I saw it happen first-hand from my "biased" viewpoint.
It was 100% career-bullshitters within the org wanting to make a name for themselves by "introducing" something that the clients wanted and was a "big gap" for the consultancy. They latched onto this buzzword, and at the same time it was combined with clients latching on to it as well from all the hype it was getting in conferences, talks, articles, and other places where bullshitter evangelists push their drug. Never mind that in every sales meeting with clients we "promoted" this buzzword - so no wonder they "asked" for it.
Had one of my projects burning for a year as a result, where we were told by leadership to rely on a "platform engineering" team that had a ready-made platform. Meanwhile it was just a bunch of arcane priests that knew some awful-looking JS/JSON inside a YAML templating language, running on some weird platform tool that manages K8s. Found out about the mess when I inquired after a month where this ready-made "platform" was, and they said they were still "bootstrapping a K8s cluster in AWS", then waited another 2 months for them to "bootstrap" the QA and production environments. Meanwhile the platform engineering team was led by a career-bullshitter and they had just a bunch of guys that basically did some bootcamp courses, certs and minor experience in "Their Chosen DevOps Tech".
Leading to such wonderful talks summarized as: "Oh you want to explore the Hashicorp stack and weigh pros and cons? Fuck you, it's a poor-man K8s, we know better, shut up and stay in your lane."
Never again.
From that point on, this function 100% stayed within the dev team's control. Architecture, platform-ing, SRE, devops, whatever you want to call it.
I'm surprised recently, just how many job offers and what compensation my devops friend is getting (he's been a devops for almost a year... before that he was tech support, very basic technical knowledge becomes he comes from outside tech).
My senior full stack developer LinkedIN requests are pretty low volume for some months now, while he gets flooded with offers with compensation more than most senior devs I know.
His skill set is also (and I love the guy dearly, I'm trying to be objective and he also feels this way) maybe 1 / 5 of what a senior dev has. Basically he's "I’d wager most of what they are doing is using Terraform and YAML to do menial tasks for the engineering team."
The issue lies exactly with the menial tasks. Ever used Ansible? It's hell. Not because it's hard, but because there's basicially no debugging and so much hidden state. You're lucky if you can use Terraform, but that's not the default. Depending on the stack, DevOps is mainly just trial and error, "getting shit to work", which depending on the Software used can take a while. And then being responsible for the part of infra you got working, which may necessitate unpaid overtime in case of an outage.
EDIT: One thing I forgot is, that in order to be really good at DevOps, you need to know your stack _really_ well, which imo necessitates that you spent at least some time on the development side of things. This goes against every hiring managers instinct though, as people should only specialize in one thing and do it well (at least where I live).
> You're lucky if you can use Terraform, but that's not the default.
Oh god I thought that was unlucky. I have huge respect for Terraform for popularising what they call “infra as code” (we used to just do this with the actual AWS API) but now there’s multiple modern IaCs that use actual code with real tooling.
IaC was popular before Terraform, it's just the first tool that really made it easy to use. Unfortunately you can't make use of it outside of $BigCloud, because it needs common and well established API's to run. If your employer self-hosts, you're either stuck with Ansible or you host OpenStack yourself (which is just a surrogate $BigCloud, since you'll likely employ the services of RedHat to manage it).
I still like the flexibility of the raw AWS API, but now days CDK and Bicep for anything more complex. I really wanted to like Pulumi but it had a lot of odd bugs and leaky abstractions a couple of years ago when I got into it, it’s probably improved since then.
As someone who transitioned from a DevOps role to a Security Engineer role, the thought of going back gives me anxiety. Having my "log light" turn red at 2am? No thanks. It's not like it woke me up or anything, I'm always awake at 2am, I just don't want to deal with servers at 2am. I'd rather get a good night of sleep and go in the next day and destroy all of the hard work that the DevOps team spent so much time working on. That's a much better fit for me. I wouldn't take a DevOps job even if it paid $50k more than what I'm making now. I just wouldn't enjoy the work. That isn't to say that I'm unwilling to help the DevOps team (I help them all the time by hacking their shit), but I wouldn't actually want to be them again.
It is true. People hire astoundingly incompetent devops all the time. I’ve seen it throughout my career. An issue is most hiring managers and CTO’s also don’t have a devops background, so it’s trivially easy for people to get into situations where they can BS some buzzwords and googled regurgitated definitions like CI/CD and it’s like “welp you know what you’re talking about.”
It’s highly compensated because it’s very needed. A low low % of operations engineers are as good as they need to be. It’s not even always the organization’s or the engineers’ fault, either, as the author of this blog alludes to.
Because the work conditions outside FAANG are garbage, no one that has any regard for their own well-being would get into it. So far everyone I have met that works in infra was in horrible shape, often from stress-related eating disorders and lack of physical exercise.
I have a shit job (Python DevOps in tel. co. industry). No problem with that. Previous job was in applied research. Very interesting, unfortunately the work conditions and compensation were much worse than my present-day shitshow.
Life is not only about work, I have to work to be able to pay my mortgage and to enjoy other activities.
Having happy or unhappy life, for people in the IT industry, is mostly about their mindset.
If that lifestyle suits you, sure, go for it. However, by staying in a shit job you are throwing half of your waking hours away. I know this is not an option for everyone, but if one can make enough money from the thing that one enjoy that's like getting half of your life back.
This question is strange honestly... Because I have a career in software development and I really enjoy doing it? If I wouldn't be in this situation, maybe I would consider doing the switch based on what I've seen.
There's lots of moving parts, some systems are very complex and it's a space where experience is worth a lot - it's hard to get started with ops 101 just by yourself like you can do with frontend web development for example.
As a former DevOps who has moved into SWE, I completely agree. One consolation I might put forward is that there's a larger breadth of knowledge with much less depth when the two are compared.
True only to some extent, the knowledge you need to be a competent devops is huge and i think most techies prefer dev route though i don't know the stats.
I think one of biggest problems the industry suffers from is HYPE.
And we have HYPE all over the place: cloud services, frameworks, programming languages, tools, application architectures, etc.
And to my eyes DevOps is another hyped thing. Not only that, many jobs require you to be "certified" in a cloud service provider (a la Cisco like in the 90's) or on some particular tools (Kubernetes?).
Then we re-discover that the OLD way was really good, that actually there was no need for something that
over-engineered, and we go back and start doing things the simple OLD way. After some time, the cycle re-starts.
What is DevOps anyways? I don't know, but today it seems that is a word associated to fancy cloud services
and tools to deploy applications, way way different from the savvy system administrator from the 90's & 2000's
that knew lots core concepts as: DNS, LDAP, SNMP, HTTP (Apache), SMTP, NFS, iptables, etc.
If I had to hire someone for today tasks I'd probably stick to the 90's knowledgeable system administrator.
I agree completely. I remember very distinctly when tech transitionned from following "trends" to becoming "hype" : when iphone and apple marketing made developping ios app a hipster thing. All of the sudden you had articles in fashion newspaper talking about "how a mobile app developer desk looks like" ( saw it from my own eyes, it was next to the "architect desk" and the "fashion designer desk").
It certainly helped with the social integration of software developers (which is definitely a good thing), but it also created this bizarre connotation that tech had to be cool.
It doesn't. Technology first and foremost has to work. Especially software.
I should add that it's now becoming even worse : tech now has to be politically correct and inclusive ( aka: boycotting a database technology because its author don't support some US legislation regarding transgender rights would be a totally ok decision)
Hype existed before iPhone. In the 90s and 2000s it was "here's what a hip web dev's desk looks like" and the transition to AJAX web apps. Before that, the switch to Java and XML and delivery via applets. Before that the switch from minicomputers to desktops and access to the internet in your home. Before that switch from slide rulers and doing the math in your head :) They all came with style section articles and a feature on the cover of Newsweek.
I challenge the author to showcase a developer platform that handles secrets management and access management correctly and transparently. Sorry, can't be done. I've seen various attempts that certainly tried, and they've all had holes.
Product teams need somebody who has the following skillsets: security, observability, deploy/release, containers/repeatable environments, networking/runtime/storage... if you don't have those skills on your team, you're going to have a hard time. Sometimes you find those skillsets in one engineer, sometimes among multiple people on the team. If they're in one engineer, maybe that guy's title is DevOps, maybe it's Platform, maybe it's SRE, maybe it's something else.
Stop sweating the title and start hiring for the skillsets you're missing. If you can't find anyone, find people on the team who are interested in learning, and give them time to train on it. Who cares what other companies are doing, worry about the missing holes on your own team first.
Every single "devops" post on HN ends up the same.
About half of the comments are people saying their there exact definition of "devops" is the one true one ( Handed down from Heaven by Patrick) and if people followed that then it would be unicorns and moonbeams
Another third of comments are Developers who dislike Ops and especially that Ops can't code [well] and would seek to eliminate it. They hate that Ops people keep re-appearing with a different name each time. They will lament that Sysadmins always used to be able to code "back in the day"
Some of the remainder will be people (like the author of this article) noting that Operations is a distinct skills and that most devs don't want to do it. SO rather than trying to eliminate it perhaps we could actually do it properly.
Doesn't help that the post didn't define their definition of devops, and then they went on to use it in a variety of contexts, seemingly contradictory. As someone who is a software engineer, but doesn't necessarily keep up on the latest hype, this post made me head spin when I tried to read it casually.
This isn’t complicated. The charlatans moved from Agile to DevOps, taking another reasonable idea and turning it into the exact problem it was supposed to solve, and the cycle repeats (because they need to eat too).
Much like with the agile debacle, the best thing to do is continue working and try to avoid/minimise the harm they can do until they find the next idea to latch onto.
Incidentally, this video popped into my head as I always think of it when this comes up:
Well, yeah. 25 years ago, there was a thing called a sysadmin. A sysadmin was an infrastructure engineer that knew how to code to automate everything. There was SAGE and various UNIX and linux groups.
A lot of Windows people disliked the concept of Sysadmins because they didn’t know how to program and tried to paint the concept as elitist.
A decade later someone announces the concept of DevOps, which is an infrastructure engineer that knows how to code to automate everything.
Whatever. it’s not worth getting worried about. At least automation is being considered important again, we have infrastructure as code now, the languages are better than Perl, sendmail is dead, and as long as you stop them installing kubernetes unnecessarily (which they will try) they’ll be fine.
…to automate everything. I wrote it out fully the first time, and didn’t think I’d have to write it out the second, but hey, there’s always one person. If you don’t think devops is about automation… honestly I actually don’t care have a great day.
Or in VMs, or in containers. In Bash, Perl, Python.
But what do you think software runs on these days? Magical immaterial containers? Bare metal is still there, just a few (more or less terrible) abstractions away. And please check out https://github.com/kubernetes/kubernetes - Oh noes, k8s is 3% bash? The horror :))))
My point is that today sysadmin skills are not enough. You need Python (boto3), APIGW and Lambda, years of Cloudformation and stuff. Does not hurt tho :)
DevOps team is when dev team has dedicated ops or sysadmin that has all credentials and works with the team on "best practices" so that devs don't reinvent BS.
There is no DevOps role and never was. It was just management twisting it into marketing scam to get devs operate systems and to feel like it is their responsiblility.
Problem is that no company wants to have Sysadmin tied to one dev team because sysadmin won't have much to do most of the time - but that was idea of devops that you should have devs, admins, qa, business analysts working together reviewing tasks from the start and giving input on what is their specialization.
Well yeah no true Scotsman - but dev ops idea is not bullshit - way people do things is bullshit.
> you should have devs, admins, qa, business analysts working together
The idea of DevOps is to my knowledge that the role of Developer and Operator slowly merge together in one role. Which would also be in line with SCRUM and agile development, i.e everyone should at some point be able to do everything in the stack, if it's necessary.
What you're describing sounds more like the standard agile development process.
2) The "DevOps Days" (first use of the portmanteau by Patrick Dubois) which was an agile conference aimed at Systems Administrators trying to get them to work more agile; the conference was called "DevOps" to make developers think it was also for them.
Neither of these primary sources said that we should erode or replace ops people; or that it was ever intended to be a role or individual responsibility. This is a lie that corpo's have made to reduce headcount.
And the growth was really driven by the great exodus to service oriented and microservices architectures from monolithic webservers deployed to Tomcat and the like. The author in the OP really nails it when he talks about the ever-growing complexity of modern tech stacks. It necessitates this blurring of the lines.
All the words are bullshit: DevOps, GitOps, SecOps, CI, CD, zero-trust, Agile, yada, yada, yada. It's people with their passion, expertise and attitude that make a good IT pipeline. Thinking you can capture it in a word, write some blog posts or courses and then apply it to whatever team is pure folly. But then what would the consultants sell? And what would massive IT service companies attach their products to? Hype is the grease that lubricates the opening of the wallets.
I've been a sysadmin, then a DevOps, now a Dev. I loved system administration the most but then it got a bad connotation for management, recruiters, etc. Like sysadmins did not do automation or wrote code. So the jobs went away and then I got jobs writing YAML and using whatever alpha version automation tool was hyped at the time. So in the end I said fuck this, I'm tired of trying to put garbage code that others wrote into production using what they (who had no Ops experience) think makes Ops work. I want to write my own garbage code and let others use whatever born-yesterday YAML templating engine or DSL is trending nowadays.
> Need a database? File a ticket with DevOps.
> Need an IAM role? File a ticket with DevOps.
> Before long, your massive team of engineers has fully saturated your understaffed “DevOps” team’s backlog.
Our DevOps is under IT, not Engineering, so there's already an organizational gap there.
I've talked with DevOps multiple times over _years_ and laid out a rough architecture of how Engineering would like to work. To this day after CI/CD passes its still manual deploys with a ticket.
Render.com and other platforms do 90+%, if not 100%, of what I want as an engineering manager, but I'm hamstrung by policy and politics that were put in place 6 years ago when non-technology ppl decided we somehow had the resources to manage an OpenStack build instead of AWS. And that's before I realized everything on AWS is config config config and there's entire companies (like Render) that take away most of the work and just give you a dashboard to accomplish what you'd like to accomplish.
We have this exact setup with the same issues. Tickets for everything and their team is very understaffed for our team especially which is deploying new things fairly often
Platform engineering: implementing a half-baked PaaS with kubernetes in the worst way possible, over applying the MVP mentality and breaking things every few months because making something stable is boring
Know how to say no? Awesome, that’s what you need to tell the devs whenever they moan about not having fancy things like metrics or logs
This has happened at a few gigs for me. Don't forget ballooning infra costs, with no one team being able to be held accountable because one team is managing the platform and the other is writing the code that is run on the platform.
Ops is hard as heck especially if you have any sort of odd networking requirements. I know dozens of devs that don’t know one thing about networking and would struggle in that field.
This is one of those rare articles about DevOps that isn't bullshit. The irony...!
This part, while true, bothers me:
"Simple, just hire some more frontend and backend engineers to develop a great internal PaaS with all the golden paths your operations team is architecting while you are trying to build your actual product that runs on top of it."
I've been on that team, multiple times. It doesn't really work, because it's yet another silo, and it takes years to bear fruit. We shouldn't be developing platforms, we should be buying them.
It's like building and running a factory so you can have an assembly line to make widgets. Most people who want to make widgets today actually contract that out to a company in China who already runs a factory where they adjust their tooling to make your widgets. That's what economies of scale and specialization do: you pay somebody else to do the hard, expensive thing that isn't a core part of your business. You get to market faster, you waste less money, and carry less risk.
We're doing business wrong. You should not be building factories, you should be hiring a factory.
Do I mean "hire consultants?" No. What we need doesn't seem to exist. We need companies who do white glove integration of a software product with a bespoke PaaS. Like Heroku, but with more attention to architecture, monitoring, alerting, security, ci/cd, etc. Someone who will give you the tools, train your people, do integration alongside them, and provide support. And they could do this on a cloud account that the customer owns, with IAM guardrails to prevent them fucking up the platform.
There is no value added to your product by building a factory. You might reduce cost, eventually, if your business is huge enough. But there's a small number of such businesses out there, and yours likely isn't one of them. So let's start some platform companies and make those the default choice.
I think you have a valid point, but what you want to buy doesn’t exist because it’s too complex to be made.
Every company has a very different culture and set of tools/skill sets.
It can be done for simple web apps — that’s sort of what heroku did and I loved heroku.
For a whole company integration that is a bit more complex ? I don’t think so .. maybe one day we will have a tool like sales force and platform engineers will be customizing it instead
What about Kubernetes? One single tool stack that does everything, and now everyone uses it, from big to small companies. That is effectively a PaaS.
Another one is OpenStack. Did you know there are web hosting providers who will give you your own OpenStack install and charge you based on only what you use? It's a cloud provider, but again, it's one set of tools that everyone can use, regardless of size.
All I'm saying is, form a company that specializes in these technologies, add a shit ton of documentation and web UIs, and also actually write some code, tell the customer how to change their app to work better, etc.
There are already well known DevOps consulting companies that do the latter, but they are not advertising themselves as a full service platform. I think they should, and I think we should use their platform, rather than build our own per company. Like the tool ecosystems mentioned above, there is room for more standardization, while simultaneously room for people to tell your software devs how to use it right. There's no shame in changing your company's culture (or setting it from the start) to align with DevOps principles. Might as well be the culture and principles of people who know what they're doing :)
> Do I mean "hire consultants?" No. What we need doesn't seem to exist. We need companies who do white glove integration of a software product with a bespoke PaaS. Like Heroku, but with more attention to architecture, monitoring, alerting, security, ci/cd, etc. Someone who will give you the tools, train your people, do integration alongside them, and provide support. And they could do this on a cloud account that the customer owns, with IAM guardrails to prevent them fucking up the platform.
I think one of the reasons this doesn't exist is that you are describing every single component of the software development process here.
I have a personal theory that software developers have developed severe tunnel vision about code in the last 10-15 years. Before then, most developers had some knowledge about deployment practices, shell scripts, apache, that sort of thing. They roughly understood how something like a web server worked; writing a toy one was in many CS curricula.
Whereas now software developers' number 1 skill set seems to be "I know how to solve complicated algorithmic problems". Which is fine and dandy, but it takes so much time to master that it drives out all other deployment basics that many of us acquired while tinkering with software. I am talking bare minimum here, by the way -- I have worked with developers a year or two out of college who did not know what a shell script was because they had spent their entire degree inside either an IDE or Leetcode.
This, combined with the fact that complexity has increased exponentially in the operations tooling space means that you sort of need knowledge about operations knowledge in your software engineering team along with complicated algorithmic problems. You could do this by hiring some very expensive consultants like you describe. I think you could also do that by altering your hiring pipeline to de-emphasize algorithmic problem solving, and increase the importance of ops knowledge and testing.
> I have a personal theory that software developers have developed severe tunnel vision about code in the last 10-15 years. Before then, most developers had some knowledge about deployment practices, shell scripts, apache, that sort of thing. They roughly understood how something like a web server worked; writing a toy one was in many CS curricula.
You're describing a period (well, not far off - maybe a little earlier) when the norm was to chuck a .war file over the wall to a sysadmin team who'd plug it into tomcat, and who absolutely definitely wouldn't give you access to the server and you had to ask very nicely to even see logs when it broke. The tunnel vision has always been there, as long as the hiring environment has thought that specialism is a good thing.
What's needed is for people to do more time in tiny orgs where there's no room not to learn how everything works, and where there's no space for complicated solutions that don't fit in one person's head.
I think "ops" is ultimately like any other role: a specialism for which it makes sense to hire specialists (at least in larger organisations - people in smaller companies may have to wear many hats). And like any other specialist roles: close collaboration across specialisms is key.
Application developers ought to have a decent working knowledge of ops such that they can work productively with the ops specialists and vice-versa. Just as application developers ought to have a decent working knowledge of product and UX design in order to work productively with specialists in those areas.
Really what happened is that Devs revolted against carrying pagers for their own crappy services, and they reinvented ops teams again.
And Amazon has a vested interest in making The Cloud as complicated as possible so that you wind up getting suckered into vendor-lock-in and can never migrate away.
Combined with all the overly complicated crap surrounding concepts like CI/CD, K8s and the whole CNCF landscape with a couple thousand different vendors trying like hell to get their tentacles into your organization.
DevOps was supposed to be about accelerating the software development lifecycle. In my current role as a "DevOps Engineer", a significant portion of my time is spent being a roadblock. This is mostly due to misaligned incentives and incompetent management. It's debilitating for both the devs and myself.
If platform engineering can fix it, fine, but I'm not holding my breath.
> During a sprint, an engineer adds `convert` (ImageMagick) to the mix to support manipulating images and forgets to update the Dockerfile, and then production goes down.
Couldn't this be caught in CI relatively easy? Either CI is not running in Docker or the logic wasn't tested
> In production, we are running in containers, but developing in the container is too slow,
what? Why?
> so the team leans towards asdf and a README full of stuff to copy, paste, and pray.
It's really not that hard to run stuff in containers. Use a Makefile or similar so you don't need to type long Docker commands
> During a sprint, an engineer adds convert (ImageMagick) to the mix to support manipulating images and forgets to update the Dockerfile, and then production goes down.
And what... you can't run integration tests in a containerized environment in CI?
Perhaps I'm a bit cynic here but this whole mess, turmoil, and hype is so far playing in our advantage (as "engineers"). If any, the real ones that are losing are the companies themselves (because we could work much much efficiently but we don't because we cannot even agree on what DevOps means, or if we actually need DevOps or not). This regardless of the latest trend of layoffs we have seen (I'm considering the whole planet, not just SV).
Don't get me wrong, I'm all for efficiency and the like, but if I were a mere "programmer" or "sysadmin" or "webmaster" I don't think I would earn as much as I do now that I'm a "platform/software engineer". Words matter. If you're called an "engineer" (regardless of whether you have a degree in engineering or not), then business people will think something more of you than if you're just a "programmer". Same for "platform" and "devops". Same for "data scientist" and "statistician".
You think knowing K8s justifies the $150K/year paycheck in your startup that has only 20 "engineers" and merely 5 services on production? C'mon. But here we are, and I'm more than happy to get those $150K/year for applying K8s and Terraform when it's not actually needed at all.
Posts like this one only reminds us that we live in a time where people is making money out of hype (scrum masters anyone?)... but as long as I'm making money as well, I'm happy to join the conversation and play the "let's fix this!" pantomime.
It seems to me that DevOps is just Taylorism. Trying to squeeze more work out of engineers by shifting responsibilities previously handled by systems admins.
In my experience, back to sysadmin's don't code concept, we would keep it that way if self-service was a thing. Instead, we have standing IT Army's that gatekeep through extensive IT Helpdesk Tickets.
There's a bunch of things I agree or don't agree with in this but I'll put my unpopular opinion that I see as an issue even here... The point of devops is to build a consistent platform across all environments programmatically. If you have engrs using a tarball or setting it up some other way then you are doing it wrong and of course you have issues. Also all of your in house projects should use a similar technology stack that you are 100% experts on, half the time someone wants some node instead of php-fpm or something its because they just don't want to learn the other platform... or they are bored and want to add tech just to try new things, don't let them. Build consistent application stacks, deploy them consistently... way fewer issues, way better knowledge transfer, way more maintainable, way cheaper. Hire devs that even want to use the same IDE, same operating systems, again everyone has the same issues and they can be better resolved.
Edit: This allows the devs to focus on the business problems and solve them within the stack instead of spending time fighting the technology, it works great.
As soon as something becomes it's own team or department cooperation dies and a war ignites over attention and resources.
My experience has been that the places that treated development roles as cross-functional have been the most efficient, with the least amount of politics and dysfunction. It removes a whole cadre of people who are barely able to describe the features they request, while minimising the space for power plays.
Maybe I'm biased, but my experience in Netflix was so good that I never felt the need for a DevOps team. Netflix engineering team did three things right:
1. Any task is an API away and everything except getting a Cassandra keyspace is self-serving. And getting Cassandra access is a matter of a 2-minute conversation.
2. There is always a UI for casual tasks, such as setting up a service cluster or CI/CD pipeline. This is crucial as engineers do not have to learn any non-transferrable shit. The UI will guide them to complete their tasks.
3. Powerful support of observability. Clients, servers, OS, networking... All kinds of metrics are just a finger snap away. In addition, adding metrics is dead easy. If we need something that is below the service level, such as SNMP, we just dropped an email to the four-person observability team, and the metrics will show up in a matter of day before I even had time to finish my own coding. Heck, we had full support of OLAP query on millions of time series with full support of boolean search by any tag (even metric name is a tag) back in 2011, when most people thought Graphite was the best thing since toilet.
God! I miss so much the Netflix days when everything was a non-event. Deploying a predictive autoscaling service to any application in production? Non-event. Getting Druid to production readiness in less than a week? Non-event. Having user-controlled fault injection via APIs? Non-event. Setting up Mesos and Zookeeper and opening up Zookeeper for the entire company to use in production within a week? Non-event. Creating a company-wide crypto service and using it to swap AWS keys automatically for all the Netflix services in production and in test? Non-event. Generating an event with a new schema without talking to anyone and see the event show up in a brand new Hive table under 15 minutes. Non-event, and it was back in 2010. Setting up eBPF traces and access all the pretty and dynamically updated charts for any server via an API? Non-event.
The problem is that we miss simple and scalable platform for small-to-medium companies. Clouds might be that platform but many people don't want to lock in cloud API or just can't use clouds. Kubernetes is awesome but it's too low-level and needs to be accompanied by unholy mess of additional software and at that point it becomes too complex to be called "simple".
My opinion is that the platform must be:
Not built upon k8s. K8s is too complex by itself, too many moving parts, too many failure points. And everything built upon it makes it more complex. If you have team of devops, that's fine, they got work to be paid for. If you develop alone, that's a problem.
Leverage containers and docker. Docker is a thing that everyone knows, anyway.
It should be a ISO which runs in memory. Talos is a perfect example of this approach.
It should solve distributed storage automatically. You run this ISO on few computers, their local disks become a distributed storage.
It should provide overlay network for containers automatically.
It should have lots of low-level features built-in and without choice. I hate to choose between calico+istio vs cilium. It should not happen.
It should provide all the necessary metrics, centralized log storage, easily installable CI/CD pipeline, it should be resilient by default against crazy containers eating all memory or CPU or network or I/O.
I guess, it could be built upon kubernetes, but it must be a very well chosen set of components without a way to replace those components and it must be extremely resilient and well tested set of components without any nonsense. With some reasonable UI dashboard, so nobody would need to install those grafana monsters, for example. With built-in OIDC, so no need to spend months installing keycloak and hooking everything to it.
I saw some "platforms" built upon kubernetes, but those were duck-taped monstrosities which work as long as you pay their authors for 24/7 support and overvision.
What happened with DevOps reminds me of what happened with agile development. The original concept was thrown into the development world, and it became a giant game of telephone. By the time it came out the other end it looked nothing like the original.
This happens to literally everything we touch. New mind blowing paradigm? It is almost always completely misconstrued, misapplied, and thousands of teams roll it out before understanding it and publish endless reinforcing blog posts about how to keep doing it wrong.
If you don't want to do it wrong also, prepare to be persecuted and insulted.
I'm not sure I even understand the article or what point it is making, as it seems somewhat removed from my own experiences. The expletives also don't help to present a nuanced argument.
I'm not in a big corp, we are a rather small team, but we do all of our operations ourselves and it doesn't appear to particularly suck. Sure, the more the complexity of a system grows, the more you might have to split up responsibilities so that not everyone does everything... but not every business is giga-scale and needs kubernetes, at least not initially.
Then again, I also very rarely have deadlines and don't work at nights...
The entire article can be summed up the same way you can sum up bad security products: DevOps isn't something you buy or make a department out of, it's something you do, or better yet, it is a method.
DevOps is fine, bad DevOps is pointless. Just like microservices are fine, but bad microservices are pointless. Same way bad metrics towards business owners causes you to seem to add no value (which goes both ways).
That said, you can still find plenty of job postings for 'DevOps Engineer', which is part of the problem. But I suppose culture changes are hard...
Isn't platform engineer just another name though ?
devOps, cloudOps, devSecOps, site reliability engineer and now platform engineer.
It feels like the need to define operations is a bit like if a dev role needed to be defined by IDE or language
How about
visualGolangDev
or categorize devs after what kind of code is being written
microserviceDev vs backendDev vs middleWareDev
In all honesty, can we just go back to ops ? It was a fine name. Said it all and running k8s , a unix server or a ci/cd pipeline is essentially just operations.
> When was the last time you saw a product manager high-five the ops person and say, ‘fast fucking autoscaler!’?
It will happen when the optimization of the autoscaler will improve the revenue, by itself and in a quantifiable way.
Otherwise, a fast autoscaler is just a small step in the right direction, as elegant code, clean financial accounts and free strong coffee are: all of them support the business, but it's the sellable functionalities that create the business in the first place.
No methodology can make up for bad management. Co's are quick to fire regular employees, but are slow to fire bad managers (or move them to a bitter fit).
And KISS & YAGNI should apply to methodologies just as much as software systems. Don't turn simple things into rocket science just to fit some management fad.
Have "process meetings" with everyone, collect feedback and discuss areas to improve. Be an ear first, mouth second.
But who is going to manage the year-and-a-half long, Excel-checklist-driven process of getting application changes reviewed and approved, and the infrastructure provisioned for each environment? And who is going to keep track of the permissions when forcing everyone to use middleware to access the databases and jump servers to access the machines? My god, won't anyone think of the middle managers!?
Ben Rockwood (then at Joyent) had an interesting take that he presented as the keynote at LISA '11 ("The DevOps Transformation"), making comparisons to Shewhart, W. Edwards Deming, and Toyota (Production System):
Yup, being someone who has done both dev and ops, that is what I see too.
In my current current company, the operations group’s name changed from “techops” to “platform”, … but there is no “platform” or roadmap towards that, and it is reflected in how people still call the group “techops”.
DevOps does not mean that developers are also Ops, like the article seems to be suggesting.
That would be a bit like expecting your house builder to also architect your house. That's not going to happen, but they need to be able to communicate and understand each other.
No, it means that for most companies Ops roles are redundant.
That's why tools like Ansible or Terraform, and the whole Cloud Computing emerged: so that infrastructure can be abstracted away, and you, as a developer who wants to deploy their code to production are only required to create a couple of simple yaml files, trigger the deployment pipeline, and be done with it. Ops roles are outsourced to AWS or other provider.
I know, that's just a theory, real life is nowhere near that ideal state.
because it’s incredibly difficult to build, not to speak of maintaining it. I have seen things close to this, but can’t quite get to the finish line. I’m sure some people are doing it, I guess, but I have yet to see it. a lot of times a team will architect a good, automated solution that works for 3 years untouched and then fails catastrophically because it wasn’t maintained or assumptions start to fail.
this dream of self service devs is becoming a myth. devs do so much incredibly thoughtless stuff to infrastructure all the time. you need an infrastructure person in the process to make it resilient and allow them flexibility to do the stupid shit they want to do - with guardrails.
I had a completely different experience with DevOps at a large MANGA than the author. Where I was, DevOps meant that the team that wrote the code, maintained it in production.
The thinking and upside of this was that quality wasn’t an externality. If your code sucked, then you had a bad experience with ops, and you were motivated to fix it. Where that could fail is when managers didn’t have skin in the game- it’s important that managers have to feel some of the ops pain personally to prevent psychopaths from destroying a team just so they could look good schedule-wise.
Note also that “tech debt” either became an ops problem, which self-corrected as described above, or it became an agility problem, where it took forever to make changes to code. DevOps as I saw it didn’t have a good answer to the latter.
We had lots of different teams for different projects; having one team know everything about everything wasn’t a thing. Perhaps the problem is that DevOps is not well suited to smaller or less differentiated organizations.
Can someone explain in plain English what platform engineering is? TFA spends a lot of time criticising devops but takes for granted that everyone knows what platform engineering is.
The keyword is self-service. Instead of engineers filing tickets that say "please deploy my application", you have a dedicated team create an internal web app or something that lets engineers deploy their application themselves, but minimizes the risk (compliance, security, stability, etc.) associated with that deploy.
This approach scales because it doesn't create a queue in front of ops.
When recruiters come by and say "I looking for a DevOps engineer" that's a big red flag: DevOps is not a job, it is a philosophy to be applied to all related jobs within the software supply chain! As idiotic as if people come by to present themselves as "Agile Engineers" or "Scrum Engineers"...
However: I do not think the DevOps philosophy is bullshit, far from it. Not perfect, like Agile methologies, meant to be bended and adapted. But once a month I hear stories from legacy ITIL-based organisations, which are point-to-point mentioned pain-points from "The Phoenix Project"...
Not sure why you're being down voted here, but I agree. So many companies are building "DevOps" teams which is just another silo. Folks who understand DevOps should be embedded in the project team. They should be functional developers who also know how to automate workloads. They shouldn't be building and maintaining pipelines for 40 hours a week. They should be working on the product and one element of their role is automating the infrastructure, builds and deployment of their components.
The companies I've worked for which grokked DevOps didn't have dedicated DevOps teams. They had developers who understood automation embedded in the project team and the DevOps component was just one small piece they were working on. In companies which struggled, they setup separate dedicated DevOps teams and hired explicit "DevOps engineers" which you'd submit tickets to in order to get your pipelines built and changed. One of these enabled the teams to accelerate development and releases significantly, and the other just felt like you had a traditional ops team that was more of a barrier to getting work done.
I view building software delivery teams similar to (in my imagination) building a "special forces" team. You cannot afford for your team to be taking on a building of terrorists only to come up against a locked door so your team shrugs and says "guess we'll have to open a ticket with the door breaching team". You've got to have the "specialists" you need embedded in the team or your "mission" will grind to a halt waiting to borrow resources from teams with different priorities.
It's not bullshit but a lot of companies are definitely overthinking, over engineering, and overspending here. I've seen the transition from before the .com bubble to where we are now. Things changed and improved quite a lot. But the ambition level also went up. Puppet, ansible, teraform, cloudformation, ansible, salt, packer, etc. you name it and I've been there and done that at some point. But without ever having taken devops on as a full time responsibility. I'm a developer that can do ops when I need to.
If you know what you are doing you can actually minimize your cost and complexity a lot and get away with not having to actually do a lot. I am a startup CTO these days. That means I'm not bored. Devops is not a person, it's me in what little time I can budget for this among many other more interesting, lucrative or tedious things that I also need to take care off. I need my servers to run and not die on me. I need decent uptime and build automation. I need backups, alerts, and all the rest. I've seen it done well and I've seen it done poorly. I don't like it when it's done poorly and I know what that looks like.
If I had the budget, I'd probably get a person to delegate to and invest more in this. But I don't. So, I go for minimalism and reduced complexity.
So, good bullshit free devops is what I do. No mico-services in my company. We have a monolith. That's not likely to change any time soon. We can't afford the operational complexity and I frankly don't see the added value of having to have that complexity. I don't use kubernetes for the same reason. Using kubernetes to run 1 docker container is nonsense. We run nice simple docker containers. Most common cloud providers have easy ways to scale and run those. I used google cloud run for a while (cheap and easy), but our use of websockets and threads made using traditional vms and a loadbalancer a bit more flexible. That's what we've had for the last two years.
I don't need a teraform script to create that for me and I just clicked that together in a few minutes. My infrastructure is fine. I do use build automation. We have a few lines of gcloud commands in there that tells the instance group to apply a new template with our latest docker container. It runs when we merge to our production branch. We use Github actions for this. Our master branch goes to a similar staging environment on every pull request merge. That's simple devops.
We also have a few managed services, alerts, monitoring, logging (via elastic cloud), and few other bits and bobs. I'm not a caveman. But you get the idea, this is not something that we need to spend a lot of time on. Set it up right and you can do more fun things. Our uptime is fine. I can scale this endlessly.
I can also setup a new environment without too much hassle. If that actually becomes a regular thing, I'll automate it further. But that just isn't a thing right now and not worth a minute of anyone's attention in this company. Automating things you only do once every few years is a waste of resources.
Good on you ! That’s how I would probably approach it too in your place, and have had similar experiences as you probably had in both big and small companies