Slashdot Mirror


How 'DevOps' Is Killing the Developer

An anonymous reader writes "Python guru Jeff Knupp writes about his frustration with the so-called 'DevOps' movement, an effort to blend development jobs with operations positions. It's an artifact of startup culture, and while it might make sense when you only have a few employees and a focus on simply getting it running rather than getting it running right, Knupp feels it has no place in bigger, more established companies. He says, 'Somewhere along the way, however, we tricked ourselves into thinking that because, at any one time, a start-up developer had to take on different roles he or she should actually be all those things at once. If such people even existed, "full-stack" developers still wouldn't be used as they should. Rather than temporarily taking on a single role for a short period of time, then transitioning into the next role, they are meant to be performing all the roles, all the time. And here's what really sucks: most good developers can almost pull this off.' Knupp adds, 'The effect of all of this is to destroy the role of "developer" and replace it with a sort of "technology utility-player". Every developer I know got into programming because they actually enjoyed doing it (at one point). You do a disservice to everyone involved when you force your brightest people to take on additional roles.'"

50 of 226 comments (clear)

  1. whine by phantomfive · · Score: 4, Insightful

    Python guru Jeff Knupp should go find a job where he can program, and not worry about ops. Simple solution.

    --
    "First they came for the slanderers and i said nothing."
    1. Re:whine by Anonymous Coward · · Score: 5, Insightful

      100% inclined to agree. DevOps is not really about your best and brightest pure programmers, but taking all of your jack-of-all-trades guys who specialize in "making shit work" and allowing them to keep things working.

    2. Re:whine by Ice+Station+Zebra · · Score: 5, Insightful

      You forget about the ops part of devops. A lot of ops people need to be made to care about what is running on the boxes they are supporting. By knowing more about what is going on it can help then priortize the work which they are most experienced at, along with helping the "brightest pure programmers" understand why the cool solution they developed is a POS in production.

    3. Re:whine by mlts · · Score: 4, Insightful

      I have seen some companies have their developers given autonomy, with their own DevOps, mainly because it allows for what is needed to get granted. New subnet for lab testing? It is a lot easier to get a DevOp guy to configure the VLAN for it than to submit a ticket to a different organization that isn't connected at all, nor knows what needs done.

      Of all the organizations in a company, dev needs the loosest reins (while still keeping separation so that the loosened policies don't allow for a security breach to compromise other departments.) The other department that needs autonomy is QA, because $DEITY knows what needs to be tested against.

      So, having an autonomous DevOps means that the dedicated programmers have people that know what they want/need, and have the ability to get that.

      In my experience, this does seem to work and work well in SMBs that are not just hiring H-1Bs or offshoring their entire dev department in toto. Larger companies, depending on corporate culture, not so much. Dev and QA should be autonomous. They have to be because that is where things get invented and bugs get squashed.

    4. Re:whine by Penguinisto · · Score: 4, Insightful

      100% inclined to agree. DevOps is not really about your best and brightest pure programmers, but taking all of your jack-of-all-trades guys who specialize in "making shit work" and allowing them to keep things working.

      This, right here. I inherited the DevOps job title, even though it is exactly what I've been doing for years now. I can go in, find a problem, test a simple fix, turn QA loose on that fix, and even with change management, I can have it implemented far faster than the devs, who might fit it into their next sprint if you're lucky. They naturally get informed and fit a more elegant solution in for the next release (and sometimes they leave my fix checked-in just as it is).

      Meanwhile, while yeah in a start-up company the developer(s) had to play sysadmin too, all-too-often they don't really know much beyond the basics, and so you really don't want one, say, tweaking HugePages in sysctl.conf, or planning SAN or VM Farm expansion for the next web project, or lots of other things. Similarly, I refuse to dig any deeper in code beyond the simply Python tweak or the obvious fix/workaround, since I only know enough to be dangerous when it comes to all of the dependency chains, not to mention all of the subtle gotchas in all of the codebases I work with (why? Because while a given developer may only need to dork around with (or even just only a part of) one codebase, I have to wrangle multiple projects - time demands that I prioritize what I know about them all).

      It bears a lot of responsibility - you have to know what the frig you're doing, because downtime==money, and stakeholders will have none of it. On the flip-side, you're given a lot of leeway when it comes to what you're allowed to do in order to keep the uptime flowing. For instance, I get priority, where I can call up a network admin, security admin, or whoever I need to put through a change as soon as safely possible. I can order-up (within reason) whatever CapEx I need to build up for the next release, project, or what-have-you. Of course, you have to justify what you do, and if you do something stupid it's your nuts on the chopping block, but overall it balances out.

      IMHO (and little else), I've seen a lot of sysadmins able to step up to the DevOps plate, but very few developers that would be willing, let alone capable (most that I know prefer to write code, and not get their hands dirty with the business of playing server-monkey or wire-monkey.)

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    5. Re:whine by mwvdlee · · Score: 4, Interesting

      DevOps is all about creating dangerous conflicts of interrest.
      DevOps may be acceptable in a startup where there simply aren't enough people to separate the roles.
      As soon as there are enough people, the roles should be separated.

      A devops guy is basically judge, jury and executioner of his own work; it's destined to fail.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    6. Re:whine by huge · · Score: 3, Insightful

      My experience on this is that you need 'DevOps' to run the development environments but you need production ops to run, eh, production.

      DevOps people don't necessarily have good understanding of the underlying issues of the production environment. There are several issues revolving around this: Security, availability, scalability, etc. As an example is dev who can secure the application but not the platform (database, web servers and so on).

      Good handovers between the two are the key for success. If 'DevOps' changes the development environment in a significant way this needs to be taken into account when moving the version to production. Oh, you upgraded the database in development environment? I guess that explains why RTP failed and we had to roll back.

      Some changes may be very simple to do in development environment, while difficult in production environment. Need some extra disk and upgrade your database backend? Sure, just get it done in the development environment but there may some issues when doing that in production environment; you may need unacceptable amount of downtime, etc...

      --
      -- Reality checks don't bounce.
    7. Re:whine by gbjbaanb · · Score: 2

      Yeah, I remember the good old days, when there weren't many demands on developers, and release schedules were easy, and if you said to your boss, "can I have more time?" He said, "Sure, no problem my good friend, have a raise too!"

      hey, I still work as a government contractor, you insensitive clod!

    8. Re:whine by turbidostato · · Score: 2

      "DevOps people don't necessarily have good understanding of the underlying issues of the production environment."

      You should train them better, then.

      Because the point of "devops" is exactly so they understand the underlying issues of the production environment.

    9. Re:whine by bickerdyke · · Score: 5, Interesting

      DevOps is all about creating dangerous conflicts of interrest.

      No.

      And I'd even go so far to say that we need MORE conflicts of interests.

      A software company is full of conflicts if interrests. You have the sharholders who want money, sales who care about release dates, customers who request a feature, devs who know that that feature will have unpleaseant side-effects that the same users would not accept and so on.

      "Resolve" those "conflicts" by completly seperating them into different roles, and you have a company where departments will fight each other to the bone and management will be busy with conflict resolution instead of actual work.

      You need to have people inbetween those branches who know how to make them work together.

      --
      bickerdyke
    10. Re:whine by Vanders · · Score: 2

      Developers don't know how to run a production environment.

      Yes. That's the problem that DevOps attempts to solve. You're supposed to have both "Developers who do Ops" and "Ops guys who develop" in one team to do "DevOps".

      If you're working in a place that's done "We'll just get the developers to do Operations" then they're doing it wrong.

    11. Re:whine by Anonymous Coward · · Score: 5, Insightful

      No, the point of "devops" is getting your employees to do two jobs.

    12. Re:whine by Raenex · · Score: 3, Insightful

      helping the "brightest pure programmers" understand why the cool solution they developed is a POS in production

      Absolutely. I was in a startup as a dev, and by necessity we were the operations guys early on. It was a financial service that needed to be running 24/7, and having to deal with "oh shit" moments while under the gun instilled the importance of writing software that was built for reliability, graceful failures, recovery, and error reporting.

      None of this "brogrammer" shit or programmer "cowboys" or any of that other nonsense.

    13. Re:whine by tylikcat · · Score: 2

      One of my old jobs was managing this transition, with a lot of performance analysis, reliability, scability and disaster failover / recovery work as part of it. At least in that environment, the majority of devlopers I worked with were highly unreliable wrt these issues. (And I successfully pushed for getting involved with the projects earlier - and to have access to the test resources associated with the development teams so that my folks weren't totally overwhelmed or bogged down with scut work - so that more of these concerns were being addressed earlier in the dev cycle.) Yeah, sure, they could get their code to run beautifully in under simulated load on their own machines, but they had little understanding of how their hothouse flower systems on a box differed from a production environment and how to do failure analysis, etc. etc. And yes, some of this is a matter of education, hence getting involved earlier and maintaining a liaison to work with the dev teams - but some of it is just a different mindset.

      It was always pretty hard to find people who had the right combination of skills to be part of my group.

    14. Re:whine by butalearner · · Score: 2

      You're supposed to have both "Developers who do Ops" and "Ops guys who develop" in one team to do "DevOps".

      If you're working in a place that's done "We'll just get the developers to do Operations" then they're doing it wrong.

      I just started a new position where they had just figured this out and split the team into two. A couple of our developers trend toward the surly, and they would get a bit short with our customers (who are internal customers, but customers nonetheless) when interrupted. Which totally makes sense, by the way, because it kills productivity, but it was causing issues on all sides. Now we have this separation and process where our customers no longer contact us directly but fill out a quick report that automatically contacts the newly-formed ops team. We don't have to bother the developers except in extreme cases, and the folks who specialize in troubleshooting handle almost every issue. And even though I joined the ops team, but I still squash bugs and add minor features so the dev team can focus on the big stuff. This literally just happened in the past few months, but the improvement in our metrics for the most recent release was pretty impressive.

    15. Re:whine by RabidReindeer · · Score: 4, Insightful

      21st Century Business Logic:

      1. Multi-task. Never devote your entire attention to one task when you could be juggling 7.

      2. Run Lean. Why hire a dedicated expert developer, a dedicated sysadmin, a dedicated DBA and a dedicated network engineer? Make one person do all those things (see #1, above).

      3. Run 100% and demand 110. Who needs expansion room for when things inevitably go pear-shaped? Which Murphy guarantees even when you don't tempt him with #1 and #2.

      4. Run cheap. Demand maximum expertise from the lowest bidder. There's always someone in a third-world country who'd be GLAD to do items #1, #2 and #3 for pennies a day!

      5. Use easily measured things to determine employee effectiveness. Lines of Code, Time on Phone, stuff that's easily objectively measured, unlike less tangible things like customer satisfaction (what, you think we bother to ANSWER those silly surveys?), externals (like poisoning 6 downwind countries) or time to do the job right the first time. Use these as weapons to demand more of #1, #2, #3 and #4.

      6. Subscribe to overpriced buzzword-laden management fads to assist in accomplishing all of the above.

    16. Re:whine by Fastolfe · · Score: 2

      I think the idea is to *find* good people that already have interests and skills that encompass the union of the two, and supplement the "good developers doing development" and "good operation guys doing operation stuff".

      To be honest, I think a developer that has no interest in infrastructure is a developer that can't design a scalable, supportable service (you need to know how the infrastructure works in order to effectively use it). An ops person that has no interest in programming is an ops person that can't scalably support a service (who's going to build the automation and monitoring?). In my eyes a good balance is to have your "good developers doing development" supplemented with some "developers that know operations" to make sure they're designing things well. On the operations side, supplement "developers that know operations" with "operations people that know how to code" so they can work together to scale up automation, not staff, as a service grows. This is essentially how SRE works at many large tech companies.

  2. This role exists in any non-software business. by fractoid · · Score: 5, Insightful

    This sysadmin/scripter/system architect/DBA role exists in virtually every company that has a core business other than IT or software development. Even in a very large multinational, there's more utility in having one "Mr Wizard" in each business unit than there is in having a room full of software developers somewhere far away from the rest of the business.

    It really is a support role and it's more an outgrowth of system administration than it is saddling your brightest software guy with managing the mail server. Of course, it's possible to get stuck in that role because there's nowhere to go from there, but it's a niche that suits some people. If it doesn't suit you, then move.

    It's also a distinct role from the "do everything guy" at a startup, because at a startup everyone is multitasking and as the startup expands, new people are hired to take on some of these roles. DevOps is a role in itself.

    --
    Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    1. Re:This role exists in any non-software business. by Sarten-X · · Score: 2

      From TFS:

      ...it has no place in bigger, more established companies.

      I've worked at a Fortune 100 company, who was looking to add a DevOps team, because our development and our deployment teams weren't working together as smoothly as we'd have liked. The development teams didn't know anything about the hardware their (very hardware-specific) software ran on, and the hardware teams didn't know what parts of the software needed testing on new hardware.

      Of course, it's ridiculous to ask the hardware guys to be present at all of the software meetings, and vice versa. DevOps fills a role bridging the gap. Outside of IT and platform-agnostic software development, the "ops" part can be a customer-facing role. In the shelter of software development, any incompatibilities can be blamed on hardware, rather than the real underlying cause of "poor testing across platforms"

      --
      You do not have a moral or legal right to do absolutely anything you want.
    2. Re:This role exists in any non-software business. by Antique+Geekmeister · · Score: 2

      > This sysadmin/scripter/system architect/DBA

      And then they stop doing _any_ of the tasks well. They don't show up for planning. they don't document their code, because "it's self documenting" or "documentation is unrelable". They say "Just Google It" when most of what is on Google about the task is _wrong_ and written by people who aren't aware of the subtleties. They refuse to mentor, because it keeps them away from the meetings where they can soak up and interfere in _every single groups's projects_ by citing standards that are only in their head, or worse, are only in the mental image of what other people remember they said once about something else.

      One of the great pleasures of my professional life is finding these people and educating them in how _not_ to be a micro-managing block to everyone's work: it involves actually documenting the _working procedures_ for daily tasks so other people can do them. Many of them are afraid of the loss of control or possible errors, but the improvement in speed of daily procedures is enormously satisfying.

    3. Re:This role exists in any non-software business. by Penguinisto · · Score: 3, Interesting

      What sibling said... I've seen companies that refuse to have a DevOps position, but yet hire "System Engineers" that basically do the same damned thing.

      The biggest danger I've seen is in trying to silo such a position. I actually prefer having the freedom to whip up port channels on my own switchgear and having my own vlans/IPs to play with. I need free reign over an independent and complete environment for QA and dev use (so I don't have to put in a change request and then wait a week just to, say, add one IP addy to a NetApp SAN's NFS export ACL on some dark and early Sunday morning.)

      I've done this job in a siloed company environment before, and quite frankly it sucks. You sometimes spend literal weeks waiting for one stupid VM that you could have cloned off yourself in less than 10 minutes, and configured in less than five more. I remember waiting almost a month while two different IT departments argued over how they would route a simple outbound rule over multiple firewalls whose path crossed the realms of their two departments... meanwhile having the devs wait alongside with me until the parties in question got done measuring their penises and found a solution (it took a pissed-off client, and a subsequently scared VP to threaten some jobs, which finally got them to STFU and work something out).

      Devs and QA alike need someone who can quickly cut through the bullshit and red-tape, understand what it is they do (and more importantly, what they need and why they need it), and as someone aptly stated, "make shit work."

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
  3. Nothing new here by nitehawk214 · · Score: 4, Insightful

    Seen this many many times before. Cheap companies that have lots of developers and are too cheap to hire experienced admins... or an IT shop that thinks they can have the IT guys program instead of hiring proper developers. "hey, you work with computers, you guys can all do the same stuff, right?" Wrong.

    While I have known developers that can sysadmin, and admins that can program... they are the exception not the rule. Quality suffers when you force people into jobs they are not qualified for. Companies know this, and they simply don't care as long as the managers think they are saving money.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
    1. Re:Nothing new here by DaveAtFraud · · Score: 2

      Seen this many many times before. Cheap companies that have lots of developers and are too cheap to hire experienced admins... or an IT shop that thinks they can have the IT guys program instead of hiring proper developers. "hey, you work with computers, you guys can all do the same stuff, right?" Wrong.

      While I have known developers that can sysadmin, and admins that can program... they are the exception not the rule. Quality suffers when you force people into jobs they are not qualified for. Companies know this, and they simply don't care as long as the managers think they are saving money.

      If you think the sysadmin who can program or the programmer who can admin a system is bad, you should have seen what happened when they gave Visual Basic to a subject matter expert (SME) and said, "You can program!" Agggghhhhhh!!!!!!!!

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    2. Re:Nothing new here by Penguinisto · · Score: 2

      Quality suffers when you force people into jobs they are not qualified for. Companies know this, and they simply don't care as long as the managers think they are saving money.

      I think the problem is in mis-defining the role. A DevOps can write code at a junior level, but you don't want one doing anything more than simple modifications and/or workarounds. He can also do most of the infrastructure bits of IT at an experienced level, but you should always have him in close communication with the senior security admin, the senior network admin, the senior storage admin... this is so that he doesn't wind up going all cowboy on the infrastructure just to recover from an outage, or worse, do it just to meet an artificial marketing-induced deadline.

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    3. Re:Nothing new here by JaredOfEuropa · · Score: 2

      I see plenty of this, but it rarely has me worried. You have to take these Excel / Access "applications" for what they are: they typically exist as job aids for single persons or small teams. Is it pretty or sustainable? No: if the author of the application leaves and something needs to be changed or fixed, no support org will touch it with a 10 foot pole. This is where the difference between risk avoidance and risk management comes in. Risk avoidance means shaking your head in horror, and removing Access and VBA from workstations. Risk management means educating people about when it is appropriate to use such a tool, and when it isn't (like time or mission critical situations). Oh, and if the software does break and the original programmer has left, just hire a contractor to fix things. In my experience, they rarely need more than a few days for a fix or a simple change. Sometimes I just do it myself.

      Why do we allow this? Because it is extremely cost effective, and it rarely causes trouble.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
  4. Author is dumb by w_dragon · · Score: 3, Informative

    Full-stack developer generally refers to a developer who can code the full software stack - UI, middleware, and backend. Also lots of QA people can code - automated testing is mostly coding - and lots of developers can't test at all. Author needs a bit more real-world experience.

    1. Re:Author is dumb by fractoid · · Score: 4, Insightful

      I'm a senior developer at a 21 year old startup that does C# thick clients over Microsoft SQL back ends.

      At a what? Are you at a 21-year-old company or are you at a startup?

      Or are you at a 21-year-old company that pretends to be a startup when they say things like "hey guys we're a startup so can you work this weekend?"

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    2. Re:Author is dumb by Anonymous Coward · · Score: 2, Interesting

      I think anyone who's developed and tuned systems at reasonable scale tends to have skills not just across the software stack, but across the infrastructure as well:

      That means familiarity with the features and limitations of many different storage solutions (SAN, NAS, distributed fabrics of local disk nodes all with spinning and solid state, not to mention the Amazon flavors) , networks, bare-metal boxes, hypervisors, OS's, clustering solutions, a multitude of languages, databases (relational, document, NoSQL, etc.), statistical modeling techniques, COTS and OSS products, CM and dev environments, as well as specialized hybrids of all of the above. You may not need to be a SAN administrator, but you need to be able to know IOPS and see if you are constrained by disk or network . You need to know how to monitor memory and CPU across all layers of the infrastructure, read heap dumps, stack traces, etc to see what's what. And then know a multitude of languages, design patterns and anti-patterns, methodologies to go from idea to solution in a disciplined cost-effective way. You need to be able to communicate all of the above internally, externally to both vendors and customers, and then make it understandable to the chief technologist, senior developer, recent-grad programmer, CEO, sales guy, and the middle managers in-between all of the above, not to mention your stay-at-home-with-your-kids spouse who wonders what you do all day. I've got plenty of real-world experience and think the whole concept of developers being put out to pasture at 40 is complete and utter bull if you are smart and reasonably hard-working. Us 10x full stack developers who do it all get paid pretty well and haven't ever had trouble finding interesting work where people need the best to solve the hardest problems.

      Son, get off my lawn.

  5. Oh please... by acroyear · · Score: 3, Insightful

    You don't force your brightest people to take on additional roles - that is the whole point of a devops team in the first place. Making developers argue about deployments and sending builds to QA and managing your GIT server and development and QA databases and managing your bug tracker is exactly what your developers should *not* be doing, especially if those scripts necessarily have to be in a different language than your application. Sure, your lead developers and architects work with the devops team to support them so they can in turn support you, but that's as far as the relationship goes.

    The way we used to do it, where every senior architect is also responsible for all of those other functions (and has to take the time from his team members below him to help build all that out), is exactly how you stop architecting your software: your leads spend so much time trying to automate the drudgery they aren't improving the app.

    They aren't improving the app because all of their brainpower is no longer focused on the *customers'* problems, but rather their own and their teams. That isn't a good use of their time. Hiring smart people who need to understand the application and its environment, but are good at scripting these other languages of automation, frees up your team leads to doing what they did before and do best: focus on the application and getting the team to produce the code that serves the customers' needs.

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
    1. Re:Oh please... by kwbauer · · Score: 2

      The problem that others are having with DevOps is that they seem to be defining it differently than you are. What you wrote makes sense but the scenarios people are complaining about don't sound at all like your definition.

    2. Re:Oh please... by dnavid · · Score: 4, Insightful

      The problem that others are having with DevOps is that they seem to be defining it differently than you are. What you wrote makes sense but the scenarios people are complaining about don't sound at all like your definition.

      That's part of the problem, yes. DevOps started off with reasonably laudable goals: to promote a methodology whereby development teams and operational teams were tightly integrated in a way that made operational and deployment issues part of the development process: development would be driven by the need to deploy useful functionality, not just create it. That way, you didn't have a discontinuity where things were programmed, then someone would have to figure out how to actually deliver that bunch of code.

      The problem which the author of the article references is that this often gets perverted from the original laudable idea of teams of developers and operations people working together, to requiring every single DevOps person being equally qualified to do everything, and then from there pushed even further to many companies creating DevOps positions where those DevOps people are literally doing everything, and not just knowledgeable at those things.

      There is no question that a programmer that understands SQL or database architecture or storage systems or high performance networking or internetworking or virtual hypervisors is a more valuable programmer. They can use that knowledge to guide their development, write better code, and communicate better with the actual DBAs and network engineers and sysops and hypervisor admins. But when management types start to think that the best way to do things is to hire DevOps qualified people to just randomly do everything without any focus or specialization, that's when the myth of DevOps overtakes the reality of DevOps and begins to create real problems.

      I don't honestly know to what degree that is pervasive in the industry: I haven't seen too many examples of it myself outside of certain high profile ones (the author mentions Facebook). If it is trending upward, I think its a bad trend. But to the extent that I see companies use DevOps correctly, as the glue-people to interconnect individual development, operational/deployment, and quality assurance teams, I think its a positive. But I agree with the article author that actually *replacing* developers, QA people, and operational people with DevOps people universally would be a Bad Thing. I just don't know if its actually really happening

  6. Just because you can doesn't mean you should by putaro · · Score: 5, Insightful

    There's definitely truth to what he's saying but it cuts the other direction as well. Having your lead guru developer swapping disk drives on a machine isn't the best use of his time. However, I've also seen environments where the developers can't/won't/aren't allow to do the system admin tasks and wind up waiting around or being frustrated when their development systems have a problem. Likewise, with QA - I've seen developers that will just toss any old crap over the wall and expect QA to catch all of their bugs. And, developing tests is often software engineering, often complex software engineering that needs an experienced developer to establish at least the outline of how everything works.

    Personally, I expect any developers I'm working with to have at least basic sys admin abilities and know how to setup/fix any other part of the stack they might touch. Those skills should be used when working with the dev systems and in establishing the base line for production. I would then expect that someone who is more specialized in those other roles to actually setup and run production and also be available when the developers get in over their heads on system admin, hardware troubleshooting, etc. In the same way I would expect a systems admin to at least be able to write a script to automate something and not go running to the developers for everything.

    For test development, I always like to set groups against each other and develop the test suite for each other's code. Most people are a lot more comfortable and eager to break someone else's code than they are their own.

  7. What DevOps movement? by PJ6 · · Score: 5, Interesting

    I had a job where I did everything once, wrote a full-blown ERP system for hundreds of users, all by myself. Everything. Though I was salaried, sometimes I worked whole weekends, or to 2 in the morning - not because I had to, but because I wanted to. No politics, no being just a cog in a machine, no project management, no BS. Just me and code, giving people what they needed and making their jobs easier. It was my dream job, my first and best job, and I've never had anything like it since.

    This DevOps movement the author speaks of... I've never seen it, not in all the years I've looked to find it again. He may complain that it's bad, bad for the industry, but I would take it in a heartbeat.

    Is that what I was, a DevOp? I miss it so much I can taste it.

  8. Understanding each other's work is key by ghn · · Score: 4, Interesting

    I am primarily a developer but I also like to understand the big picture, including software design and UX but also system administration, infrastructure, hardware architectures, and everything else that *directly affects the software I develop*.

    Deep understanding of the big picture is key to developing quality software, IMO. You need to understand what comes ahead of you (requirements, business needs, etc) and where your work is headed afterwards... The best way to understand it is to wear these hats from time to time or have previous work experience in those fields. When recommending candidate for developer positions, someone who has system administration experience is a bonus.

    Yes, many days I need to take on multiple hats and switch gears as shit comes up in prod and I need to fix a config on production servers or assist whoever has the hands but lack the knowledge. That's the start-up culture I guess, even though I work for an established 100+ year old company.

    1. Re:Understanding each other's work is key by ghn · · Score: 2

      And regarding the "Totem Pole" argument in TFA: That is utter BS. I've seen many so-called "developers" unable to perform basic DBA or QA jobs. That is why most large company employ specialist in these positions, to cover the fuck-ups of the developers.

      I've seen developers who's first reaction when a complex SQL query is taking ages to run is "I will call my old pal in XYZ dept who is a DBA" before even running an "explain" query to debug their index-less octo-way join with 12 sub-queries.

  9. Someone doesn't understand devops. by JustShootMe · · Score: 5, Interesting

    The point of devops is not to take jobs away from developers. The point of devops is to provide an interface between system administration and development. Development and system administration have always been at odds with each other - system administrators not really understanding or caring how the application works, and developers treating the systems as an infinite resource pool with no real rules or resources past "does my code run?"

    The sole purpose of devops is to ensure efficient operation of the infrastructure in a way that allows for repeatable deployments and controlled versioning, and that also includes system software such as operating systems (sysadmins benefit too because they no longer have to do one off deployments of OSes).

    This criticism strikes me as woefully underinformed as to what devops actually does, and I'm wondering if the author of this is a developer who is upset because devops is forcing them to actually use the software lifecycle properly rather than just doing cowboy deployments and hoping they work.

    --
    For linux tips: http://www.linuxtipsblog.com
    1. Re:Someone doesn't understand devops. by mortonda · · Score: 2

      Devops is even more than this, it also means applying common change management that is common in source code development to operational configuration, using tools like chef or puppet. It's scary how much "cowboy configuration" there is out there, and yet in the programming world, "cowboy coding" is frowned upon.

    2. Re:Someone doesn't understand devops. by russotto · · Score: 5, Funny

      It's scary how much "cowboy configuration" there is out there, and yet in the programming world, "cowboy coding" is frowned upon.

      Oh yeah, it's frowned on. Every senior developer will sternly tell you that "cowboy coding" is a terrible idea, then they will saddle up their horse and ride away.

  10. On the other hand, most devs do not get ops by gweihir · · Score: 3, Interesting

    A problem I have run consistently around is that developers rarely understand system administration, and operations in general. It makes their software suck a lot more. This is even more true with the Java-crowd, many of which cannot even use a commandline. The more this gets fragmented, the more people get specialized, the more problems arise in architecture, design and implementation, up to and including software that cannot even be deployed because of misconceptions on the developer's side.

     

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  11. Re:Cross training by Dynedain · · Score: 2

    If you absolutely don't want to do any administration tasks, that's fine. But its a rare developer who doesn't throw a fit when management takes their admin/root privileges away on their own workstation.

    It's legitimate for a developer to throw a fit. They should have admin access on their local box. There's an insane number of plugins, libraries, and frameworks they may need to install or test to determine if it's the right fit for their deliverable.

    However, I fully expect DevOps to question every single add on and make the developer justify it before deploying to production. Just because I as a Dev want Ruby for compiling SCSS to CSS on my local machine to save me time, does not mean Ruby needs to be installed on the production environment. That's what build servers and deployment scripts are for.

    SysOps on the other hand is far too prone to blanket say "No" or "We only approve this one obscure outdated fork of the package you want."

    DevOps is the perfect position to reconcile developer wants with checks and balances against actual needs and responsible deployment.

    --
    I'm out of my mind right now, but feel free to leave a message.....
  12. It's a Great Learning Experience by nebosuke · · Score: 4, Interesting

    I essentially have this kind of role within my organization. I design, develop, deploy, and support small to mid-tier systems (e.g., the planning system for a $XXXmio/yr global department, with 300+ direct users) while being one of my own customers, as I am actually a business planner (by role) as opposed to developer. I develop systems as a way to do my "day job" much more effectively. Typical tech stack would be Excel UIs, PostgreSQL data store, and whatever else I need in the middle (e.g., nodejs, tomcat, redis, whatever).

    What I've found is that, in general, doing the right thing the "right way" is not worth the cost compared to doing the right thing the "wrong way". By definition, in either scenario, the right things is getting done. What most pure developers utterly fail to understand is that in trying to do the former, there is an overwhelming tendency to do the wrong thing the right way instead.

    This is because, as Fred Brooks pointed out long ago--and as the "lean startup" movement is re-discovering today--for any non-trivial novel problem you cannot know in advance what the "right thing" is until you've actually tried to implement a solution. Brooks stated this understanding as the need to throw away the first try, and the lean startup movement is essentially defined by a corollary--you have to figure out how to try cheaply enough that you can afford to throw it away and try again (and again, and again if necessary), while progressively elaborating a robust definition of what the "right thing" looks like by using those iterations as experiments to test hypotheses about what the "right thing" is. Doing things the "right way" usually costs so much in time if not capital that you simply can't afford to throw away the first try and start over, or you cannot complete enough iterations to learn enough about the problem.

    Now, I'm not saying that you should be totally ignorant of software engineering best practices, design patterns, etc. What I am saying is that there is a limit to how effective you can be in reality if you live purely within the development silo. Having a "DevOps" role (granted, self-imposed in my case) has been one of the best things that's ever happened to me as far as making me a better developer, right up there with the standard oldies like writing your own recursive descent parser and compiler.

    In short, it is commonly-accepted wisdom among programmers (for good reason!) that you are more effective if you actually understand the technology stack down to the bare metal or as close to it as you can manage (even if only in abstract-but-helpfully-illustrative examples like Knuth's MMIX VM), and that this understanding can only be gained via practice. It should be obvious that the same is true in the other conceptual direction through deployment and end use.

    1. Re:It's a Great Learning Experience by Todd+Knarr · · Score: 2

      The difference is between developers knowing the operations side and being the operations side. Developers need to know the operations side to know how to write software that Ops can install and manage. And they should be involved in the development environment and installation in the testing environment so any gotchas can be addressed quickly and the developers know exactly what happened and can go back and make sure it doesn't happen again (especially in production). And of course when things really go pear-shaped during production deployments it never hurts to have the developers on tap to tell Ops whether there's a simple, quick workaround that'll salvage the deployment or whether it's time to roll back until they can fix the problem. But those are a far cry from developers doing Operations support and administration work on a daily basis. Frankly they're two radically different skill-sets. They're related, sure, but having a developer doing Ops as a regular job is like having Kelly Johnson keeping a fleet of Piper Cubs in shape. Sure he can do it, and technically he can probably do it better than a regular mechanic, but in a month or so he'd be bored to tears and walking out to go work somewhere where they'd actually let him do his job designing and building planes like the SR-71.

  13. It's all about timeframes... by QuietLagoon · · Score: 3, Informative

    .
    Operations people work in a timeframe of minutes to days

    Developers work in a timeframe of weeks to months

    Researchers work in a timeframe of years to decades

    When you take a developer, who thinks in terms of months, and task that person to think in terms of minutes and hours, you are wasting a resource.

    When you make someone respond to an overly wide range of timeframe-based events, the short term events always crowd out the longer term events.

    Have you ever noticed that companies locate their research divisions away from the day-to-day operations divisions? It is to keep the timeframes separate.

  14. Re:Analyst/Programmers ... by BlazingATrail · · Score: 2

    you used to carry your stack of punch cards to a Demi-priest, who passed them to the Priest who was the only one that was allowed to touch the computer. Funny, how even today that role still exists.. it's called a DBA.. these jerks won't let mortal developers near a database, even though the dev writes the script to be run against production, and DBA monkey just hits Run for you.

  15. But are they being forced? by Kimomaru · · Score: 2
    "You do a disservice to everyone involved when you force your brightest people to take on additional roles."

    I'm not sure that's accurate. Programming skills are pretty important today and most people, including myself, learn to code so that their current skill set (and market value) can be enhanced. It used to be that if you need an application, you'd have to buy one or hire a contractor to build one. So, this route has some problems associated with it besides cost. For example, if what you buy breaks, it's harder to fix without calling the company that made it. If you work in telecom and need a call center wallboard, you can either buy one or make one. I chose to write my own with Debian, PHP, and Apache. And it works just the way we like it, we have full documentation on how to rebuild it if needed, it's an inhouse solution that was built by "DevOps". There was a steep learning curve to develop the skill set to do this - it took a few months of hard work and learning. But it was totally worth it.

    If anything, the existance of DevOps is totally natural and was born from necessity. If I were a full time programmer, would I be bothered by this trend? Maybe.

    1. Re:But are they being forced? by malkavian · · Score: 2

      Nice when you get the time to develop every system from scratch, and don't have multiple departments saying "We need this now". And actually meaning it.
      Then having to ensure that what you've put in place stays up with a 24x7x365 uptime requirement, and recoverability to the last transaction.
      Oh, and hey, this thing that some department has purchased because they couldn't wait for the system to created, it only runs on another version of Linux (or on Windows with SQL Server!).. They need that put in there too.. You say no? The execs say yes, as they're already bought into it.
      And the regular programming load while you're setting this in? Not getting any lighter.
      Building things back to initial point in time is simple; any full fledged config management system can do that at the press of a button. Keeping it running, tuned, and error free.. That's the interesting bit.

  16. Developers are not the top of the food chain. by asysarchitect · · Score: 3, Insightful

    Several problems with the original article. Jeff makes the assumption that Developers are at the top of a totem pole and all others are below this developer hierarchy. This is the problem with a lot of younger developers, most who are jumping into development with no structural background in the operating system or real production operations. This premise leads developers to think they are superior to everyone, rather than focusing on building applications that must run in an operational context of being well-behaved in the environment they run, and allow for maintenance work of the operations environment. This is why you see anecdotal articles coming out that talk about the frustration and friction between developers and operations people. The truth is, most developers will be better developers if they learn a little more about how their app will work in a production environment. They will build better applications because they understand the environment better. Your architecture should be loosely coupled, that is, it should not stack up on a single server but rather be broken up into smaller components that can be built for scale across multiple machines and be able to fail over to redundant systems. Ops people will be more than happy to help get you there, but you need to think about how your app will fail as much as how it will work properly. The developer also needs to stay away from dictating specific languages -must- be used to run operations. Rather, they need to understand that operations is best suited to a polyglot of different kinds of tools and languages, using the right tools and wares for the job, not being dictated in some kind of nanny state that says you must use this language or that for operations and all others are to be thrown out. All too frequently startups get hung up on dictating operations people must use Python or Ruby or the ops dude is a total loser. This is the kind of arrogance that shows how little most developers really know about operations. Any of the more popular tools should be available to the DevOps person so they can get things done, and developers should stay away from being nannies. In classic UNIX operating environments the system administrator is/was god, followed by an allowance to use the system granted to developers, database admins, etc. Applications have always been guests inside most Linux/UNUX-based systems, even Windows treats applications for what they are, programs that run inside the operating system. This has always been the premise of modern UNIX-based and even Windows-based environments. Ops people follow this naturally, but typically run into developers that don't want to follow the rules. Ops people expect you to write a well-behaved application. Developers expect an operations environment that runs their application without getting in the way. These two goals can be easily met if both sides work together and allow each side to exploit the system, but everybody has to allow the freedom to make things work best for the goal of building better systems.

    --
    Tim
  17. I'm not seeing anything I recognize... by Questy · · Score: 2

    Integrator/Architect here... I travel all over the country (USA) for $CFGMGMT software company doing implementations and training in said package. Further, I do professional services engagements to implement and deploy devops workflows and integration paths for both operational and development workflows. I can say with great confidence that after reading the 150-ish comments here that I've only seen one or two commenters that come close to "getting" modern devops.
    As for the RTFA implications, many people saw right through his silliness. Developer in an ivory tower thinking his world is grand and majestic and lauded above all other disciplines. I guess that explains some of the crap in Python (but I digress).
    I've been in this business since before the bubble. I have done systems work dating all the way back to the 80's. At that time there were many silos with few bridges between. The first iteration of "devops" I remember seeing can be quantified as developers seeking root access. Even to this day, the answer is continually a resounding "no". Why? Are devs automatically rejected due to what specific tower they are residing in? Are they rejected because of the "separation of powers" or because of "politics"? Are ops folks just dicks with a chip on their shoulder?
    I think a number of things have happened and if you'll indulge me, perhaps we can break this conversation out more to see what's going on today.
    Back in the day, we had an operations team, systems team, qa team, and dev team. Loosely defined, these were the folks in the NOC monitoring everything and pushing ticket events to the right teams via triage, doing prints and getting them ready for the requestor, managing backups and access to the computer room, etc... general "operational" tasks. Day to day "operations" of the center of computing for your facility. At some point, this title got applied to anything that smacked of someone whose fingers touched anything made of metal. When this seemed to change? Late 90's-ish. I don't have specifics, but that's my recollection. Remember also that different sections of the country progress at different rates, so YMMV.
    Then there was the "systems team". Different sites had different monikers for this team from "engineering" (which PEs got pissed about) to "architecture" to "Systems Admins" to... well, whatever title HR thought was appropriate and met their organizational/talent distribution goals, but the work was generally the same. Storage, systems (mid range, intel, mainframe, etc.), capacity planning, backup systems and strategies, disaster recovery, and a myriad of other specializations within systems work. This is the specific "field" of systems work that breeds organizations like SAGE/LOPSA, etc. Those in these organizations dig into the very nuts and bolts of admin as a career and a field of expertise, following current research and methodologies and bettering themselves each and every day. I would offer that while dev folks can be quite competent in various systems tasks, they're just not a sysadmin (much less an engineer or architect). They really have no place in this area REGARDLESS of their quality at it.
    Many times I've heard dev get bent out of shape because "ops is being a blocker" or "we can't get anything done because ops is saying 'no'". It's unfortunate to be that myopic and that selfish. What many devs don't understand is the ops person they're dealing with is supporting sometimes as many as 10 different DEV teams operating on the exact same hosts or clusters of hosts and one or two of those environments is the pet project of VP #13 that agreed to a bunch of junk on the golf course that isn't in the statement of work, but is being offered "on the sly". They don't understand that dev #22, who has relationship with VP #11 and can essentially get what they want has forced you to introduce "whiz bang package or library 1.2.3.4" while the safe, researched, CERT recommended package is 1.2.2.2 (and, incidentally is the one all the other dev teams are u

    --
    #!/Jerald
  18. What about the SysAdmin? by adosch · · Score: 2

    Horrible assumption that you think developers are top-dogs, Jeff. I've seen many cases were DevOps role FAILED for competent developers because, in the cases I've seen, this is true:

    * Your smartest developer may be just that when it comes to language, software architecture and platform development, but their operating system, networking, hardware infrastructure knowledge + background is not even hobby-shop at best.

    * They've always had an ops or engineering crew to throw their code at, figure out how to integrate it, and NEVER had to support it.

    * Ego problems thinking they are 'above' remedial automation --- which most of the time doesn't involve a real development language, just scripting.

    Out of those two things alone, I've always heard the: "Well we need a sys-admin/engineer now because we are spending more time trying to manage systems, not really sure how or what to automate, and it's really taking time away from me getting back to the kind of development I, as the developer want to do." Which is the polar opposite of the two points I mentioned above.

  19. DevOps that work.. by malkavian · · Score: 2

    A working DevOps group should be an amalgamation of the Dev team and Ops teams.
    Trying to forge one team where everyone knows everything simply sets a level of mediocrity; you can research so far down an avenue in a given time, and get only so good at it.
    I've learned from the ground up (i.e. electronics, basics of VLSI, board design, basic OS design, all layers of the stack programming), and went from there on to system admin. Then did a stint as a developer using the knowledge that I had from my earlier history, and found that the sysop area of my knowledge atrophied in the detail (and the devil is _always_ in the detail) the more I concentrated on being a better dev.
    Went back to more of the operator/business side of things, and lo and behold, the more I go into systems and how to put together a proper reliable, recoverable infrastructure, the more my dev is atrophying. I'm half management these days, which means the ops side _and_ the dev side are both atrophying. The guys that do it in a dedicated fashion are more familiar with the latest tech than I am..

    You can be a jack of all trades.. But I seriously hope a company doesn't rely on you to get them out of trouble when the fecal matter hits the fan.. If you've been spending most of your time developing, with the nod to tuning the servers so your app runs better, you're not likely to have been able to put the time in to develop the wider infrastructure to support things going fubar, or had the time and concentration to really work out what is likely to get you.

    Having a few people marked as DevOps would be useful when you need to populate a middle ground.. They can work with both dedicated ops, and dedicated dev to ensure that scalability is baked in, and resilience is baked in to the apps. When it comes to ensuring the boxes are kept in tidy order for everyone, and get to be able to recover from the smoking ruins.. That's where the dedicated ops shine. When you really want that app to do something really slick, that's when a dedicated dev shines.

    Small scale, a DevOps person would work. The larger you scale, the less appropriate it becomes (as the only solution; a big company with the techs being solely a DevOps team would scare me).