I came across an article called "How DevOps is Killing the Developer." It mourns the rise of DevOps and an ever increasing set of skills a developer has to have to work in the resource-constrained environment of a startup. The assumption is that a developer has to fill all these roles even though his position is at the top of the company’s hierarchy and no one else can do what they can.
The author claims that DevOps stems from startups. Resource constraints and the need to quickly respond to an everchanging market require developers to fill roles that no one else can fill. I’ve done my fair share of that, and it’s certainly a valid assumption.
However, DevOps has different goals than developers knowing all the infrastructure automation tools out there.
DevOps is about tearing down silos in more traditional companies, where there’s a much stricter separation between development and operations.
It’s a cultural shift that fosters people working together, towards a common goal, which ultimately leads to serving the customer.
The totem pole described in the article is the exact thing that DevOps is trying to improve. In a more traditional sense, it’s described as the ivory tower of parts in an organization, whether that be operations, development or your quality assurance team. The tendency is to throw things over the wall, let them handle it, and not bother with whatever happens after the release anymore.
The ultimate beneficiary of whatever anyone in the company does should be the customer. The argument that developers are too expensive for any other tasks than writing code suggests they’re too good to talk to customers, to fix their own code, to see where it breaks in production under their own responsibility, to see how it affects customers.
Putting developers in charge of not just building an app, but also running it in production, benefits everyone in the company, and it benefits the developer too.
It fosters thinking about the environment your code runs in and how you can make sure that when something breaks, the right dials and knobs, metrics and logs, are in place so that you yourself can investigate an issue late at night.
As Werner Vogels put it on how Amazon works: "You build it, you run it."
The responsibility to maintaining your own code in production should encourage any developer to make sure that it breaks as little as possible, and that when it breaks you know what to do and where to look.
That’s a good thing.