Ask HN: How do you define DevOps and is it dead?

69 points by zabana ↗ HN
I keep reading about AWS killing the DevOps profession and was wondering what were your thoughts on the matter ? Is DevOps dying as a profession ?

68 comments

[ 3.8 ms ] story [ 149 ms ] thread
Not dead at all and definitely not killed by AWS.

My experience after a few interviews is that DevOps in 2017 seems to be a keyword for "can implement Jenkins Pipelines and has experience with AWS".

Add "will sell free time for cheap" and you get yourself a SRE.

How would you describe the difference between an engineer with a specialization or specific expertise in "DevOps" and a "SRE"?
I hope it isn't dead, because I certainly don't want to do it. AWS doesn't manage itself.
I see dev-ops as a way a company has shaped its delivery process. This means a devops profession does not exist. In short it means that a developer has direct contact with an operator and tester or viceversa. Dev-ops focusses on short direct comunication which has nothing to do with technology or platform (like AWS Cloud, Azure or Google Cloud)

However technology can be used to enhance the devops delivery process. Tools like Puppet, Chef, Docker/Kubernetes can have a positive effect.

To give an answer to your question: no devops is not dead. It is a way to work.

This is what I was going to say: is a way to work. Taken to the extreme, it's where the developers themselves deploy.

The pipeline for this needs to exist though, so one might say that the profession of an operations engineer is changing from someone who gets the code and deploys into someone who sets up the pipeline and keeps it going.

> AWS killing the DevOps profession

Hell no. If you're in DevOps and use AWS, that means you need to know the AWS API.

I never really understood why AWS, Azure and similar would mean that DevOps (or operations alone) would go away. Sure if you pure lambdas and S3, then yes, maybe, but that's really not sufficient for most business.

Heroku style solutions could perhaps eliminate the need for operations, but that still seems pretty niche.

> Heroku style solutions could perhaps eliminate the need for operations, but that still seems pretty niche.

That's sort of the direction that AWS has been aiming lately with some of their newer releases.

For a variety of reasons, from security and privacy to cost analysis to performance I don't see pure ops or devops anywhere near vanishing though.

It's a good time to step back and define (or re-evaluate the definition of) "DevOps." It's an interesting word for an interesting movement, but (I think sadly) it has come to mean just "Ops."

"DevOps" is a teamwork style and process pattern, wherein the same people engineering the logic of a system also support each other in taking ownership over the execution of the logic and maintenance of the system.

DevOps means that, instead of sending an impatient email to the "DB admin" to apply your migrations, that you invite her to become familiar with the reason the migration was needed in the first place. In turn, she extends her toolchain to empower you to apply the migration yourself. Soon, you are part of the same team and the line dividing you, stopping you from supporting each other, is gone.

DevOps is good for people who like to always be learning; it can be difficult for people who like to ever more deeply specialize.

One thing that seems clear to me: the rise of packaged and automated ops solutions is not a threat to DevOps; on the contrary, it makes it even easier for a "Dev" team to collaborate on and take ownership of the "Ops" of an organization.

This is exactly why job listings for "devops engineers" as a separate role from "software engineer" is such a confusing thing.
Typically that implies there's a team JUST writing inter-department tooling platforms: someone who's dedicated to making sure "devops" doesn't block everyone.
I would agree to some degree... but I would think that the "devops" engineer is simply the one to spearhead unifying dev and ops - the devops architect per say.
Yeah, I've seen a lot of companies have postings for the two roles. Usually that means "we don't do devops at all, but we expect our ops staff to know how to code."

It's a fine job to take if you know that's what you're in for, and you're not planning on advocating for actual devops.

>>DevOps is good for people who like to always be learning; it can be difficult for people who like to ever more deeply specialize.

I agree with this, but I wonder if its because people right now are just still trying to figure out the tech. We're in the beginning of the adoption curve, so to speak and specialties will come eventually.

As an additional point, I see DevOps expanding to DevSecOps, DevTestOps, and when the marketing folks catch up I'm sure we'll soon see DevSecTestOps. These are all just fancy words for being a more complete Developer - and enabling Developers to deliver faster.

Anecdotally... From where I'm sitting right now (devops IT, huge non-tech company), it hasn't actually solved the problem of dumping crap over the wall, because ultimately people balk when going to prod with changes. (Compliance/SOX, fear of change, gui based existing deployments, bad APIs, etc....)

>These are all just fancy words for being a more complete Developer - and enabling Developers to deliver faster.

So would I get paid more for being good at all of these areas? Or is this a move to open up a bunch of positions for mediocre people? (no offense, I am mediocre at code)

Because DevOps fans seem to be advocating for more responsibility for similar/less pay (and you're outright fucking yourselves if you take on-call often without compensation).

If DevOps moves anything like software does, there will be industry leaders which cause a lot of followers (90%) to hamfist the 10%'s methods onto their weird deployment/lifecycle processes and it will be an ongoing mutant until some other new thing promises to bring the light.

With all due respect, you are responsible for how much you get paid. If it behooves you to stay current with trends, capitalize on them, identify bogus ones, then go for it. If you know of a better way, the ball is in your court.

I think a side-effect of devops is that more developers have to be good at more things, and less excellent at one. But, if I'm a hiring manager, there's places for both of those profiles in my team.

>With all due respect, you are responsible for how much you get paid.

That's fine, but if I'm maximizing my pay for the effort spent, I'm just going to screw companies as hard as I can by charging them a ton of money while doing very little for them as a contractor. As much as you'd think the market would remove people like this from the industry, it isn't happening.

I could join up as a fulltime employee for 6 months only to find out they don't actually want to change anything (despite lying to my face in the interview) and increase value because they're a shitty non-profit, which means I won't get rewarded for putting ideas forth. WHERE IS MY RECOURSE FOR WASTING 6 MONTHS OF MY LIFE?!

I've been percolating on this for a day or so now... because your responses on threads are generally abrasive, but i feel like most people actually feel this way and you just convey it abrasively. I think you should reframe anything from "wasting" to "learning from". You can have a lot to take away from even a bad situation, like:

a. Learning how to detect BS in interviews. Interviews are two-way streets.

b. Sit down and figure out what you really do want and how you ended up in this situation so it doesn't happen again.

c. 6 months over a career is nothing, and again, it wasn't wasted, its just the way you're looking at it.

d. Have you networked at all in these six months? If so, not wasted. If not, well that can only be on you not the company, right?

e. If you think non-profits are shitty, maybe a) they're not for you; b) you don't understand non-profits; and/or c) what were you doing there in the first place.

f. "screwing" a company is the same thing as looking out for your own needs (or in this case, the contractor's). There's good and bad contractors, of course.

Your observations may not necessarily be wrong, but to say it was a waste of time is short-sighted.

(edit: formatting)

> These are all just fancy words for being a more complete Developer - and enabling Developers to deliver faster.

Exactly. I'm a mobile developer and I cross into "DevOps" field a lot, but I see it as a part of my job as a developer to make our team's lives easier.

There will always be specialties because humans naturally gravitate towards subsets of any field of endeavor, and because computing has grown too vast for one person to master all of it. The real change over the past couple of decades is that we have developed enough of the technical tools and libraries to automate system admin and operations, that the foundations of the whole field have shifted. We need to start out as being DevOps Engineers and specialize on that base.
(comment deleted)
Another difficulty in DevOps is that you're never really off. If deployments can only happen in the wee hours of the morning or you have to answer that call about an issue with the system and you're spread over several time zones, you are always "on".
This is a warped idea of what is actually happening. It is not about making developers take on old-style system operations tasks. It is about eliminating those old-style tasks. Nowadays, this is really possible. We can build self-healing software and even something old like Nagios can alleviate most of the on-call type work of the past.
There is no 'self-healing' system. Nothing can detect a 'real' failure as opposed to a counterfeit failure without heuristics that depend on an interpretation that is inherently fallible.

Ops was about discipline and method. Restrict the problem set to known values. The one thing that I see these days is that developers don't have a fucking clue about ops but they do see that the basic task responsibility is toilsome, counter-creative and that 90% of it can be automated by reliance on coded procedures in write once argot that hopefully is editable and doesn't give up the family jewels when posted in pub github.

> "DevOps" is a teamwork style and process pattern...

Everytime I see a posting hiring a DevOps developer, I grind my teeth a little.

It's like a posting for an Agile Developer from a couple years ago. There isn't such a thing as an agile developer, just developers who use agile. I feel like its just turned into a way for a company to signal that they are modern and attrach developers.

It reminds me of https://www.commitstrip.com/wp-content/uploads/2016/11/Strip...

From what I understand, DevOps is when a single person or team is responsible for developing the software; standing up , configuring and maintaining the instances it runs on. So the person or team is responsible for not only the software, but everything it takes to run successfully in a production (dev/qa/etc) environment. It stands to break the wall/barrier between development, DBA, and NetOps.

It's actually empowered by cloud services which are easier to stand up / maintain than a local infrastructure. I hope it's not dead, it's super efficient. It does take a person / team who is willing to learn the nuances of network / database administration though.

It's nothing new, but it's new to employ at larger organizations which typically silo development, database admin and NetOps.

I like Donovan Brown's definition of DevOps:

http://donovanbrown.com/post/what-is-devops

"DevOps is the union of people, process, and products to enable continuous delivery of value to our end users."

"I am very deliberate in the terms used in this definition. I choose value over software. DevOps is not just automating a pipeline so we can quickly deliver software. Our goal is to deliver value. The term end users was also very carefully chosen. The value we produce must reach our end users. If the value only reaches the Dev and QA environments but is held up before reaching production where it can be realized by our end users, we are still failing."

"It is very important to realize that DevOps is not a product. You cannot buy DevOps and install it. DevOps is not just automation or infrastructure as code. DevOps is people following a process enabled by products to deliver value to our end users."

(comment deleted)
> "DevOps is the union of people, process, and products to enable continuous delivery of value to our end users."

That's not very specific, is it?

The issue that I have with that definition that it suffers from abstractionitis...

Just try replacing DevOps with just about any computing paradigm that entered the market in the last 5 years and hopefully you'll see what I mean. Care should be exercised to separate marketing out of product definitions. Focus on concrete, measurable improvements the product brings to the table rather than producing statements that are generally agreeable.

I'm also slightly peeved by use of the phrase "delivery of value" -so broad, so sterile, its almost as if its chosen as a result of a search for the least objectionable phrase. I think it smells of intellectual laziness to use terms that we don't care to define and conveniently enough punt to the almighty end user.

Not following on this. Something about value and unions and continuous delivery and process/products and other poop. Seems like someone wanted to whittle the overt jargon into incomprehensibility.
"It broke, fix it!!"

This is how DevOps is defined where I work (I'm on the recently formed team). 'It' is, of course, arbitrary (we're responsible for every old piece of cr*p that nobody else wants), and the 'fix' is always a band-aid slapped across it to keep it working until its undefined retirement date.

Most of our work week is like this >_>

I had a job where if something required electricity it was ITs problem. Computers, coffee makers, standing desk, lamps... it's all IT apparently.
It's called IoT... @InternetOfShit ;)
To me, it means the empowerment of a solo developer through (intelligent) use of modern methods, hardware and software tools to achieve that which required a team of about 10-20 in the past.

In other words, the distillation of the last 50 years of computer science to get a job done faster and better.

DevOps gets sidelined as a single skill, part of the whole.

An analogy would be iPod/Music app in the iPhone from the glory days of the iPods.

(comment deleted)
I have read in exactly one place that "devops is dying" -- admittedly I have not read everything or even researched the subject -- and that was in the HN article about AWS CodeStar. I thought to myself at that time that they couldn't be more wrong. Just because you lift the bar a little higher for what is automated in the tools you use now you just don't remove the need for further automation and especially integration between services.

Any worry that devops is going away, regardless which standpoint you have, I think is unfounded. I might have to change my opinion in the next 5 years or so but for now I am quite confident the devops way is firmly not dying.

There is no DevOps profession. There are people who work in computers, and they specialize in various ways.

People who are specialized in databases are called DBAs. Not every company needs a DBA, but many find it useful to have a few on staff, and some need many.

People who are specialized in networking are called network engineers. Not every company needs one; some need many.

People who are specialists in application development are often called software engineers. Most companies need one; some need many.

This list of specializations goes on and on, and changes over time.

"DevOps" means using the tools and methods of modern software engineering to conduct systems administration and configuration of systems and networks. In other words, it's how sysadmins now operate.

Does your company need one or more operations specialists? Maybe. Maybe not. You're still going to have at least a minimum amount of work to do in that area, and the modern methods for that are called DevOps.

Your business needs should drive your hiring. Is your business plan to eke out a margin between the costs of AWS and the revenue of Google Ads? Then you need someone skilled in DevOps to help you understand performance, latency, and how to scale up and down quickly to lose the least amount of money.

Is your business plan to sell people subscriptions to a service which is not bursty and is reasonably predictable? You will want DevOps skills to manage the fleet of machines that will be the most cost-efficient way to provide that.

> In other words, it's how sysadmins now operate.

There are a lot of sysadmins that don't operate this way. I see a lot of them at banks.

> "DevOps" means using the tools and methods of modern software engineering to conduct systems administration and configuration of systems and networks.

Does it have to be limited to systems administration and network configuration? If we define "DevOps" as an approach that develops software in response to operational tasks, then we allow other kinds of operations, like handling check-in and check-out of books from a library. In this way, anyone who has ever optimized themselves away is in DevOps.

I'm reminded of a very complicated program that compiled 32-bit powers of pi efficiently, which was replaced with a table of 19 integers by a clever junior developer, only to have it reverted by the senior developer in case the constant in question needed to be changed in the future.

Maybe "DevOps" is simply operators who can program, but then maybe everyone should be able to program.

> There are a lot of sysadmins that don't operate this way. I see a lot of them at banks.

Let's put it this way: the more educated and effective a sysadmin becomes, the more they appreciate programming their way out of their problems rather than doing things one-off.

> Does it have to be limited to systems administration and network configuration?

Indeed, my point is that the universe of jobs in computing is a continuous lumpy spectrum, not a set of rigid silos.

If management wants it to be a set of rigid silos, they are losing efficiency in exchange for what they perceive to be control.

> Let's put it this way: the more educated and effective a sysadmin becomes, the more they appreciate programming their way out of their problems rather than doing things one-off.

I'd agree with that.

I watched a (very) experienced sysadmin struggle to edit some JSON today. He had several notepads with JSON that he would copy and paste into various screens. I suspect when he gets a flat tire, he changes each one to see which one is flat.

> If management wants it to be a set of rigid silos, they are losing efficiency in exchange for what they perceive to be control.

I think (this kind of) management doesn't know better, but natural selection doesn't move swiftly enough.

Is there something we can do about that?

DevOps is the realization that the running of a software platform is a complex task, and so:

1. Operational matters such as platform upgrade, platform failure, platform testing, and so on should be incorporated in the general design process.

2. Engineers should be onboard in the day to day monitoring of the platform.

It shouldn't come as a big surprise because it is something that is well understood in other engineering disciplines, but somehow in IT, the development team can be fairly remote to actual operations. For instance, when you outsource the design / construction of an application, it doesn't usually come with running the actual thing, or even the necessary training for supporting the application.

Many developers think that they can integrate systems but it's often the case they have no idea. DevOPS in my opinion is a person that integrates and maintains various technical + non-technical systems / parts of the company.
When I was involved in a "DevOps" role it became difficult because the part of the product that I spent the most time in was a complicated fat client that used the servers. The other engineers gravitated towards improving the servers.

The reason why it became difficult was because on a random Saturday afternoon I'd get pulled into diagnosing a mysterious database warning. Even though I'm quite familiar with database development, when it's a system that I don't work with on a day-to-day basis; I just don't know what to do when the fire alarm goes off.

In contrast, the engineers who worked on the server never got pulled into client-side fires.

The problem quickly resolved itself when we fired our head of engineering.

AWS doesn't do everything for you and probably never will because people have different needs.

What is dying is the more manual side of ops. Ops guys that aren't comfortable writing a bit of code are in danger of falling behind.

And that is why there is such a proliferation of AWS services. They are designed for customers who share a certain set of needs. If you do not fit into the target set of a service then you should not use that service at all.

Deciding which services on AWS to use begins by understanding the needs of your business, and then looking for good fit within the set of AWS services. Also, AWS is no longer the only game in town. For some companies, Oracle Cloud better fits their ways of working. For others, Google has better services. Or Rackspace. AWS is no magic bullet, just a very useful toolkit that can help you a lot, IFF you understand it.

to me, devops is about unifying infrastructure "ops" and application developers. This isn't that difficult for tech startups since they are usually one in the same, but the idea becomes more pervasive at larger organizations that siloed these "two" responsibilities.

Based on what I'm seeing, the movement is far from dead. There are MANY large orgs that stand to gain a lot from adopting this mindset. The biggest issue is that change is difficult for many people.

By the way, there are companies that siloed their AWS ops teams. AWS alone isn't an answer.

From my perspective, a devops person (in the context of AWS) is someone who, in addition to coding, knows how to monitor and configure all the AWS services. E.g. they know how to provision right amount of DynamoDB capacity for the application, setup CloudWatch alarms and so on. Every individual developer might not know all that stuff, especially if the company is just starting to migrate to the cloud. Also, specific devops people might need to be named as responsible for responding to alarms.
As a "DevOps Engineer" at a growing AWS-focused consultancy, I can say that DevOps is not dead, and AWS is not killing it. AWS is our toolbox. We use it to design, build, and deploy powerful, cost effective, and scalable solutions to our clients' problems. I know that sounds like a line of marketing BS, but that's our real focus. Along the way, we'll automate everything that makes sense in the process, especially deployment and scaling. So, maybe our definition of DevOps wider or more holistic than how most of the industry defines it. Either way, AWS is not automatic, and automating/orchestrating ALL of its parts still requires some human smarts.
"DevOps" is a hype-word now, so yes in some places it is dead. The need to get flexibility and share skills remains.
For me, DevOps is mostly about communication and efficiency. It's for me very similar to Agility and Lean movements as they try to reduce the time between the birth an idea and the moment it is available for the customers.

DevOps is mostly about optimizing the interaction between Developers teams and Operations teams but the general principles can be applied across the company.

I think we focus too much on the "How" or "What", while we should ask ourselves "Why", Why do we do DevOps and why do we need DevOps, it's a reflexion I tried to share in these slides: https://speakerdeck.com/lothiraldan/the-importance-of-why-in...

DevOps is just the mixing of system administration and software development.

My company has a single team that handles all the technical matters, from cert and domain registration to database and system administration to CSS tweaks on the website. We're a devops team. It isn't necessarily the case that each and every member of the team is conversant with all the technologies involved, but each member is ready to co-pilot and pick up those tasks if necessary.

A devops engineer, similarly, is one that is conversant with many of these technologies themselves, and is competent to be at least a stand-in sysadmin, dba, developer, or whatever.

I don't think devops is dying; a company with <10 technical employees probably needs almost every one to be devops; there just aren't enough people to silo some of them away. As a technical organization grows, more and more of the hires can be narrowly specialized, and should be, because devops hires are often going to be more expensive and less effective at any one narrow specialization.

AWS is just one of the tools in the toolkit of a devops engineer.

[edit for grammar]

How would you describe the difference between an engineer with a specialization or specific expertise in "DevOps" and a "SRE"?
DevOps to me was always just "software development for operations". Sysadmins always did some form of it, but in some cases you want someone just focused on a larger software solution and not really chasing down the latest request.

Not sure how AWS is necessarily killing anything, since the wheels of automation roll forward. Instead of "deploy this app" and "migrate this schema" we have "setup my continuous delivery environment".