Live data from Hacker News

The Developer is Dead, Long Live the Developer

paperplanes.de

21–30 of 32 posts

Re: The Developer is Dead, Long Live the Developer

#21

I argue that the shared responsibility mentality is distracting and diminishes the power of an individual. It's hard enough being a good programmer let alone one that also knows how to configure networks, firewalls, and operating systems; one who knows how to manage security policies, LDAP organization charts and ACLs, etc. I still believe that the jack-of-all-trades is a useful individual but I don't believe an enti…

I don't think that's what the author is arguing for. More like, "You build it, you run it" (quote via article). Instead of handing your code off to someone else to be 100% responsible for testing, for release, for production support, the author argues that it is better to have developers share responsibility in those roles. It's very similar to what I'm doing now. We don't hand off code to be installed, we give a rel…

Perhaps it's that funny definition of "devops" blurring the lines.

I think it's perfectly reasonable for a developer to be aware of excessive memory fragmentation, leaking FD's, and anything else related to the process their program directs. It's well within my domain to debug such issues.

However the "devops" role is also pushing responsibility for configuring firewalls, LDAP ACLs, securing the OS, managing init daemons, and the entirety of the infrastructure on developers. Since it's all code now there can be more people involved and the silos can come down. "You build it, you run it," as you say.

What I'm suggesting is that for significantly sophisticated applications it won't be tenable to spread the responsibility on everyone. It's not reasonable to suggest that everyone be familiar with the implementation of a simulated-annealing algorithm in the continuous-domain constraint search solver. I think a support person would be well within reason to defer questions, bugs, and requests with that particular part to the developer responsible for it. And yet we're arguing that it's perfectly acceptable for that developer to be familiar with the intricacies of managing a data center of compute clusters? I don't know about you but I don't have an infinite amount of time on this Earth to take on such responsibilities.

I do think that there's a middle-ground to be exploited. If our expert system is ballooning in memory usage and crashing our servers it's reasonable for the developer to profile the memory usage under simulated loads and data sets and look for memory fragmentation or leaks, etc. I think it's a little too much to ask one person to also be intimately familiar with managing compute clusters, RAID failures, security policies, and package management. They, like many of us, may have a good, general idea of how it works but there exist specialists for a reason: it's hard to go beyond a certain degree of complexity without focusing. It's the reason why we work in teams!

Re: The Developer is Dead, Long Live the Developer

#22

I have never been in a shop where as a developer I was isolated from quality assurance or production. Fixing production issues was part of the job and insuring the fixes and original code got through QA was there too. However I have also seen this branded as "soft skills". Something that seems to be yet another way to excuse many people for their lack of skills and reward them for doing other stuff. I have seen it us…

There are companies out there where there is that isolation. Especially in the financial sector. I worked as a vendor to several big banks and credit card companies. Devs were expected to write code for functionality, that's about it. If there was an issue with the production environment and it wasn't related to a deployment, it was operations' problem. For example if my app has major memory issues every 3 hours or so it was operations' responsibility to restart that app when need be and ensure it stays up and running not the devs' responsibility to fix the memory issues. This isn't always the case and often what was mentioned above were temporary solutions intended to give devs more time but there was definitely that disconnect where operations is responsible maintaining the running state of the environment and the devs were primarily concerned with writing code that works and provides the functionality it is supposed to but not concerned with making the code run well.

Re: The Developer is Dead, Long Live the Developer

#23
Programming these days seems to be more of an exercise in managing unexpected complexity between various components or pieces of code. Here's a few tips:

1) Unit test. 95% of your test suite should be unit tests. Objects under test should not require the entire codebase to be loaded in order to perform... ideally they depend on nothing, or just 1 or 2 things (which in turn hopefully depend on nothing, or just 1 or 2 things, ad nauseum).

2) Don't mutate passed-in arguments. In fact, mutate as little as possible.

3) Don't use objects with potentially unexpected, surprising or unknown behavior that makes it difficult to reason around the code (QUICK- what happens when you merge a ruby HashWithIndifferentAccess with a regular hash containing both similarly-named symbol and string keys?)

4) Use function objects, that have zero side effects, wherever it makes sense. (Or just use an entirely functional language.)

5) Separate components that talk to each other through I/O should use something like the circuit-breaker pattern http://martinfowler.com/bliki/CircuitBreaker.html

6) Microbenchmark things. Individually, a series of tasks might all "look" fast, but when run 10000 times in a row, might expose unreasonable resource utilization.

Re: The Developer is Dead, Long Live the Developer

#24

I argue that the shared responsibility mentality is distracting and diminishes the power of an individual. It's hard enough being a good programmer let alone one that also knows how to configure networks, firewalls, and operating systems; one who knows how to manage security policies, LDAP organization charts and ACLs, etc. I still believe that the jack-of-all-trades is a useful individual but I don't believe an enti…

Another way to look at this is that this yet another bog-standard business magazine article telling you should be working harder, longer, and appearing more dedicated than your peers to better differentiate yourself in this "fast-changing" world of ours.

Re: The Developer is Dead, Long Live the Developer

#26

I argue that the shared responsibility mentality is distracting and diminishes the power of an individual. It's hard enough being a good programmer let alone one that also knows how to configure networks, firewalls, and operating systems; one who knows how to manage security policies, LDAP organization charts and ACLs, etc. I still believe that the jack-of-all-trades is a useful individual but I don't believe an enti…

Another way to look at this is that this yet another bog-standard business magazine article telling you should be working harder, longer, and appearing more dedicated than your peers to better differentiate yourself in this "fast-changing" world of ours.

I agree. Devops is just management speak for doing two jobs on one salary. Plus they find it hard to convince ops guys to wake up every night responding to alarms so calling everyone devops they can spread that pain among more people.

Re: The Developer is Dead, Long Live the Developer

#27

I have never been in a shop where as a developer I was isolated from quality assurance or production. Fixing production issues was part of the job and insuring the fixes and original code got through QA was there too. However I have also seen this branded as "soft skills". Something that seems to be yet another way to excuse many people for their lack of skills and reward them for doing other stuff. I have seen it us…

There are companies out there where there is that isolation. Especially in the financial sector. I worked as a vendor to several big banks and credit card companies. Devs were expected to write code for functionality, that's about it. If there was an issue with the production environment and it wasn't related to a deployment, it was operations' problem. For example if my app has major memory issues every 3 hours or s…

These are great examples and response to the parent. Just this morning I was on a call with a financial sector customer who made the statement "we don't want developers to have that information / access to that information" when referring to an operations dashboard. The silos created in corporate IT are huge, with corporate IT organizationally structured in a kind of polar opposite to the typical software venture.

Re: The Developer is Dead, Long Live the Developer

#28

The developers should know how to do ops. And vice versa. We are moving into weird heterogeneous bugs territory. A lot of stuff that has wasted my time last year was caused by interaction of technology stacks and not by pure logical errors. Or error localized in even one package. I had problem with premature socket close on the response with just the wrong setup for all of nginx, haproxy, slim and php 5.4 ... lets pu…

The ops people you work with are also developers? That sounds great but has never been the case at anywhere I've been.

Try working on small teams, very small teams. There is no way around it, you must wear multiple hats, and those hats grow/change over ones career.

Re: The Developer is Dead, Long Live the Developer

#29
It's always good to have a wide base of knowledge, and it's always good to avoid ivory-tower silos. But at the same time, it's economically inefficient to use a specialized developer to do tasks that could be done a lot cheaper by others. It's like using jet airplane to haul a tractor-trailer. Maybe you can do it, but eventually someone will exploit that inefficiency and out-compete you.
Post reply on HN