Slashdot Mirror


Ask Slashdot: Should Developers Install Their Software Themselves?

Paul Carver writes "Should developers be responsible for installing the software they develop into production environments? What about System Test environments? I'm not a developer and I'm not all that familiar with Agile or DevOps, but it seems unhealthy to me to have software installs done by developers. I think that properly developed software should come complete with installation instructions that can be followed by someone other than the person who wrote the code. I'd like to hear opinions from developers. Do you prefer a workplace where you hand off packaged software to other teams to deploy or do you prefer to personally install your software into System Test and then personally install it into production once the System Testers have certified it? For context, I'm talking about enterprise grade, Internet facing web services sold to end users as well as large companies on either credit card billing or contractual basis with service level agreements and 24x7 Operations support. I'm not talking about little one (wo)man shops and free or Google style years long beta services."

288 comments

  1. Why not use tools that help do it? by AE90 · · Score: 2, Informative

    Developers should concentrate on creating software. There are already tons of tools that help with the install and configuration state of software. Use InstallShield and the various Visual Studio install and config helpers. Visual Studio itself has many debugger functions available, and there are tons of extra helper plugins if required.

    Developers should use those and make sure users can install their software themselves.

    1. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      What a silly attitude. If the users cannot install the software, the developers will soon be out of a job.

    2. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Shht. I think this is about a linux mess, not a windows one ;-)

    3. Re:Why not use tools that help do it? by Bigby · · Score: 5, Insightful

      This question was not directed as consumer application. It is direct at Enterprise applications. InstallShield just won't do it.

      Developers should not install it. Nor should they help install it. If the Configuration Management team cannot do it themselves, then they need to send it back to the developer for better packaging or instructions.

      This is to the developers benefit. When new environments are set up, they shouldn't have to contact the developer to deploy the application to those new environments.

      And as always. Titles with questions are typically answered with a "no".

    4. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      For context, I'm talking about enterprise grade, Internet facing web services

      So no, obviously not Windows.

    5. Re:Why not use tools that help do it? by macbeth66 · · Score: 4, Informative

      ::Applause::

      Sorry, I just do not have the mod points at the moment.

      The exactly, correct response.

      As a developer, there is only so much I can do. And I really do not want calls in the middle of the night. If I can describe how to install my software to a production support team, then the software release isn't ready for production.

    6. Re:Why not use tools that help do it? by gman003 · · Score: 1

      I take it you've not tried to install any major applications on Windows lately.

      Let's take two examples I had to do recently.

      The first required me to separately install SQL Server, IIS and a few other prerequisites, then install the application, then manually run a SQL script to initialize the tables AFTER manually creating a db instance and authentication parameters, log into the application and configure it to point at the SQL server instance. Not too complicated, but still hardly the simplest method.

      The second required me to manually install several odd prerequisites (IIS (despite not being a web package), the IIS 6 compatibility plugin (despite requiring Windows 8/2008R2, which only use IIS 7), ASP (again, it doesn't run a web interface), .NET 4.0 runtime, and Acrobat Reader (no PDFs were included)). Then I could install the "prerequisites package", which mainly consisted of drivers for the security dongle. THEN I could install the actual application, which had thankfully managed to complex task of "initializing database tables". There's more that I still have to do, but I can't figure out what they are because they didn't include the installation manual anywhere.

      These are both major, multi-billion-dollar applications (the first one has options for using SQL Server or Oracle), proprietary as fuck, shipped out on custom-printed DVDs, and yet they can't manage to make an installation that takes less than a full day.

    7. Re:Why not use tools that help do it? by nosfucious · · Score: 1

      Dev boxes: No, no, no, no and no.
      Test boxes: The same.

      As an example, If you have 4 developers, there will be 4 different versions of Java in use, and none of them will ever be the corporate standard. Each developer will insist that thier version is "God's own" and force a company wide upgrade, not caring about any other application that requires a specific version.

      If developers want to play, they can go home and dev on thier home machine. No problem.

      The corporate machine is a machine owned by the corp and must follow the rules.

      If there is ever a fantastic reason to upgrade, then the business case has to be put, and approved. Not simply because the developer used that version and seemed ok at the time.

      --
      Q:I was listening to a CD in Grip and it sounded horrible! What's up? A:Perhaps you are listening to country music
    8. Re:Why not use tools that help do it? by Rhaban · · Score: 5, Insightful

      Developers should not install it. Nor should they help install it. If the Configuration Management team cannot do it themselves, then they need to send it back to the developer for better packaging or instructions.

      As a (web) developper, I strongly agree.
      I'll just add that the Configuration Management team should have some knowledge about the software and the environment they manage.

      I've often seen software come back because sombody did'nt have a clue what their job was. ("prerequisite: apache 2.x" should be enough for anyone: I don't have time to write a doc about how to install standard software, especially when I don't know the target server configuration)

    9. Re:Why not use tools that help do it? by bluefoxlucid · · Score: 1, Insightful

      If the developers don't dogfood it, they won't understand wtf is the problem. Make them install that shit themselves, make them watch the end user install it, make them fix it when the end user fucks it up because they don't know the formula for the secret sauce. Get that secret sauce shit out of there and give me something straight forward.

    10. Re:Why not use tools that help do it? by micheas · · Score: 1

      Your comment is half way there.

      Enterprise software should be installed with something like puppet or cfengine.

      the test server(s) should have a script that installs the software from the dev server on a periodic basis (the frequency depends on how long the install takes.) for enterprise software the install should be no more complicated than install-package local-config.txt Otherwise, how the F* are you going to know how the software was installed? The idea of taking days to install software after all the config questions are answered is crazy, but all too common.

    11. Re:Why not use tools that help do it? by rthille · · Score: 5, Insightful

      Of course the devs need to install it into their test environment. And QA needs to install it into their test environment, but Ops needs to install it on the production servers.

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    12. Re:Why not use tools that help do it? by ccguy · · Score: 4, Interesting

      If the Configuration Management team cannot do it themselves, then they need to send it back to the developer for better packaging or instructions.

      Sorry, no. I couldn't disagree more. I've worked in places like that, were developers were unable to get close to the production servers, things wouldn't work in production (but worked fine in dev) and we were unable to do anything except send builds with more and more debug info, working late nights to get things done, with a client more and more pissed each day.

      Then it turns out that contrary to what they said, dev and prod wasn't identical, in a number of important things such as library versions.

      If the install team is unable to install it by fuck's sake *get a developer see the installation process by himself* so he can come back just once with all the data he needs.

    13. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      What Configuration Management team? ;)

      I debug it, write code for it, install it, document it, support it (email+phone+ etc), attend meetings about it. And it's a legacy system based mainly on .Net 2.0.

      Before I took over, the source control was Visual SourceSafe and the commits didn't have comments and were done like twice a month/year or something.

      And yes it's an Enterprise application.

    14. Re:Why not use tools that help do it? by FithisUX · · Score: 1

      Have you heard about Chef?

    15. Re:Why not use tools that help do it? by landoltjp · · Score: 4, Insightful

      I'm a build and configuration manager (and a LONG long time software developer), and I completely agree.

      If developers want to employ new (as in industry-wide, or new as in company-wide) technology, they are free to install, configure, test, and prove out the functionality and feasibility of the software on their own machine. But that should be the limit of their reach.

      Any shared / integrated environment from QA on up to Pre-Prod and Prod, should be off-limits from a developers' sticky fingers. If there is an installation and / or configuration problem that arises with the application, AND a developer is needed for support, then they should absolutely be called in, but from a CONSULTATIVE role only. I.e., their fingers never touch a mouse or keyboard.

      It's common (if not expected) for developers to build an intimate working relationship with the technology they're using. In the world of "familiarity breeds contempt", it means that a developer can overlook something that occurs "obvious" to them, but not to everyone else. How many times has a developer been "called in" to fix an installation problem, and the fix wasn't documented or proved out? (not to say that integrators are saints in this area, but they damn well SHOULD be). Or a developer has access to a test region, and just "hops onto the machine" to tweak a parameter that caused a test suite to fail?

      QA (and QC Testers) need to count on the stability of a machine, it's known state. If a test is failing 100% of the time, it should keep failing. Or if it's passing 100% of the time, it should keep passing. Having the parameters of an integration machine change without the knowledge of the QA team (e.g. so that changes can be scheduled in, and updates to the testing suites can happen), then the validity of test runs is nullified, testing costs go through the roof, thus adding to the pressure to "skip the tests" and ship / deploy. Ick.

      The instructions / script for installing a package on a machine should be EASILY understood by an installer who is skilled in the practice of software installation, and no more. (ie, not written for a senior engineer, not written for the janitor). Enough information to have it properly installed and configured, some basic troubleshooting, and a clear escalation path should issues not get resolved. Skip the 65 pages of configurable parameters if all the installer needs to alter are 12 parameters on the target machines. but don't skip ANY of those 12. If one is missed, find out why. If 10 extra are there, see which ones are needed for the different regions and skip the rest.

      My personal line in the sand is the Developer integration area; that stays with the code monkeys. It's important to be able to test out package installs, and this is the type of machine upon which to do it (which is not to say there is a single DIT - have multiple, including one just to test out package installs if need be). QA regions and beyond are under tight control. I work in banks a lot, so Pre-prod and Prod are under a metaphorical armed guard.

      Once the installation and config documentation is tested by the developers, the docs get thrown over the wall to the integration team (optimally, QA should be involved in a doc review to make sure that what's in the Doc is what is required, no more and no less). For a Waterfall / SDLC methodology, this documentation review and handover is one of the gating steps. For an Agile / Scrum / XP methology, this can be considered a single story, where the success condition of the task (story, etc) is working installation (works) and usable documentation (has been tested).

      The key is not to go bat-crap crazy on it, but to ensure repeatability and workability. It would be GREAT if the install could be automated (or run unattended, or have little or no intermediate steps requiring human intervention) so as to reduce integration errors, but that is dependent on the requirements of those managing the QA regions and above.

    16. Re:Why not use tools that help do it? by punker · · Score: 4, Informative

      I completely disagree. Developers should absolutely be involved with software installs. Rarely should they have the final say, but both operations and development staff benefit from working together on software installs.

      The best example I can give for this is database installs. Working with the operations staff on installs helps developers better understand engine performance. They learn about things like prepared queries, connection pools, what tables remain paged into memory, etc. These are things that help the developers write better code. Similarly, the operations staff can learn what the application focuses are. They can optimize performance through VM provisioning, tablespace layout, memory pool size, etc. They can also understand the usage goals better, which lets them keep developers informed of important changes.

      I've been running IT departments for over 10 years, and my experience has shown me that there is a definite benefit to having development and ops work together on installs.

    17. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 2, Informative

      It sounds like you're putting the blame/responsibility on the developer for determining what versions of what underlying software is installed. Isn't that what the dev & prod build guys are for?

      The developer should be developing. Not testing. That's QA/production.

    18. Re:Why not use tools that help do it? by RabidReindeer · · Score: 2

      This question was not directed as consumer application. It is direct at Enterprise applications. InstallShield just won't do it.

      Developers should not install it. Nor should they help install it. If the Configuration Management team cannot do it themselves, then they need to send it back to the developer for better packaging or instructions.

      This is to the developers benefit. When new environments are set up, they shouldn't have to contact the developer to deploy the application to those new environments.

      And as always. Titles with questions are typically answered with a "no".

      Most places I've worked, the auditors would have kitten if the developers directly touched production servers in any way, shape, or form. The really stringent ones wouldn't even accept binaries - all production code had to be compiled and installed from source handed over to the Operations staff.

      I often occupied a position where those rules didn't apply to me, but I obeyed them anyway. That way they couldn't blame me.

    19. Re:Why not use tools that help do it? by digitalchinky · · Score: 1

      I don't know what my point is but every day I deal with Java devs that don't know the difference between the JDK and JRE, let alone how to actually install either of those. If the IT department doesn't configure their IDE of choice, if they screw up their config settings, they grind to a halt and work simply stops. Sure they can write code well enough, but what good is that when the same devs need to troubleshoot an app server issue at a client site.

      Maybe I'm becoming more BOFH like the older I get, but is it really too much to expect anyone above software associate to know their way around simple systems administration tasks? Documentation is not difficult, writing an S.O.P for the IT support staff is even easier. Anyone calling themselves a developer that can't do this, or has a team to do this for them, well, I don't have that luxury and I'd bet that makes for a huge difference in salary, one person instead of 4 to do the same job.

       

    20. Re:Why not use tools that help do it? by Bengie · · Score: 1

      I'm not saying this is the "best" way, but this is how it's done at my work.

      The devs have worked with the admins to script/automate the installs. The Devs do test installs against their VM images, but the final live install is done by the admins. This also works as a conduit to keep admins up-to-date as to how the software works.

      One of the big issues is for our admins to be able to debug basic issues. The admins also give a lot of feedback to the devs on how things seem to be running live.

    21. Re:Why not use tools that help do it? by ccguy · · Score: 1

      The developer should be developing. Not testing. That's QA/production.

      Yes. And when the prod guys says "it doesn't work" where does the shit end up eventually?

    22. Re:Why not use tools that help do it? by jellomizer · · Score: 1

      That is all fine and good if you are talking about small consumer grade software. But for larger applications installations are not as easy as a wizard.

      For the most part you need the following groups.

      Team 1: Product Development
      1. Programmers They write the code.
      2. Developers They write the code too, but they write the framework code for the developers.
      3. Architect who give the bigger picture guidance to the Developers a unified say on how things should be done and where they are placed.
      3'. Project Manager works parallel with the Architect to make sure the project is moving at the right time and deals with management.
      4. Management they give the business case that needs to be solved and approves solutions from the Architect and Project Manager.

      Team 2: Product Implementation.
      1. Support Group: They do the physical install to the system. Often called Consultants/Contractors...
      2. Implementation Designers: They design the workflow needed to install the documentation
      3. Technical Writing: Their job is to document the application and work with Team 1 to get the information.
      3'. Project Manager works with Technical Writters and gives insturctions to the Implementation designers.
      4. Management (This could be part of Team 1) In essence a way to keep the two teams in sync.

      Now this is for a setup of a large complex project, where the Install is more then just a wizard click away. But installing the software, getting the configuations correct and dealing with the customers.

      Most of Team 1 should be kept away from the customers, because the customer will often want to deal with them, and bypass Team 2, as Team 2 is considered less technical, and will often say Yes this version can do it or No. And try to pressure team one to keep on custom configure code to do what they wan't... This could corrupt the project, Because the project if done well should be following best practices, and the customers want to just do it the way they did it in the past.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    23. Re:Why not use tools that help do it? by Imagix · · Score: 4, Informative

      Getting a developer to see the installation process is not the same as having the developer do the install as a matter of course. One is a debugging process, the other is development. If Dev and Prod aren't identical, then their Configuration Management team has failed. They need to learn that Test (and to an extent Dev) are just as important as Prod.

    24. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      In our environment, the developers can't get close to the production servers - or even the QA servers or test servers. The QA/test team cannot get close to any of those servers as well. However, the QA/test teams can intiate a deployment process to push an application to the QA or test environment servers (forcing a deployment process to be defined for new apps before new apps get delivered). We have tools/scripts that compare aspects of the machines across environments to flag machines that are not identical where they should be. This enables the environments to be kept in sync with library versions, software packages, etc.

      For each of the test, QA, and production environments, we have a dedicated server with debugging tools set up (that also gets applications deployed to it) that don't take regular traffic (real clients in production and QA/test clients in QA/test) so that if a developer can't reproduce a problem on their own machine, they can reproduce and debug an issue in the environment that it's occurring in (and using all the same shared resources). We actually go to the extreme and give each developer a machine that's configured like all test, QA, and production servers (no developing on laptops/workstations). We don't restrict software from being added or upgraded, but we have the same validation capabilities to identify differences between their machines and a server in test/QA/production.

      This is all done primarily in support of web applications, but there are some services (Windows services) or console apps that are supported this way as well. Developers absolutely don't need access to servers in any environment - it seems to be used as a shortcut or maybe a cost-savings measure to having good process and architecture.

    25. Re:Why not use tools that help do it? by Maxo-Texas · · Score: 1

      This.

      The dream is that developers do not have access to production.

      The reality is that PRODUCTION IS NOT DEV.

      Companies will not pay the money needed to have dev be a copy of production.

      They cut budgets and corners left and right and then schedules. Be creative! Work smarter not harder! Do more with less!

      And then they put a 5 day procedure over getting access to production debug mode which requires approval by a half dozen people.

      And then scream as the business loses customers who it would not have lost in the past.

      We have 70 production environments... the company decided that test would have data from 1 production environment. The results have been as expected.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    26. Re:Why not use tools that help do it? by magisterx · · Score: 1

      It depends. When we are talking about desktop applications (whether consumer or purely in-house), then there should certainly be a user friendly install package for everyone's sake. It makes it easier for the front-line help-desk, easier for the user, and saves the developer time. For complex server packages, I would be much more tolerant of not creating a simple install package. For something like that, creating a simple install package might be very difficult and might loose the ability to customize each install for that particular server. Such packages are not installed frequently and there is often good reason the installation is complex. With that said, the install process should at least be well documented. If it is not well documented, then you can run into problems if (when) you loose that particular developer.

    27. Re:Why not use tools that help do it? by Randle_Revar · · Score: 1

      >And yes it's an Enterprise application.

      So, SOP then?

    28. Re:Why not use tools that help do it? by ccguy · · Score: 3, Insightful

      If Dev and Prod aren't identical, then their Configuration Management team has failed.

      They usually aren't hardware wise for budget reasons, hardly ever are configuration and environment wise (considering other running programs as part the environment) and they definitely aren't identical user base wise.

      While I understand devs shouldn't modify anything in prod, denying access to the system to see in real time what the fuck is going on when something doesn't work is just asking for the solution to take 10x, frustration, finger pointing and longer hours (usually the developers and often unpaid).

      Seriously, nothing wrong in telling the developer "come down with me, I'll start the damn thing in front of you, you can check a bit of the system to you go back with a clue".

    29. Re:Why not use tools that help do it? by miltonw · · Score: 4, Insightful

      Sorry, no. I couldn't disagree more. I've worked in places like that, were developers were unable to get close to the production servers, things wouldn't work in production (but worked fine in dev) and we were unable to do anything except send builds with more and more debug info, working late nights to get things done, with a client more and more pissed each day.

      Then it turns out that contrary to what they said, dev and prod wasn't identical, in a number of important things such as library versions.

      If the install team is unable to install it by fuck's sake *get a developer see the installation process by himself* so he can come back just once with all the data he needs.

      Then your process is screwed up. The solution isn't to open production to developers but to get your process fixed. Part of the process must be ensuring that the production environment is regularly and consistently copied over to development to ensure the problem you describe can't happen. That's the solution.

      I have no problem with giving developers read-access so they can look at the production environment to "gather data" but developers must not be able to ever install or change anything in production. That's just good sense.

    30. Re:Why not use tools that help do it? by Imagix · · Score: 4, Insightful

      You didn't understand the beginning of my post. Having the developer watch is not the same as having the developer do the install. Read-only vs. read-write. I'm OK with dev being able to read-only. They can't "infect" production with their assumptions if they can't change anything. If they find something that needs adjusting then they should be adjusting their own environment to replicate the problem (or simulate it if necessary), construct the fix, then communicate the fix to those who should be doing changes to Test and Prod. If Dev and Prod aren't the same for whatever reasons, then the powers-that-be have to understand the costs that are incurred by not having them the same. You save the $5k on using cheaper hardware in Dev, but cost them $50k in downtime because that difference causes a bug to be exposed in Prod. (Picking numbers out of thin air). And yep, sometimes that $5k savings does end up really being $5k in savings as the difference in hardware had no impact on the environment. It's something that needs to be considered. (And yes, I'm very firmly on the development side of the fence, and my software gets installed into large production environments that I will never see, and in some cases am not legally allowed to see. Something about foreign nationals not allowed to touch or see any hardware that controls satellites...)

    31. Re:Why not use tools that help do it? by tepples · · Score: 2

      all production code had to be compiled and installed from source handed over to the Operations staff.

      Which would mean that the Operations staff would also need licenses for the compiler if it is licensed per seat.

    32. Re:Why not use tools that help do it? by ccguy · · Score: 2

      Then your process is screwed up.

      You're missing the point. It's not "my" process. I'm usually a developer in the team that is working on the client's development systems following *their* process to the letter. Telling me that the process is broken doesn't help me at all. The process is what it is and since we have to live with it the best thing sysadmins and devs can do is cooperate a bit so that it's less painful for everyone.
      Have you actually worked as a contractor for any major corporation? Many of the replies I see here seem to come from students that know the theory pretty well, have no fucking idea how the real world is like.

    33. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 1

      Seriously, nothing wrong in telling the developer "come down with me, I'll start the damn thing in front of you, you can check a bit of the system to you go back with a clue".

      This. As a developer if prod can't install my software I want to see what the fuck is going wrong during install so I can actually produce a fix. I can't tell you how many times we have build something on a dev server and then went to move it to production and discovered that something wouldn't work. This is nearly always the case because prod and dev are not exactly identical, though with AWS we see this far less often.

      So basically the developer should be involved at some level in the installation, but to require the developer to do the install himself and remove the config, prod, and Q/A teams from the process is not realistic.

    34. Re:Why not use tools that help do it? by satch89450 · · Score: 4, Interesting

      I'm sorry, I have a real problem with the underlying assumptions your answer makes about the process. There should not be a high wall between groups. Developers should not install it, but that doesn't mean the developers are not there when QA or Configuration Managment or whoever installs it. As a long-time developer, I learned more from the struggling of other people with my software than all the scaffolding and test-bedding done in isolation. Back when I was doing embedded programming, I made it a point to spend time in System Test to see how my software was being used...and misused. Next to me were the Documentation people, watching out for mistakes or head-scratching -- between us, we would see the holes that needed to be plugged so that the downstream processes would go more smoothly. And I would go out into the field, to customer sites, from time to time, particularly if a customer was reporting problems. This was particularly true of first launches, because sometimes the devils aren't seen until the customer hits them.

      This was true for newspaper composition systems, newpaper press controls, bank check processing systems, key-entry systems, even a technical support group application.

      I relate this story about the fallacy of compartmentalization: the General Manager gathers all the employees one Friday. Everyone had just been paid, the weeklies and the monthies. GM: "I'm not happy with the 'us versus them' attitude that seems to permeate this company. It's affecting our ability to get product customers want into their hands, so we all can get paid. So, tell you what: everyone pull out their paychecks, and fold them so the signature at the bottom is visable. See? All are signed by the same person. That should tell you something: that we should be working for the same goals, so we all continue to get paid." The change in that company was dramatic: instead of silos, it was more like an open-plan office writ large, with people talking with one another. One side benefit: sales stopped selling what we didn't have, and PARTICIPATED in the creation of new products. That company went from one step from closing it doors to being a booming business. My stock went from $1 to $65 a share. In six months. And the company was in the mid-West, not Silicon Valley

      The softball team started doing a lot better, too.

    35. Re:Why not use tools that help do it? by Sir_Sri · · Score: 3, Insightful

      depends on the software....

      In terms of, for example, the web database etc. mentioned in the question you're into a lot of installing an SQL server (that's separate from a developer team generally, but it's a 30 minute job if you know what you're doing), and then building the database. Once you built the database you don't necessarily have an 'installer', you just send them an image of the whole installation (or the whole physical machine).

      If you're a company that specializes in making billing software databases then sure, you might have an install script and setup parameters than your installer guys can execute.

      There's sort of a hierarchy of techie people. Not everyone at a higher level can do the low level jobs, but one person at a higher level might be able to do all of the lower level stuff in 20 minutes that would take them weeks. This isn't 'consumer' product, in enterprise you might send out a 'linux guy' (who doesn't know linux scripting, that's an advanced linux guy) to do a linux install, but he can be given detailed, line by line instructions to follow from developers. In enterprise 'you' as the development firm can be responsible for getting it installed and setup. And you have co-op students who are basically high school grads following instructions for installations, or you can have a partially automated lab with software engineers running deployment tools to hundreds of machines at a time, it just depends on how big an outfit you are and the sort of customers you have.

    36. Re:Why not use tools that help do it? by tepples · · Score: 1

      for enterprise software the install should be no more complicated than install-package local-config.txt

      How can this work if some of the dependencies lack an easy "silent install" feature?

    37. Re:Why not use tools that help do it? by vlm · · Score: 1

      ... you might send out a 'linux guy' (who doesn't know linux scripting, that's an advanced linux guy)

      Oh how times have changed... what limited tasks, pray tell, can a non-advanced linux guy do... stick the ubuntu install DVD in and hit reset?

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    38. Re:Why not use tools that help do it? by SQLGuru · · Score: 1

      Edit configuration files
      Run scripts (but not write them)
      Set up cron jobs
      Set permissions
      Install software
      etc.

      The GP only called out scripting as an advanced skill. There are plenty of installations that don't require writing scripts that you'd pass off to a junior Linux guy.

    39. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      The reality is that PRODUCTION IS NOT DEV.

      But TEST needs to correspond to the lowest common denominator of production, plus any variants that you've written optional bits for.
      If your install fails there, you've got no business pushing it to production.

    40. Re:Why not use tools that help do it? by SQLGuru · · Score: 4, Informative

      One nice thing about virtualization. It's a lot easier to take a copy of a VM and spin it up somewhere so that the configuration *IS* the same and you can debug something without affecting the live systems. (Ok, technically there is a delta -- security permissions -- but that's the only thing that should be different, although it does sometimes make a difference.)

    41. Re:Why not use tools that help do it? by SSpade · · Score: 1

      Also, installation should be as automated as is reasonable. Spinning up a new node shouldn't require more than a couple of commands to image the base OS, install the application and integrate it into the rest of the network. Upgrades, ditto.

      The developers should be doing this for their test / integration environment, QA for their testing environment and Ops for staging and production environments. That's true whether or not Dev and Ops are the same people.

      If it can only be installed manually by the developers, you have a serious problem - but if it can only be installed manually by Ops, that's just a slightly smaller problem.

    42. Re:Why not use tools that help do it? by miltonw · · Score: 4, Insightful

      I have often worked as a contractor for major corporations, and I have worked with contractors as a system administrator. I was not accusing you of anything but I was criticizing the environment you were forced to operate in. If the development environment gets so out of sync with production that installs succeed in development and fail in production, the solution is not to allow developers to change production but to correct the environment.

      If production doesn't match development (and/or test) then the whole process is broken! Development is invalid and testing is invalid. Both development and test must duplicate production or absolutely nothing done in development or tested in test can be trusted.

      As a developer, years ago, I actually modified a running production environment and I was very lucky that nothing went wrong. I understand that it happens and, in broken environments, sometimes it must be done, but that doesn't make it safe or right.

    43. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 1

      Both development and test must duplicate production or absolutely nothing done in development or tested in test can be trusted.

      This is complete bullshit, but the rest of the post is pretty much correct. The important part is to have one environment that mimics production. The rest can be completely different and if your software doesn't suck ass then it won't break.

    44. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      If the "Ask Slashdot" is someone looking for an overly complicated solution for a trivial problem, then it's probably a Linux question.

    45. Re:Why not use tools that help do it? by Bigby · · Score: 2

      This is the best case scenario. Good luck finding even 1% of medium-large companies with even close to that good of a process and infrastructure.

    46. Re:Why not use tools that help do it? by rflii · · Score: 2

      As an Operations Director, I fully agree with you, The development team should be required to identify the underlying technology. Actually this should be laid out by the Infrastructure team (CTO) but each application might have parameter tweaks. Their documentation should identify the pre-requisities and non-default parameters. It is up to the Operations team to document how to provision operating system resources and deploy the underlying technology. The Operations documentation should also be used by the team giving Operational support to the development team. Circle of Life.

    47. Re:Why not use tools that help do it? by blippo · · Score: 3, Interesting

      You Sir, are absolutely correct.

      Database changes are a tricky matter though. Despite testing our upgrades on a copy, we feel its safest to
      one or two developers on site during software upgrades, in the event that something goes pear shaped.

      I also think if developers can be involved in running and monitoring the actual system, you will get
      better stability, better diagnostics and simpler handling.

      (Banking systems, inhouse "enterprisey" applications on unix servers)

    48. Re:Why not use tools that help do it? by Bigby · · Score: 2

      This is what QA/QC environments are for. And there, developers should be involved in doing the installs. This is where the "hand-off" happens and corrections are made to the installation process.

    49. Re:Why not use tools that help do it? by angel'o'sphere · · Score: 1

      The previous big company I was working on had, dev environments, pre-prod environments and production.

      If the DEV team could not provide a 'script' that worked (one for humans to read and a lot for humans to start) the installation would fail and the developers got the blame.

      I worked as ' system operator' there, and it was completely forbidden to me to fix simple typos etc. to let the scripts run.

      If a single stage of the deployment (newspeak) failed the complete release was rejected.

      The idea was that a simple guy who can type in unix comands can do the installation. In fact I was supposed to copy paste the commands from the human readbale script and should execute the bash/ksh scripts by that.

      Well, luckily we had the "pre-prod" environment to practice this several times.

      FYI: a full deployment of the software took between 14h and 18h and was usually done via a weekend.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    50. Re:Why not use tools that help do it? by angel'o'sphere · · Score: 1

      Companies will not pay the money needed to have dev be a copy of production
      Perhaps this distinguishes Fortune 500 companies from the come and goes?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    51. Re:Why not use tools that help do it? by udachny · · Score: 5, Funny

      If I can describe how to install my software to a production support team, then the software release isn't ready for production

      - BOFH, is that you?

    52. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Wait what 4 informative?

      If you can explain how its done, it is not ready?

      I think I missed a few classes somewhere, or my logic is failing me.

    53. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      > This is to the developers benefit. When new environments are set up, they shouldn't have to contact
      > the developer to deploy the application to those new environments.

      Actually, I think it is to everyone's benefit.

      Who are you going to call when its 10 am, the app is down, and the developer who also installed it, is in India...sleeping? (I know, we have come to expect those guys can work 24/7 but, they are human too)

      The thing is, the application support team/config management, whatever you call them, production has to know how to administer the software, have to know what the parts are, and how to do some troubleshooting. If they can't install it, they probably can't do that either.

      Right now I sit in the inbetween region. Developers write code, production people support it in production and install it... we.... sit between production and developers and do reference builds and sometimes first production deployments.... but by the time we are done, production should be able to do the install with the provided docs (which we have proofed).

      Its an utter mess of course... instructions that don't work, day long sessions with developers trying to figure out where the process broke, because these guys have an environment, they are not building one. They don't know what is inviolved in setting up and installing that one missing prerequisit that they forgot.... oooh instructions that reference files in their internal svn repos that nobody else can access. SQL files that were generated in some development tool, that the sql client production uses chokes on....

      Hell, even worst, they are not DBAs, half the database accounts they want created, they want to give DBA access. They seriously need someone, who is connected to the production world, to toss these things back at them to fix.

      I don't mean to knock developers here. They don't know any better and are not going to as they get pressured for time to develop and fix the main application, with little time to spend on install procedures and realities of prod environments.

      In short, no, I don't think developers should install the software in prod, but nor do I think they should be fully expected to be able to just tell prod how to do it. There needs to be work in the middle to integrate their solution with prod, to bridge those gaps.

    54. Re:Why not use tools that help do it? by turbidostato · · Score: 1

      "If Dev and Prod aren't identical, then their Configuration Management team has failed."

      Are you implying that, say, Google or Amazon have another bazillion servers in the dark just so Dev and Prod are identical?

    55. Re:Why not use tools that help do it? by Hognoxious · · Score: 1

      Your comments, particularly about users installing software themselves, lead me to believe that you don't have a fucking clue what the author is talking about. Or what you are, for that matter. But then neither do the mongs who modded you up.

      Key phrase in TFA - production environment. He's talking backend stuff, ERP systems, web apps. In fact, he goes on to state that about three lines down. Did your finger get tired before you got that far?

      Correct me if I'm wrong, but there isn't a version of Install Shield for SAP or Peoplesoft.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    56. Re:Why not use tools that help do it? by lightknight · · Score: 1

      Are these the same users who, up until a few years ago, might have confused a CD-drive tray with a cupholder?

      --
      I am John Hurt.
    57. Re:Why not use tools that help do it? by Hognoxious · · Score: 2

      Well if you can explain it, it doesn't appear to be magic. And we all know that any sufficiently advanced technology is indistinguishable from magic. In addition, Marketing insist that our product must be more advanced than anyone else's, and Legal insist we can't release it before it's ready.

      It's therefore trivially obvious that if it can be explained, it isn't advanced enough, therefore it isn't ready.

      Shit, don't they teach bloody syllogisms where you're about to grow up?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    58. Re:Why not use tools that help do it? by tnk1 · · Score: 2

      It would be nice if the developers understood what went into managing their own code in production, but I don't think they should get too involved. When developers install things, there is a tendency for how they install it to be done in a one-off manner where they do all sorts of wonderful things like compile in modules that we can't use or they just thought looked cool. Then they wonder why things don't work the same way in production.

      What I want from a developer is simply that they put the required logs and interfaces in their code so it can be monitored and run in a redundant, scalable manner. Some JMX, some SNMP, and the docs to explain the stats. That means that you're not allowed to just say "Oh this will never fail" or "This can handle millions of transactions, so it doesn't need to scale" without at least having to prove it, in detail.

      Actually, don't bother proving it, just put in the redundancy and scalability, even if we never use it. It's a good exercise. After all, if this code is as good as you think it is, somebody might be running it long after you are dead and have found ways to send a bazillion transactions at it. And as someone who always seems to get stuck supporting legacy code, I will thank you for it. Or my successors will, anyway.

      Automation is also nice, but note that if the developers keep changing their projects to use the newest thing that Twitter or Etsy or Facebook, whoever the next big IPO is doing, the automation will suffer. Automation is best when you stay consistent and maintain a slowly evolving toolset so that the automation can keep up with it. Otherwise, the automation will break or cause more problems than it fixes.

    59. Re:Why not use tools that help do it? by lister+king+of+smeg · · Score: 1

      its called job security make it as nonobvious and convoluted as possible so that your the only person that can comprehend it, that way your unfireable because it will fall apart when you leave.

      --
      ---Saying gnome 3 is better than windows 8 not so much a compliment as it is damning with light praise.
    60. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Not having identical Dev and Prod environments doesn't matter. When people tell you they have different environments for dev, it's usually that they have OTHER environments that are identical to prod.

      At work, we have Dev, Accept, Pre-Prod and Prod. Pre-Prod is practically the same as Prod, the other two environments are in whatever state they happen to be for the software to work and be looked at. Any serious QA testing happens in Pre-Prod. The tests run fine, bugs get found, and we save both the $5k and the $50k.

    61. Re:Why not use tools that help do it? by miltonw · · Score: 2, Insightful

      Too bad you haven't had any experience in the real world. How can someone trust tests done in a different environment than production? I especially like your testing success criteria: "if your software doesn't suck ass then it won't break". LOL!

      That an application "doesn't break" is only the very first test in a long list of criteria. Many applications that "don't break" will still corrupt data or cause other existing applications to fail.

      Development done in a different environment that production is a waste of time and testing in a different environment is useless. Good luck with your method.

    62. Re:Why not use tools that help do it? by xaxa · · Score: 2

      for enterprise software the install should be no more complicated than install-package local-config.txt

      How can this work if some of the dependencies lack an easy "silent install" feature?

      I've been reading "Continuous Delivery" by Jez Humble, which seems to be the bible for this, and the conclusion there is something like
      1) Pester the supplier to make a silent install feature
      2) Write one yourself
      3) Switch to something else (if there's an open source replacement for the software it probably installs silently).

      I'm still working out the best way to have a configuration applied to software. I like the idea that the binary should be the same no matter what environment the software is deployed to (which is a change from how we do things at the moment, with ${placeholders} filled in for a particular environment at compile-time.

    63. Re:Why not use tools that help do it? by tnk1 · · Score: 1

      If the developers have designated the correct libraries for their software, and the library versions have been approved by security and production for production use, then it is the fault of the production people for not putting the right things in. Then the prod people end up on the phones for hours figuring it out.

      If, on the other hand, you start using all new libraries and don't bother to get them vetted or even tell the prod teams you are using them, then you deserve every minute you are on the phone debugging software on servers you don't have access to.

      Developers, however, need to stay off production machines unless the company is so small that there is no other choice. Reason #1 is that you are not going to be on the phone supporting that software for the next 10 years and you being locked out of production is the first step in you learning to write something that works as well as it can on release, as opposed to maybe a year from now.

      Reason #2 is that unless your company will actually fire a developer for fucking up production (and most won't), you don't want unaccountable people messing around on your system. Production people get paid and bonuses based on their ability to keep things up, developers don't. If you take out production because you wanted to test something out against a production data set, or because you think you're smarter than a system administrator and feel like installing Oracle Standard edition in your user account on a production host is "a good idea", you need to GTFO out of production and forget that you even know the host names.

      And I wish what I was talking about was just some shit I made up and wasn't from my actual experience working with developers. Some developers are very good at what they do and still wouldn't know how to operate a UNIX server to save their lives. Some know just enough to be extremely dangerous. And others are just fine and you can trust them.

      However, how to you explain to a developer whom can't trust that other guy is okay, but they are a walking production outage? Trust me, even after fucking up production, they still whine about not being able to check stuff in production. Better to not let any in at all.

      So, how about this? You're the developer. Write useful diagnostic tools for your own app so you don't need to login to a server. Even I don't log into hosts to troubleshoot things unless I can help it, and I have the root passwords to all of them.

    64. Re:Why not use tools that help do it? by liquiddark · · Score: 1

      You save the $5k on using cheaper hardware in Dev, but cost them $50k in downtime because that difference causes a bug to be exposed in Prod.

      The problem with choosing the number $5k is that $5k is nothing. Spending a quarter mill to save a million down the road makes sense, but you just try making the case to the business some time.

    65. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Yes yes yes, I was just about to login to make the same comment.

    66. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      This question was not directed as consumer application. It is direct at Enterprise applications. InstallShield just won't do it.

      Actually, in my experience InstallShield will do it. InstallShield can be a real PITA to work with, but you can build an installation (for Windows targets) that not only installs the LOB software, but also checks for minimum system requirements and changes the system configuration, while logging the whole thing and providing whatever custom dialogs or configuration files might be necessary to satisfy the prod sysadmins' need for control. Of course, if the company won't pay for that level of sophistication, then it simply won't happen. But I've built just such solutions on contract to install custom LOB software in InstallShield and InstallAware (also not fun to work with) for large corporations, and it certainly can be done.

      That's not to say developers should be the ones actually performing production installations, but there's no reason (other than added development/testing cost) that an InstallShield (or other tool) installation cannot be used for internal enterprise applications.

      - T

    67. Re:Why not use tools that help do it? by Kupfernigk · · Score: 1

      Exactly. Lots of people write scripts for automating little jobs, but I do not want the sort of person who is likely to be doing an install messing with my install scripts!

      --
      From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
    68. Re:Why not use tools that help do it? by udachny · · Score: 1

      its called job security

      Oh, come on, trace the comments all the way to the top and then read again, you are talking about a couple of boy scouts there.

      It's called a typo.

    69. Re:Why not use tools that help do it? by RabidReindeer · · Score: 1

      all production code had to be compiled and installed from source handed over to the Operations staff.

      Which would mean that the Operations staff would also need licenses for the compiler if it is licensed per seat.

      I can tell what OS you're running, if that's an issue.

    70. Re:Why not use tools that help do it? by UnknownSoldier · · Score: 1

      Agreed.

      Time to coin Murphy's Law on Software Deployment? :-)

      "In theory dev, test, and prod are in sync, in practice they rarely are."

    71. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Amen.

      Worked at a very large financial institution, which, during my time there, compartmentalized things to an insane degree. Good in principle, lousy in practice, mostly because a) the people hired for everything except development were nearly all incompetent and b) the compartmentalization introduced problems that were beyond the limited technical abilities of the people in charge of installing stuff.

      As an example, a simple DTS package, running perfectly under the old MS Server 2003, needed to be upgraded to run on the New! Improved! Server 2007 ... and, being sidelined as a mere developer, was amazed that the people responsible for the move were unable to do so ... for nearly a year. Grant access to testing or production? Heavens no! That would violate the security book they had written.

      The group responsible for version control, across multiple platforms, had a gawd-awful tool that drove developers to drink. I am not exaggerating when I say people - mostly contractors - quit, after dealing with the process-obsessed idiots running this system. The IT production support group had, at one point, simply coded over-rides to test libraries (for the mainframe), so that fixes could be implemented. Several months after I left that department, there was a memo to the effect that the Version Control group has instituted a rule prohibiting override libraries. I also noted that the overtime bill for the Prod Support group increased by an order of magnitude for the next several months, and actual development slowed to a crawl, until this helpful rule was repealed.

      There's a lot to be said for separating the duties. Conversely, the amount of inefficiency introduced by doing this can reach levels worthy of a Dilbert strip.
      If the process is taking too long, then the process needs to be fixed. It should be a simple series of steps to get something approved and moved; if not, adding more people is NOT the solution.

    72. Re:Why not use tools that help do it? by lister+king+of+smeg · · Score: 1

      Umm that was meant to be joke. Although I do have a professor that as a retired programmer recommends stripping out all comment from code and replacing them with subtly changed ones that all indicates variables do the exact opposite of what they do and to obfuscate as much (non open source code there he considers it a douchy thing to do)as possible so that you become to valuable to fire because if your gone they can't hire you to write the code and then fire you and have someone cheaper replace and simply maintain and use your code.

      --
      ---Saying gnome 3 is better than windows 8 not so much a compliment as it is damning with light praise.
    73. Re:Why not use tools that help do it? by Sir_Sri · · Score: 1

      pretty much.

      Seriously.

      These are like co-op and part time positions for people fresh out of high school who are trying to get some money to pay for a college diploma in being a linux tech guy. I didn't realize how big a market that was until one of my friends got a gig doing hardware installs at a linux shop just bought by cisco. They had about 20 guys manually doing installations for about 30 servers a month (each), a lot of the job was physically connecting the servers, which needs to be done anyway, but the software side was to put in a red hat CD and attend the installation.

    74. Re:Why not use tools that help do it? by rthille · · Score: 1

      Not BS. I didn't specify what was involved with each of the installations. Sure it's automated. Did you think the devs/qa/ops guys waved their hands and focused cosmic rays to write to the disks? But someone at least still has to click "install". Or type "sudo apt get ..." or whatever. My post was about proper _responsibility_ and _tasking_, not what those responsibilities and tasks involved.

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    75. Re:Why not use tools that help do it? by jrumney · · Score: 1

      This question was not directed as consumer application. It is direct at Enterprise applications. InstallShield just won't do it.

      Why not?

      This points to a problem amongst "enterprise" developers. The reason situations like this article arise is that enterprise developers frequently do not put effort into making their software into a polished product. This includes skipping such crucial things as:

      1. Product Documentation.
      2. Installation packaging and documentation.
      3. An attractive and usable user interface
    76. Re:Why not use tools that help do it? by JonySuede · · Score: 1

      amen !!!!

      --
      Jehovah be praised, Oracle was not selected
    77. Re:Why not use tools that help do it? by JonySuede · · Score: 1

      As an example, If you have 4 developers, there will be 4 different versions of Java in use, and none of them will ever be the corporate standard.

      That is a good thing as it brings robustness. As an architect I encourage my devs to use as many as java version as possible. The build machine (me by proxy) has the last word on the jdk and QA on the jre.We also auto-deploy to 5 different applications server in development even if we only use 2 in test and 2 in prod. We do that since our anecdotal evidences have shown us that the more execution environment your application is tested through the better it gets.

      --
      Jehovah be praised, Oracle was not selected
    78. Re:Why not use tools that help do it? by Rich0 · · Score: 1

      Agreed. Alas, I suspect that at most big corporations things are fairly broken.

      We run into these kinds of problems at work. I have no confidence at all that we have any production-equivalent environments. We also use incremental install processes such that building a new server is like replaying the entire development history of the project (maybe skipping steps that we hope are safe to skip).

      Companies just aren't willing to pay for GOOD configuration management teams. If everything were checked into a good source management system, and server builds were fully automated, and servers could be cloned from saved images, then you'd know that if you ever had a disaster or needed an extra server it would be a 15 minute operation.

      Most companies probably don't realize it, but if they had a real disaster they'd be really up the creek.

    79. Re:Why not use tools that help do it? by Rich0 · · Score: 1

      You don't need to have the developers watch the configuration team install the software. That is because it is all automated, and they install it on a production-equivalent test system, and you then get to test everything they installed. If the install is bad you wipe it and start all over again. That isn't a big deal since your tests are automated too.

      If it installs fine on test it will install fine on production, since the only thing done differently is to point the script someplace else.

      If your install procedure isn't scripted to this degree, then you really have no idea what you have in production, and if something happens to it whatever you do to fix it will not have it end up the same way, since you have no idea what it was to begin with.

      Too many companies treat servers like sculptures crafted over weeks by a master craftsman. They should be injection molded pieces of plastic whose tolerances are way higher than they need to be.

    80. Re:Why not use tools that help do it? by Kalriath · · Score: 1

      No you can't. Offhand I think Intel's compiler runs on pretty much every platform. They aren't referring to Microsoft .NET, where the compiler actually ships with the OS not the IDE.

      --
      For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
    81. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 1

      They usually aren't hardware wise for budget reasons, hardly ever are configuration and environment wise (considering other running programs as part the environment) and they definitely aren't identical user base wise.

      Being told for the nth time "We didn't budget for a test licence" or "That's handled by the vendor webservice. We only have 1 set of credentials" is a showstopper when trying to maintain multiple test environments. Every PM and BA has been bitten by insufficient testing of some component, so they will damn well insist they have everything, even the bits that their new project doesn't touch. When you're supporting n project streams and can only provide certain parts of the environment to a subset, you're in trouble.

      While I understand devs shouldn't modify anything in prod, denying access to the system to see in real time what the fuck is going on when something doesn't work is just asking for the solution to take 10x, frustration, finger pointing and longer hours (usually the developers and often unpaid).
       

      Seriously, nothing wrong in telling the developer "come down with me, I'll start the damn thing in front of you, you can check a bit of the system to you go back with a clue".

      We were lucky we could still do that at our junior company.

    82. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Clone vm, stand up in a diff subnet, test. Saved me a few times.

    83. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Sounds like vCenter...

    84. Re:Why not use tools that help do it? by Simon+Brooke · · Score: 1

      its called job security make it as nonobvious and convoluted as possible so that your the only person that can comprehend it, that way your unfireable because it will fall apart when you leave.

      I always fire people I suspect of doing that. You cannot afford to have them on the team.

      --
      I'm old enough to remember when discussions on Slashdot were well informed.
    85. Re:Why not use tools that help do it? by ipwndk · · Score: 1

      Not always the case :-)

      The data is hardly ever identical, and that can be troublesome when it comes to DB2 binding. The size an be cause performance issues. Most fun part is when less condiderate developers bind to empty tables. Many laughs are had when the business looses several millions on escalating deadlocks :-)

      But usually it is the developers who mess up. Mess up program and library versions between environments et cetera.

      I work in a core dep., so I often work on libraries - and it happens that people build dependencies in SYST with them and move to PROD. That is entirely their fault, because they did not do the necessary analysis. The PROD guys did their job fine as well; everything compiled. The interfaces just doesn't match up and memory is flinged erronously all around the mainframe. :( Then I have to clean stuff up.

      I'd like a four layered system, with TEST, SYSTTEST, PREPROD and PROD - where PREPROD is a place identical to PROD only used to determine if moved packaged can run with the correct return codes. (Not just a compilation and bind success) Then a final move can be done.

      SYSTTEST is not a safe place, because while it is not for development per say, it is still a place where volatile code resides.

      --
      01 REDEFINE REALITY.
    86. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      I am assuming by "dev" he means the server you test builds on..

      I've made this argument a ton of times.. If the test server isnt running identical hardware as at least one production shard, then first off any stress testing done on it is unreliable at best. Also they'll end up spending more money on rollbacks of production deployments than you would having the hardware specs match. What is the price difference from a dev server and a prod server, max $8k or so? probably more like 2k

    87. Re:Why not use tools that help do it? by SirGeek · · Score: 1

      It also needs to take into account licensing issues. In even a medium sized organization an audit finding an "unlicensed" server could cost MAJOR bucks in fines/etc.

      It may also not be secured to the corporate requirements and they may already have a server that can be used in another group that is already maintained/etc.

      It might cause issues where someone is using "unproven" software for a project (not approved of by a tech/architecture team, etc.) that will either NOW have to be scrapped, or completely retooled because of issues with the software.

      There are a bunch of issues that could cause problems when someone tried to "save time" without going through the channels.

    88. Re:Why not use tools that help do it? by Maxo-Texas · · Score: 1

      I work for a fortune 500 company.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    89. Re:Why not use tools that help do it? by Maxo-Texas · · Score: 1

      But it doesn't.

      The business won't pay for it.

      For some billion dollar customers, the only test data we have a dozen test records set up by hand. No converted data. When the software fails in test, the first thing is to debug it to look for what test data wasn't set up or linked correctly.

      Then you may have a real bug to deal with.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    90. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      I just said the important part is to have one environment that mimics production, not that every single environment mimics production. I meant that your software shouldn't break just because you developed it in dev then tested it later in preprod. The most that should change is a few configuration settings, and then your test is done for the test environment because your preprod is the same.

      I'm not sure how you're able to deploy software without basic reading skills. Clearly I didn't suggest that you go straight from dev to prod and that they both can be completely different.

    91. Re:Why not use tools that help do it? by Culture20 · · Score: 1

      /bin/sh ./configure
      /usr//bin/make
      /usr/bin/make install

      If the make fails, a non-advanced linux guy will freak out, call an advanced linux guy who will promptly ask why they absolutely must have feature $foo in the latest version of $app instead of using the stable version in the distro's repo. If the answer is good, advanced linux guy will install the missing headers (or correct some broken C code). Otherwise, the stable app will be installed via apt or yum.

    92. Re:Why not use tools that help do it? by miltonw · · Score: 1

      I just said the important part is to have one environment that mimics production, not that every single environment mimics production. I meant that your software shouldn't break just because you developed it in dev then tested it later in preprod. The most that should change is a few configuration settings, and then your test is done for the test environment because your preprod is the same.

      I'm not sure how you're able to deploy software without basic reading skills. Clearly I didn't suggest that you go straight from dev to prod and that they both can be completely different.

      (Talk about "reading skills".) What you actually wrote:

      The important part is to have one environment that mimics production. The rest can be completely different and if your software doesn't suck ass then it won't break.

      Which one environment "mimics" production? Hmmm? DEV? TEST? Something else? You would actually waste your time developing in an environment that was "completely different" from production? Every hour programming in such an environment is an hour wasted. Or, were you saying that DEV was the one environment that "mimics" production and TEST is completely different? In that case, every single test done would be useless, meaningless and invalid.

      Or were you actually thinking you'd develop and test in the "completely different" environments and then do some kind of a "test install" in the "mimic" environment? That's a total nightmare scenario.

      Obviously, you have no real world experience in development, testing or deployment in a production environment. If you actually were in charge of a IT department and ran it like you propose, the company you worked for would be out of business in no time.

    93. Re:Why not use tools that help do it? by Anonymous Coward · · Score: 0

      Which one environment "mimics" production? Hmmm? DEV? TEST? Something else?

      I didn't think it'd be so hard for your brain to process, but you should read that as "at least one", and it should be the environment that is closest to prod (so in our case, it was preprod).

      You would actually waste your time developing in an environment that was "completely different" from production?

      I said they *can* be, not that they *should* be. As in, if you cannot release software properly simply because -only one- of your multiple environments doesn't match 100% what is in production, you are a complete idiot and should be shot.

      Generally, there are no issues found when moving the software from the test environment to pre-prod. Occasionally, we may have an intern who wrote an IP in the config file instead of the hostname, so we change that and everything Just Works, because pre-prod matches what is in prod. Even that is more likely to get caught during code review (before code even leaves dev) than after.

      The world isn't going to explode because SQL servers are on VMs on the dev network rather than on a cluster. Just like your software shouldn't break because there was a slight change on the production environment. That's what your pre-prod is for, so you can run the same tests prior, on an environment that matches, in a deployed setting.

      Obviously, you have no real world experience in development, testing or deployment in a production environment.

      And obviously you're a six-legged midget incapable of rational thought. You must speak from experience because I have no doubt that you could have personally crashed many businesses if you put your mind to it.

      Continue assuming shit about me if it makes you feel better about your developers. Who apparently cannot handle that the SQL server on dev isn't running the latest service pack during the first week of development.

    94. Re:Why not use tools that help do it? by cwsumner · · Score: 1

      Do that, and you get stuck working on the same software forever! Bad idea...

      And, if you change your mind and want to train someone else on it, it is a lot of extra grunt work to fix.

      Do it right, hand it to the peons, and get to do more. And get to have a team to run!

  2. Darn by Anonymous Coward · · Score: 5, Funny

    and I'm not all that familiar with Agile

    I'm jealous.

    1. Re:Darn by Anonymous Coward · · Score: 0

      Yep, he's pretty damn quick and nimble.

  3. Key Sentence by Anonymous Coward · · Score: 1

    "I'm talking about enterprise grade, Internet facing web services sold to end users"

    If it is a web application, and if they are internal customers - if the software is being written by one department of the company for other departments to use - and if the software is properly documented by the developers, I don't have a problem with the developers deploying it.

    Otherwise, um, yeah, the deployment/installation manual should document it well enough for an outsider to be able to install it.

  4. I'm of two minds about this by Omnifarious · · Score: 4, Insightful

    My answer is mostly 'no'. The only benefit I see is that developers will become more motivated to have a simpler and better installation process. And that's a pretty nifty benefit.

    But I've been on both sides of the fence. I've rarely been a developer who did anything less than thorough testing before declaring something 'done'. But I know that I'm an incredible rarity in that way. And on the devops side of things, the less ability developers have to push things, the more likely decent QA will get done before stuff ends up in production. But developers frequently also give you installation instructions that are unrepeatable special case installs with rollback instructions that make no sense.

    I think that one good way to balance this is to have a preliminary test environment into which developers are allowed to push things. They are given limited rights to this environment, basically just the ability to upload some software and run a deployment script. This encourages them to write functioning deployment scripts. But it prevents them from shoving things into production because it just 'has' to go out today and it's such a small, low-risk thing. Of course it'll work!

    1. Re:I'm of two minds about this by Anonymous Coward · · Score: 1

      I agree with this. I am a Web Application Development Team Lead and this is what I push for. You need to have one system that you can deploy to so that you can actually test the deployment, but after that it should be handed off and only the deployment script should be needed to deploy it.

      In my company, we don't have this hand off, although I would really like to have it.

    2. Re:I'm of two minds about this by hawkbat05 · · Score: 1

      I'm mostly in agreement with Omnifarious. I've seen developers who are actually incapable of following the same instructions provided to customers to install the software they work on. Developers should definitely be put in the end Admin's seat once in a while, I don't think it should be a permanent thing though. It should be seen as a learning experience for the developer in UE.

    3. Re:I'm of two minds about this by dkleinsc · · Score: 1

      Basically, there are 3 separate but related roles that may or may not be handled by the same person depending on the organization size.

      1. A developer is responsible for writing and documenting their code in a way that it can be deployed reasonably easily.
      2. A build manager (also called "change control") is responsible for managing and deploying changes to different environments.
      3. An administrator is responsible for ensuring the overall health and security of the environments being deployed to.

      Ideally, there's negotiation involved between each of these 3 groups. For example, if a developer wants to depend on a new package, there should be a discussion with the administrators on whether this package is a good idea. Separation of roles means that it's impossible for one person to simply impose their views on the organization.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    4. Re:I'm of two minds about this by Omnifarious · · Score: 1

      I think this is a really good way of thinking about it. Because sometimes it does really serve the organization's needs the best to push a change without adequate testing. It's just much less often than the developer generally thinks it is. And you're right, this separation of roles keeps everybody honest.

    5. Re:I'm of two minds about this by Cassini2 · · Score: 1

      In controlled situations, it can be a really good idea to send developers out to customers sites. It yields insights into what the customer and support staff are actually doing. This can be widely divergent from the developers initial expectations and specifications.

      In one case, someone installed the system with a heavy duty industrial monitor mounted such that it faced away from the operator. This significantly complicated system operations. Unfortunately, that was only the first in a long line of significant installation problems present in that system. Purchasing a black and white printer to print color print outs was another issue. It took me weeks to get my software running properly in that environment.

      On the other hand, if the developer cannot explain how to setup the software, then that also indicates some issues. In the case of the above system, the customer said they wanted to purchase software, but what they really needed was significant application engineering assistance.

    6. Re:I'm of two minds about this by Burning1 · · Score: 1

      My answer is mostly 'no'. The only benefit I see is that developers will become more motivated to have a simpler and better installation process. And that's a pretty nifty benefit.

      In practice, I find that the opposite of this is true. A good developer understands their software pretty well, and can generally get it going fairly quickly without the need for a good install process. I find that when the install process needs to be handed off to another team, development is better motivated to make the install process simple and smooth, so that the handoff doesn't require a lot of documentation, and is less likely to need to be rolled back.

      I find this is true even for my own projects (I do dev-ops.) For my test environments, I'm usually pretty casual about tracking dependencies, packaging, etc. Where I put a lot more effort into making sure that my production deploys are clean and well documented (it helps avoid 3:00AM calls, among a lot of other benefits.)

      The best case I experienced, was at a previous company where the QA team maintained their own testing environment. They would perform a full deployment and upgrade of the software before it was handed off to Ops. Deployment issues would be filed back to development. The result was one of the cleanest and smoothest series of software deployments ever.

    7. Re:I'm of two minds about this by Omnifarious · · Score: 1

      I think there is something to be said for three environments. Developer test where developers do their own deployment, QA test, where another team does the deployment, and production. I think that the developer test environment should be further restricted so developers do not have the freedom to fiddle the deployment after the fact. You provide the package, hit the button, and if it doesn't deploy properly you have to fix your package and try to deploy it again.

      It's possible that you cannot make a deployment process as simple has pressing the 'deploy' button after specifying a single package file. But if that's the case, you should strive for that level of simplicity and give the developer the absolute minimum permissions necessary to do whatever it is that is needed. No hand-fiddling the software after the set process is finished.

    8. Re:I'm of two minds about this by Omnifarious · · Score: 1

      I'm a strong proponent of sending developers to meet directly with customers and see what they're doing in their environment. But I think that's a separate issue from installation, deployment and setup. It should be made absolutely clear to a developer that if they're troubleshooting they need to be extra vigilant about making sure that whatever they did is documented thoroughly so it can be replicated elsewhere, or so others can pick up where they left off with that customer.

      My advice though was mainly geared towards places where the customer is at a remove. Mainly web app shops, though it can also be applied (with modifications) to shrink-wrap software (which includes Open Source package manager packages).

    9. Re:I'm of two minds about this by Burning1 · · Score: 1

      Generally, we let the developers do what they like in the test environment, since it typically has resources that their own sandboxes don't (e.g. database back end.) With that said, I'm personally in favor of a periodic re-flash of the dev hosts, so that they don't stray too far from production.

  5. ITIL by Anonymous Coward · · Score: 2, Funny

    If you're following anything remotely like ITIL, your service transition phase should have an output that includes the processes for use in the operational phase of the service, including installation and upgrade procedures.

  6. My persepctive by Sparticus789 · · Score: 5, Insightful

    As a systems administrator, nothing frustrates me more than when a developer sends me an e-mail that says "install this".

    First, they do not always say what the software is supposed to do, so I cannot prepare for any security requirements. I am rarely told if it needs a port opened, I have to check the security logs to see if the software is trying to communicate through the network.

    Second, while I may have the ability to fix their software, I prefer not to mess with their code or configuration. Since I may not know what their software is supposed to do, I may get it running I do not know if it is operating properly.

    Third, if you are asking me to install alpha or beta versions on a live system, it's usually a bad idea. I have no problem installing it on a test server or a VM, but I hate putting it on a production box.

    --
    sudo make me a sandwich
    1. Re:My persepctive by ccguy · · Score: 1

      As a systems administrator, nothing frustrates me more than when a developer sends me an e-mail that says "install this".

      Try to see it from the developers perspective. Usually you are someone who expects to be given lots of info, but for security reasons and others (typically that you are staff and the developer is likely to be a contractor, so you can't be bothered) won't tell the developer very important stuff he needs to know about where the software is deployed, including system configuration details, what other stuff is running there and so on.

      Also, very often getting a meeting with you is harder than meeting the Pope. When/if the developer gets the meeting you tell him that his software is one of the many you need to deal with (as opposed to him, which one cares about his little program) so you are basically not prepared to accommodate him at all. For example if a library is being used and it needs to be able to have 1024 open files or whatever and your decided someday that he limit was 512, the developer is fucked. Meetings and more meetings, involving bosses, to have that limit raised.

      Did anyone bother to mention limits in production that aren't there in dev? No. I'm still waiting to see that kind of requirement detail in any project.

    2. Re:My persepctive by Ravaldy · · Score: 1

      I disagree with the BETA comment as in most enterprises I have worked in, there comes a point where new internal software needs to be tested by the actual users for proper feedback to be received before final deployment. Refusing to install BETA versions in a controlled test environment is just plain dumb and hinders the progress of such project.

    3. Re:My persepctive by Sparticus789 · · Score: 1

      In some environments, you are 100% correct. Not in my environment, which the developers are not contractors and as the systems administrator I have full control of the boxes, as long as they do not want some sort of terrible security practice (telnet, password123, etc). In a more restrictive environment, you are 100% correct.

      When I get the e-mail from a developer, I hunt them down to figure out what exactly is going on, what the software does, etc. Then I bring up the logs, install it, and watch them try to use the software. I use the logs to find any settings which have to be changed, usually changing them before the developer even e-mails me.

      --
      sudo make me a sandwich
    4. Re:My persepctive by RabidReindeer · · Score: 1

      As a systems administrator, nothing frustrates me more than when a developer sends me an e-mail that says "install this".

      First, they do not always say what the software is supposed to do, so I cannot prepare for any security requirements. I am rarely told if it needs a port opened, I have to check the security logs to see if the software is trying to communicate through the network.

      Second, while I may have the ability to fix their software, I prefer not to mess with their code or configuration. Since I may not know what their software is supposed to do, I may get it running I do not know if it is operating properly.

      Third, if you are asking me to install alpha or beta versions on a live system, it's usually a bad idea. I have no problem installing it on a test server or a VM, but I hate putting it on a production box.

      Sounds like a developer's reaction from users who send emails saying "it doesn't work."

      I hope you're a fairly small, informal shop, because places where I work require at a minimum, managerial approval before installing anything.

      A first-class installer will include the mods to the firewall and system config files (and, ideally, been vetted by someone capable of spotting unauthorized mods). One of the things I like about RPM is that it allows all that, plus the ability to list what was done and validate that it wasn't tampered with.

      While I hate putting Beta code on production servers, sometimes emergencies require it. However, since all my builds produce installable packages and the packages are designed to be binary-identical whether installed on a production machines or test ones, the run environment is relatively safe, even if the code isn't the best quality.

    5. Re:My persepctive by Anonymous Coward · · Score: 0

      It kind of blows my mind how sys. admins. have been out posting and out modding developers in this thread. Apparently ya'll have a lot more time to be posting on slashdot than the developers do.

      Maybe you can handle a bit more work to save the devs some time.

    6. Re:My persepctive by Anonymous Coward · · Score: 0

      As a developer nothing frustrates me more than when software/services the dev. team unexpectantly stop working because some sys. admin. decided to get over zealous with blocking without informing anyone who might be affected.

      IRC? *yoink*

    7. Re:My persepctive by Sparticus789 · · Score: 1

      I disagree with the BETA comment as in most enterprises I have worked in, there comes a point where new internal software needs to be tested by the actual users for proper feedback to be received before final deployment. Refusing to install BETA versions in a controlled test environment is just plain dumb and hinders the progress of such project.

      No problem with installing beta versions in a test environment. Admittedly I put the most important description of the system at the end of that sentence.... "production box". The developers I work with have a test server (that I maintain) with their sandbox for controlled testing. However I was more focusing on live systems that other people use regularly.

      --
      sudo make me a sandwich
    8. Re:My persepctive by SkimTony · · Score: 0

      I tried to see it from the developers' perspective, but I can't get my head up there. Sorry.

                Seriously, though, the developers need to know their software, and write adequate documentation. Be able to tell me which TCP or UDP ports your software uses, and what is carried over those connections. Be able to tell me what the start-up order should be for the services or daemons that your software uses. If you need to be able to have 1024 open files, document that. If your code needs to be able to write to a particular directory, document it! Does your code need to run as root/Administrator? You should probably start over. But if you can't start over, include that requirement in the documentation.

                That way, when it comes time to do the install, I will have all the prerequisites completed, and the install can proceed smoothly. Otherwise, you're going to have to wait while I go beg the Security office for a variance and Change management for permission to have the firewall modified with no lead time, and I do not enjoy being in that position. Yeah, I'm sure "it's easier if the service just runs as an Administrator." It's easier if I don't lock my doors, too, but that's not really feasible in the real world, is it?

    9. Re:My persepctive by Sparticus789 · · Score: 1

      We are a pretty small and informal shop. Our managers only require approval if we will be violating or circumventing any sort of security policy with the intended operation. So if I wanted to install some sort of P2P or VOIP client, they would have a fit. However if I am just adding another Apache instance, updating Perl, or throwing in some .jar files, there are no problems with it.

      And yes, while I am sure most developers see such simple e-mails, I've always found it best to start "script" before I install anything, that way I can show them the exact error message.

      --
      sudo make me a sandwich
    10. Re:My persepctive by Anonymous Coward · · Score: 0

      I agree with you entirely. OTOH I've had instances where a sysadmin claimed it was beyond their scope to determine if the MS SQL database on the server they just patched and rebooted is responding to requests before going to sleep. There's got to be some balance and expectation that you can look into the simplest of sanity checks on server software.

    11. Re:My persepctive by rednip · · Score: 1

      As a systems administrator, nothing frustrates me more than when a developer sends me an e-mail that says "install this".

      When they do that send them the 'form' for such requests, just be sure that it has clear instructions, The form itself shouldn't be too hard to put together as many developers will, in the absence of other processes, put together a release plan based on previous companies, just pick the best one (or logically combine a couple of them).

      Third, if you are asking me to install alpha or beta versions on a live system, it's usually a bad idea. I have no problem installing it on a test server or a VM, but I hate putting it on a production box.

      As a system admin if you are making that decision then there is likely something institutionally wrong with your company's IT strategy. What to release and when is a QA/management issue in most places.

      --
      The force that blew the Big Bang continues to accelerate.
    12. Re:My persepctive by RabidReindeer · · Score: 1

      And yes, while I am sure most developers see such simple e-mails, I've always found it best to start "script" before I install anything, that way I can show them the exact error message.

      Bless you, my child!

      Full conversation (this actually happened!)

      User: It doesn't work
      Us: What doesn't work?
      User: The program!
      Us: What's wrong with it?
      User: It's broken!
      Us: What do you mean, it's broken?
      User: It doesn't work! Fix it!

    13. Re:My persepctive by L4t3r4lu5 · · Score: 1

      Third, if you are asking me to install alpha or beta versions on a live system, it's usually a bad idea. I have no problem installing it on a test server or a VM, but I hate putting it on a production box.

      The fact that you even entertain the thought is a bad sign; Either you're incompetent, which I don't think you are, or you lack the authority to say "GTFO", in which case you should get it.

      Test software goes on test systems. Anyone who says otherwise should be reported to the CIO. If it's the CIO saying as much, run away as fast as you can, because you'll get the blame when shit breaks.

      --
      Finally had enough. Come see us over at https://soylentnews.org/
  7. It depends by stackOVFL · · Score: 1

    In the straightforward case a distribution package should be made and that could be used by just about anyone to install the software (SW). In other cases, depending on the target system, it may be more technical. If the SW interacts with other SW (like a database or some data collection app) quality checks must be completed to ensure the overall systems stability. There are also platform specific issues to be concerned with. It's also a very good idea in some situations to have the developer install the application as they should be performing other quality control steps (like cleaning temp files and other old log files).

    1. Re:it depends by Anonymous Coward · · Score: 0

      The key is to think up front about ...

      Everything. If it is planned well, it will likely be managed well.

  8. Not all developers are smart by i+kan+reed · · Score: 1

    Let's face it, some developers lack IT skills. Most of us have the understanding and appreciation of operating systems, security, and software to manage a safe environment, but some don't.

    We also have peculiar environment requirements from time to time, and great need to experiment with different software setups in the course of our work. Engineers will make problems for IT, no matter what. The natural conclusion is to standardize as much as you can, grant admin access where you can't, and be prepared to put out some fires.

    1. Re:Not all developers are smart by Darinbob · · Score: 1

      Let's face it, many IT goons also lack IT skills. Because let's face it, IT right now is a commodity job where the cheapest people are hired as long as they have the right certificates and the VP of IT has been to all the Microsoft indoctrination seminars.

      It's not just a developer problem, extend this to engineering as a whole and also manufacturing. Those are areas where standardizing to Windows+Office+Exchange doesn't work.

  9. On Big Projects... by ZombieBraintrust · · Score: 1

    On Big Projects intalliation is team effort that takes several hours over a weekend to install at one location. On some projects building the application is a full time job for a "build" lead.

  10. Developers shouldn't have production access by Richard_at_work · · Score: 5, Insightful

    Title says it all - giving a developer access means they can deploy undocumented "hacks" and "quick fixes", usually meaning to document and normalise them later on.

    Forcing the, to hand off installation and maintenance to a second team means documentation is enforced, standards are enforced and quick fixes are better vetted.

    For the record, I wear both hats in different situations for different clients - as a developer I don't care about the production environment, and I like it that way. I care about the bugs the production environment uncovers, so the UAT environment should be identical, but even then the developer shouldn't have to care about it - that's the systems admin teams job.

    1. Re:Developers shouldn't have production access by Richard_at_work · · Score: 1

      Oh. It's worth noting that my approach is not to consider "Production" as one single environment - typically I recommend the UAT, testing and infrastructure development environments to be classed as near-production, and thus fall under the same restrictions as "production".

      I usually give developers their own environment identical to UAT where they have full rights to do whatever in - this allows them to create the full documentation for deployment to production, including permissions changes required etc.

    2. Re:Developers shouldn't have production access by Anonymous Coward · · Score: 0

      as a developer I don't care about the production environment,

      Yikes.

    3. Re:Developers shouldn't have production access by Richard_at_work · · Score: 1

      What's "yikes" about that statement? The production environment should be managed by people who have a wider set of goals than "this app should work to spec" - they are looking for deployability, stability, resilience etc etc etc.

      As a developer, I should hand them my app, with a documented install routine and set of environment requirements, and the sysadmins should go from there.

      Remember, your "production" environment is not one environment - you have identical test, UAT and (very important for large businesses) business continuity environments. The bones of these environments are something that a developer shouldn't care about - its the systems team that sets them up and manages them, the developer just has a set of requirements to hand them for his app.

      If the app runs in development but not in production, then that's a bug to be resolved, and ideally should be resolved on the developer end wherever possible because you do not want highly custom environmental changes for individual apps - that creates huge maintainability issues further on down the road.

    4. Re:Developers shouldn't have production access by JASegler · · Score: 3, Insightful

      I've been in companies that practiced it both ways.

      Company A) Developers can never ever access production no matter the reason. The end result in that situation was bugs that couldn't be reproduced on the desktop or in the QA environment. The problems went on for months until I had a lucky break of a developer moving jobs into the system admin role of the production environment. When he looked things over he discovered the previous admin had not configured things in production properly. To the point of lying about it when I had sent a previous check list of things to verify. If I had access to the systems the problem would have been resolved in a few days rather than months.

      Company B) Developers own the software and hardware from end to end. In my current company we have to package the software up into a deployment system and deploy it that way. However we do have full access to all the systems. Can/do we do hacks and quick fixes? Yes, if the situation warrants it. But in the end it has to get rolled into the official distribution for it to be correct. Can it be abused? Yes. But that is why the culture of the company become very important. In the end you either trust your developers to do the right thing or you don't. If the company can't trust the developers to have ownership of their code and systems.. Well then at least for me I would say I'm working at the wrong company.

      FYI, I enjoy working at company B far more than I ever did at company A. Given a choice I will never go back to an environment where developers don't have access to production.

    5. Re:Developers shouldn't have production access by TheDarkMaster · · Score: 1

      I totally agree. By the comments above I suspect that the problem is actually the lack of quality developers, if you only have "script kiddies" then makes sense to keep the production environment away from them.

      But what happens when is the admin of the production environment that does not know what he's doing? And when the developer knows what he is doing but can not do anything because his hands are tied (without access to production)?

      --
      Religion: The greatest weapon of mass destruction of all time
    6. Re:Developers shouldn't have production access by Anonymous Coward · · Score: 0

      I don't think that was quite the question. What you answered was "Should developers be able to access the production environment?" However, the question is more of, "Should developers own the deployment?". I would say absolutely not. Someone else should always own deployment. Developers should be consulted when the deployment fails, and the developer should have appropriate access to support that deployment (your problem in company A), but that doesn't mean that they should own that deployment (and I don't think you do in Company B). First, if you own the deployment, you end up on the hook for a lot more of the support. You can find someone with a much lower pay grade to deploy software and do that level of support, so forcing developers to own it is a major waste of resources. Second, if the developers are moved to other projects, you don't want to have those deployment details in their head. They'll forget something, and some time later, you'll no longer be able to deploy it.

    7. Re:Developers shouldn't have production access by JASegler · · Score: 1

      We do own the contents of deployment but not the mechanics of deployment. That means we setup software into packages the deployment system can consume. We identify what set of packages goes into an environment. We choose which environments go on which hosts. The actual deployment is kicked off via a web UI.
      The merchanics of the deployment then worry about copying the data over and running the deployment scripts.

      If something goes wrong with the automated system it is someone elses problem. However if something goes wrong with the scripts in the package we are deploying it is the devs problem.

  11. No way by Anonymous Coward · · Score: 1

    Separation of duties is important. Developers should be developing. Release people should be releasing, and there should be controls around that.

    1. Re:No way by BVis · · Score: 1

      So let's say I'm a developer.

      "Hey, boss, I've written this code you want. Who's doing the QA on it?"
      "You."
      "OK. What about the functionality testing?"
      "Also you."
      "..OK, what about the security testing?"
      "You again."
      "... uhh, OK, what about compatibility testing?"
      "Which part of "No, you aren't getting any QA resources, testing resources, engineering backup, DBA staffing, IT support, or project management" are you having trouble with?"

      It would be great to work someplace where there was a sane amount of separation of duties. Most people are lucky to get a testing server that's an ACTUALLY PHYSICALLY SEPARATE MACHINE from the production server. The truth (at least in my experience) is that the question in TFA is irrelevant, since if the developers aren't doing the installations, nobody is, since there IS nobody else.

      --
      Never underestimate the power of stupid people in large groups.
    2. Re:No way by Anonymous Coward · · Score: 0

      Sounds like you're lucky they remember to pay you... or not since you're probably the guy signing the check, too.

  12. Pros and cons by pr0nbot · · Score: 1

    I've no experience of a company large enough to have a whole separate set of people to do installations, so my comment is from the small company experience.

    Problems will get fixed faster if the developer has access to the installation and is familiar with the environment. Live environments are never the same as test environments, so for software above a certain level of complexity there are likely to be site-specific issues.

    But it takes a good developer to tread carefully around a live system and to then retro any fixes back into the code base and test it. A methodical release/report/debug/fix/rerelease cycle -- whether or not it's the developer doing the installing -- might be slow and tedious but will have a lower chance of regression errors. It depends very much on whether the customer can afford/tolerate the time and disruption to live systems involved.

  13. It should be intuitive by sandytaru · · Score: 1

    If the dev team did their job right, installation of the software should be easy enough to have no more than a one page instruction sheet with some basic guidelines. Even horribly complicated apps, like a client/server AV, can be deployed on a network with minimum fuss when the software is built right. If I'm having to go in and adjust registry settings manually for your software, your development team is doing it wrong.

    --
    Occasionally living proof of the Ballmer peak.
  14. Depends on the IT environment by Anonymous Coward · · Score: 1

    I work as a Business Analyst in a large insurance centric company. We have developers that write or supervise other developers, DBAs that manage a large database and a staff of developers responsible for installing everything from Microsoft updates to custom code for both client facing (web based applications) to internal locally installed applications. I have seen that each silo can be either a help or hinderance to the process. I invite developer or deploy specialist to come into my area during the deploy process, this has immensly helped their understanding of the unique situation faced by each business area. Smaller operations would surely have different needs.

  15. No. by Anonymous Coward · · Score: 0

    No.

  16. NO! by smooth+wombat · · Score: 2

    Speaking from personal experience, the last person you want randomly installing software is a developer. You would think that because they work in IT they would know what they're doing, but you would be seriously wrong.

    Time and time again I, or the folks I work with, have had to figure out what the developer did when we gave them admin rights to install software and now have a problem. It's tedious, time consuming and generally fruitless as the developer doesn't remember what they did. In the end, we end up having to remove the software anyway and start from scratch, now having wasted two to three times as much effort to do it right than letting a developer do it themselves.

    --
    We will bankrupt ourselves in the vain search for absolute security. -- Dwight D. Eisenhower
    1. Re:NO! by Anonymous Coward · · Score: 0

      A developer should be keen enough to be able to install his own stuff onto a virgin box unaided, otherwise it is my opinion the developers product is not deliverable. The developer needs to be cognizant of the fact that not everyone has vbs314.dll on their system and their stuff is unlikely to work most of the time.

  17. Seperation of duties by SQLGuru · · Score: 3, Insightful

    If it's enterprise class, you have a team responsible for the stability of the servers (support) that is not the same as the developers. Sometimes, you even have a team responsbile for just deployments (depends on size of the org). The developers should have access to install in DEV, but not to TEST. This allows you to test your deployment process (and backout process) before you touch your PROD environment.

    http://en.wikipedia.org/wiki/Information_technology_controls

    Even if not financial in nature, one of my former employers lumped it all unde SOX compliance.

  18. Alternatively ... by eldavojohn · · Score: 5, Interesting

    Developers should concentrate on creating software.

    Totally agreed, environments getting screwed up has lead to a lot of sacrificed man hours.

    There are already tons of tools that help with the install and configuration state of software. Use InstallShield and the various Visual Studio install and config helpers. Visual Studio itself has many debugger functions available, and there are tons of extra helper plugins if required.

    I think that's a bit overkill. Where I work we concentrate on having a unified development environment across boxes. Note that I said environment and not integrated development environment. While the IDE is important, we instead concentrate on maintaining a shell script that points to where things are installed so that there is a commonality in environment variables across boxes. We also like to zip up things that can be just zipped and unzipped and avoid the whole InstallShield mess altogether. So if we're using an agreed upon JDK, we put it in some directory of the zip (like dev/tools/jdkx.x.x) and then in that zip's environment scripts we point at that for JAVA_HOME. Then in Eclipse or Visual Studio or whatever you can tell it to find the preferred java runtime by pointing it at that environment string. In this way, we've managed to keep our development environment diverse with a large toolbox as well as possible to run in Linux, Windows, Cygwin and sometimes OSX (okay, we don't have OSX machines here but theoretically it'd be possible).

    Nothing sucks more than sitting down at some coworkers box to help them and saying "What? Why doesn't this command work?" oh, "I guess I don't have that alias" or "I must have a different version of maven" or "I think I'm missing that Ruby gem" or "I don't know, I messed with Visual Studio a bunch and it hasn't worked since." Those are your nightmare scenarios and we try to make our dev box setup wiki page to avoid that at all costs. Two big things to focus on are a common environment and a diverse toolbox.

    --
    My work here is dung.
    1. Re:Alternatively ... by bluefoxlucid · · Score: 2

      Yeah, all those zips and tarballs are why I cringe when installing enterprise software. The upgrade cycle is vicious and spotty, and when the dependencies change things break in unpredictable ways.

  19. I used to think yes, but not so much by nick_danger · · Score: 4, Insightful

    There was a time in my career that I'd have said yes, the developers make the most sense as they are the only ones that really understand the process. But now I know that's exactly the problem with having developers doing the installs. For a production system you need to have a well defined process that produces repeatable results. The only way to ensure that is to have a separation of duties, whether it's an administrator that's being intelligent hands for a human-readable script, or is simply kicking off a developer provided computer readable script.

    1. Re:I used to think yes, but not so much by Anonymous Coward · · Score: 0

      My thoughts exactly. Unless the development team wants to end up doing tier 1 or tier 2 production support as well, it's in their best interests to create tools and documentation to deploy the application.

    2. Re:I used to think yes, but not so much by Rich0 · · Score: 1

      My thoughts exactly. Unless the development team wants to end up doing tier 1 or tier 2 production support as well, it's in their best interests to create tools and documentation to deploy the application.

      No, unless the people who PAY the development team wants them to do production support for all eternity and be up the creek whenever somebody leaves it is in THEIR best interests to deploy the application on the basis of documentation only.

      Even that isn't enough - the deployment process needs to be rigorous and standardized, so that when you lose 1000 servers you're not digging out 1000 separate binders of install scripts done 47 different ways. Instead you're just firing off your automated install scripts en masse.

    3. Re:I used to think yes, but not so much by phrank · · Score: 1

      I used to be a developer, then I installed my software to production, and now I do tier 1 support. It's a vicious circle.

  20. Keep it separate from developers if you can by trybywrench · · Score: 4, Interesting

    What we do at my company is allow the developers to work with the project managers and deploy their applications out to a test environment for client facing review and acceptance as often as they like. This lets us do new test deployments quickly and easily with no red-tape. Once the project is a go for production then a formal request is made to move to the production server farm. The main guys in Ops, Dev, and the PM are brought into a meeting and make sure everything is taken care of ( SSL certs, DNS, monitoring, load balancing, number of nodes, etc ) then a go, no-go decision is made on the deployment. Once it's been decided that a production deployment is ready then the actual task of deploying the application is assigned to whoever wants it (usually the team lead) since the process of deploying to production is identical to deploying to test in our environments. Also, we use our continuous build server (Hudson) with a production maven profile for actually retrieving the war that is going to the server farm (i do Java web apps).

    My personal preference as a sr.dev is to have other people do the deployments and verification as much as possible. It never ceases to amaze me how often over looked issues are found just because someone other than the person married to the code is doing things.

    My best advice is, regardless of the size of your organization, map out a process on paper and follow it all day every day. You will appreciate the consistency when you get in those situations where a lot of balls are in the air at once.

    --
    I came to the datacenter drunk with a fake ID, don't you want to be just like me?
    1. Re:Keep it separate from developers if you can by Rich0 · · Score: 1

      What we do at my company is allow the developers to work with the project managers and deploy their applications out to a test environment for client facing review and acceptance as often as they like...snip...Once it's been decided that a production deployment is ready then the actual task of deploying the application is assigned to whoever wants it (usually the team lead) since the process of deploying to production is identical to deploying to test in our environments.

      Uh, you hope the process is the same. How do you know the first team followed the same procedures as the second?

      By all means deploy all the prototypes you want, but it isn't "Testing" unless the exact same process is used to install and control the test servers as will be used for the production servers.

  21. Separation of Duties by Kookus · · Score: 1

    You'd fail an audit if the developers installed the software.

  22. No. by dremspider · · Score: 3, Insightful

    When the developers leave and their is no documentation and the thing blows up... No one will know how it works. With handing the product and the documentation off to someone else this provides a final check on the documentation to ensure that the documentation doesn't suck. Developers tend to intimately know their product well and therefore will be likely to leave out steps in the documentation, because they know how to do it anyway. I have seen this a number of times. When they leave it takes reverse engineering to figure out what was done. I am a big proponent of documentation. Here is how I think it should be done:

    -Development happens where they are able to test using a test environment
    -Developers hand off everything to the System Admin (SA) who will install it. They then install it on a test environment as well.. If there are issues found work with the developers to solve the issue, correct the documentation and proceed to step 3.
    -Install in production.

    The only issue with this is step 1 and 2 can sometimes become filled with accusations. SAs think the product sucks and Developers think that the SAs are idiots who need everything spelled out for them. It becomes a lot worst when the developers are contracted out (which is common). This needs to be avoided, both parties should see themselves as working together to create a better product.

  23. Needs to be repeatable ... by gstoddart · · Score: 1

    Software installs need to be repeatable, and need to be something which can be done by someone other than the devs.

    Even for testing, unless you're talking about fully automated testing, it is often good to have someone other than the developer doing the tests. Because in QA if you do something random the developer hasn't encountered or thought of, you can sometimes get very interesting results.

    I can't even begin to think of the number of times where a user or QA does something, files an issue, and the developer says "well why would you do that?" thinking it absurd someone would have deviated from their carefully plotted out use case.

    People develop their own blind-spots to the software they work on, and tend to use it the way you're "supposed" to, and then they miss some corner cases where you do something totally unexpected.

    IMO, if you need your developers to install in Prod, your software is a little on the creaky side and it isn't going to work well for customers. If you need a developer to install it, either you're going to be deploying it in a small number of environments (making it ridiculously annoying to maintain), or there's something broken about how you install.

    --
    Lost at C:>. Found at C.
    1. Re:Needs to be repeatable ... by donaldm · · Score: 1

      Software installs need to be repeatable, and need to be something which can be done by someone other than the devs

      Normally software installation is repeatable no matter what the environment unless you are trying to install software that is being hacked on a daily basis and if that is the case no self respecting System Administrator would allow that software to be installed on anything but what we would call a "Crash and Burn" machine.

      As I have have said in a previous post if you are talking about an Enterprise environment then there are allot of things to consider before you as the System Administrator allow software to be installed. Things like network changes, storage and backups etc. Even then it is essential all interested parties are involved and appropriate documentation and sign-off are in place before you as the System Administrator would allow software to be installed or even updated.

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
    2. Re:Needs to be repeatable ... by gstoddart · · Score: 2

      Normally software installation is repeatable no matter what the environment unless you are trying to install software that is being hacked on a daily basis and if that is the case no self respecting System Administrator would allow that software to be installed on anything but what we would call a "Crash and Burn" machine.

      I've seen software that gets deployed by the developers ... and it usually comes down to a bunch of manual steps and voodoo they don't share with other people. If you need a dev to install it, you have a horrid install process.

      And, in my experience, a lot of developers can still be a little cavalier in dealing with Production machines. Sometimes just simply because they haven't in all cases figured out that Production outages are expensive and Really Bad Things. I've seen developers making manual changes in live environments which have caused outages. But far too many developers still have the mindset of "oh, we'll just do this" and don't always see the world outside of their little bubble and the possible impacts.

      If I'd bought software, and was told it took a developer to install it -- that would be raising huge red flags for me.

      As you say, for Enterprise software ... the change process should be much better thought out than having a dev just go in and make changes. Having been a developer, and having been now on the other side of things, in my experience, sometimes you need to wrangle the devs a little more to keep them on track.

      To me, a dev largely shouldn't be anywhere near your prod environment unless you're 100% sure they're going to do absolutely everything by the book.

      --
      Lost at C:>. Found at C.
  24. Puppetize, Puppetize, Puppetize by Anonymous Coward · · Score: 0

    With the somewhat bigger, more enterprise-y applications hardware and application simply depend on each other in terms of availability, performance and scalability. Therefore, placing this responsibility at just one team (be it developers, be it administrators) will never work. What we've done is use Puppet to automate all server installs (Chef could be an alternative). Every system from development (relying on VirtualBox and Vagrant) to Production uses puppet. A developer simply writes the puppet manifests he needs to get the software working. Then, that is reviewed by the administrator (or devop, so you wish) who may also optimize it here and there for the relevant environments. Once both sides of the game agree, the new puppet manifests are deployed across the relevant environments together with the application itself.

    This also ensures that on development the same configs are used as they are on production (although on development you'll hardly ever replicate an e.g. load balanced setup).

  25. Lesson Learned: No by Anonymous Coward · · Score: 0

    I have been in various enterprise environments as a developer and I would have to say the best environments had a deployment team who were responsible for this.

    By having a team/person responsible for application installation/upgrading they can focus on the responsibility of ensuring things are properly backed up and that installations can be timed properly. By knowing the state of the production servers they can make informed choices about what is going on and typically have the permissions to view logs/set permissions/make server configuration changes that a developer should not have permissions to. This leads to less problematic installations/upgrades I have found.

    By forcing having a documented installation procedure (and post installation configuration too) the deployment is repeatable. If the developer is gone and the application needs to be installed on another server how does someone know what to do? By having that documented and packaged as one unit it should be relatively easy to install ten years down the road if need be.

    Another thing I have found with developers deploying is that they may shoehorn a project in. Some examples are turning on debug messages to diagnose a problem and never turning it back off which can be a security issue. They may also patch things on the fly without documenting that, the next person to deploy may not know that step was done and overwrite a change or run into the exact same issue without knowing what was done to solve it the first time. This can end up being very wasteful.

  26. Maintainers/Support by splutty · · Score: 1

    Normally I'd much prefer the people actually maintaining and supporting the software to install it in QA and promote it to Production.

    This gives them some more knowledge about what they're supporting, and also avoids the 'Just gotta change this' mentality so prevalent in developers :)

    --
    Coz eternity my friend, is a long *ing time.
  27. Risk Management, Baby by benzaholic · · Score: 1
    Deployability is part of maintainability, and this should have been at least touched upon in the Requirements. Since this is "enterprise grade" stuff, there is almost no legitimate excuse for not doing so. Plan it into the project, including finding appropriate development resources.

    We'll assume for many reasons that this is not a Windows-based package, but it can still be bundled into versioned installable packages appropriate for the operating system, or at the very least use WAR packages to deploy web app updates.

    If the standard production deployment technique is too complex, it becomes its own significant risk area in the product. It therefore requires that QA test the Dev-provided deployment, upgrade, and rollback procedures in test or staging environments.

    Or you can just Cowboy it and take your chances.

    1. Re:Risk Management, Baby by donaldm · · Score: 1

      Or you can just Cowboy it and take your chances.

      In an Enterprise environment that is a sure way of loosing your job and credibility.

      To quote a [in]famous person. "Paperwork, sign-off , Other Parties, sign-off, Install, sign-off, Q&A, sign-off and lastly sign-off". Repeat as many times as necessary and watch out for the flying chairs :)

      --
      There ain't no such thing as proprietary standards only proprietary formats. Standards are by definition open.
  28. Mostly No. by rwv · · Score: 1

    Developers (myself included) are self-assured of their work to the point where they can't be expected to test things thoroughly between the critical points in the timeline when (a) it's done, and (b) it's being used by customers.

    The exception to this rule is when a customer has discovered a problem and it requesting a fix because the service "is broken". In cases like this there is a strong desire to minimize the timeline between (a) and (b) so having a short-list of developers who can circumvent/expedite the formal test/release process in these cases is a good thing.

    But yeah... for scheduled upgrades of software that "must work" you've got to put QA barriers between the development team and the team who takes care of the systems that customers use.

  29. yes but there are exceptions. by leuk_he · · Score: 3, Insightful

    Creating the flawless installers costs time.
    Time means money. If the software is only installed twice (on test system and production), a good flawless installer is very expensive. If it is installed a lot of times (more than 5 systems), automation of the installation will pay itself.

    Generally it is good practice to keep the developers out of the production environment.

    However there must be exceptions.
    -Emergency fixes.
    -If there is no good team of maintainers, you can actually look at the installation logs, and understands them, the developer might be the better option. A good maintainer, who only blindly runs a script is not the best option.
    -Uptime might be more important that the principle.

    1. Re:yes but there are exceptions. by Anonymous Coward · · Score: 0

      An installer isn't necessary, but consistent packaging and documented steps to install and configure the application are. My developers are probably good at implementing business processes, but they sure ain't good at consistently setting up web farms or understanding the interdependence between various bits of our system. I am. If they need logs, they can have them in as long as they take to copy... select access to the databases, too, but they sure as hell can't have anything resembling write access to production. If that's a threat to uptime, there's a real problem somewhere in your testing process. In an emergency, these controls are doubly important because that is when your testing is least likely to happen, and your changes are going to come fast and need to be documented.

    2. Re:yes but there are exceptions. by Anonymous Coward · · Score: 0

      it depends...

      If that automated installation and central management means you now have a better RTO what's that worth?

      If it means you can meet audit and compliance objectives what's that worth?

      If it means you know what systems do rather than having to ask the person who deployed them what's that worth?

    3. Re:yes but there are exceptions. by Anonymous Coward · · Score: 0

      I've never been paid to work on a system that has only been installed twice. Every time a developer joins the project, that is an install, often a more complex one than prod.

      I agree that creating flawless installers costs time. Sometimes that can be a lot of time: throughout my career, about 20% of my salary has gone to writing app installers.

      Making them flawless isn't always feasible. For example, some Windows environments require tools the user need to click, click to install, introducing the possibility of unplanned variation.

  30. Situation Dependent by jythie · · Score: 1

    I think this is one of those situations that is really very context dependent... it will depend on things like how isolated the two teams are from each other, how frequent updates are rolled out, etc. You want a good process in place, but where individuals or groups fall across the process really comes down to 'what will work best in the situation as it is'. Even large(ish) scale operations you might have people wearing multiple hats and strong dividing lines would only make things less efficient.

  31. For inhouse use: Dev - Test - Prod by Anonymous Coward · · Score: 0

    If code is being developed for in house use there should be three separate but identical systems:
    Dev - development is done here - builds etc. with version control software used to track history and allow for roll back etc.
    Test - once the developer has finished with the code - code is installed here for testing by QA - NOT by the developers, if critical bugs are found, back to Dev.
    Prod - once full passed but QA, then and only then should code be install to production

    1. Re:For inhouse use: Dev - Test - Prod by dstyle5 · · Score: 1

      Mod AC up! ;) I've worked in all three worlds and agree completely. Unless the developers are also the IT guys, they shouldn't be installing it.

  32. Possible issues with letting Devs do this by Zontar_Thing_From_Ve · · Score: 3, Insightful

    I work for a (mostly) US based Fortune 500 company who for various reasons I would prefer not to name. Short story - if you are a big enough company that external auditors come to visit you (we are) and your Dev people install code, even in test environments, you may fail an audit in the USA. Trust me, it is bad for business to fail this kind of audit. I'm in a system admin type job and a bit isolated from the workings of our Dev group, but it's my understanding that we run Agile or some variation of it and we absolutely do not allow Devs to ever install code in test or production environments.

    1. Re:Possible issues with letting Devs do this by Anonymous Coward · · Score: 0

      I agree with you. Conversely I think devs should have total access to their dev environments even knowing that this will occasionally mean things blow up in the dev environment. There's nothing more painful than tracking down a sysadmin type person while I'm trying to figure out how to get some piece of software installed and configured that may never even make it out of the dev environment.

    2. Re:Possible issues with letting Devs do this by Anonymous Coward · · Score: 0

      This.

      I'm one of those external auditors and, yes, we will fail this control if the developers are installing code into the PROD environment.

      At smaller organizations it wasn't as big of a deal a couple of years ago when I first joined, but there's a current trend to failing it even at the smaller clients we audit (IT team of 10 people). For bigger companies, especially those that seek SOX compliance, you better believe there better be a segregation of duties or you will fail this control and possible the audit.

      I certainly understand *why* devs install code into PROD, but that doesn't mean it's best practice. It all depends what you value--devs getting their hands dirty or having a decent internal controls framework. However, the next time some shoddy code gets promoted by a dev and takes down PROD, we'll see if you think it's so wise not to put those controls into place.

    3. Re:Possible issues with letting Devs do this by Rich0 · · Score: 1

      I wouldn't even be concerned as much about taking down prod (the dev would likely get it back up quickly). I'd be more concerned that you have no idea what is on your prod server any longer, and when you test the next upgrade you test it against what you thought was in prod, and THAT takes down prod after the tests all pass. Or you need a new server and now one of your servers is different from all of the others. Or that dev gets let go and nobody can figure out why the server isn't working as expected.

      At work we actually had to pay to redevelop an enhancement because apparently we never obtained the source code to a component of our software that was running in production. No doubt the source was emailed back and forth umpteen years ago, but it never got checked in, and somebody probably just emailed an executable to include in the install package.

      For this reason it isn't even enough to have somebody else do the install - you actually need good practices for how you make install packages in the first place and how your installers work. A process held together with duct tape isn't any better just because somebody else runs it.

  33. Just so it's one or the other. by CubicleZombie · · Score: 1

    If you're going to lock me out of the production environment (which I prefer, thank you), don't call me on the weekend if something isn't working! On the other hand, if you need me to install, get out of my way and let me work. I'll just build a tool that does the job so I can go home. It should be a repeatable process, anyways.

    --
    :wq
  34. Automate the s**t out of deployments by Anonymous Coward · · Score: 0

    When done right, deployments shouldn't be a big deal. If deployment is a fully automated, no-brainer, one-click operation, it also shouldn't matter (much)who deploys. But prior to deployment to a live environment, make sure the package deploys correctly both to a clean test environment and a backup-from-live test environment. If you haven't already, set up nightly builds to do this.

  35. Deploy teams need to understand the APP by Anonymous Coward · · Score: 0

    I do all our production deploys for a Big 3 dealer application. We do it this way so that I understand the app and can better trouble shoot it at 3am if It takes a dump. Because we all know getting a hold of the dev team at 3am is a crap shoot at best.

  36. Yes,but not into production by Todd+Knarr · · Score: 5, Insightful

    You should have at least 3 environments beyond the personal ones the developers use to develop and unit-test code: development common, QA and production. Development common should be where dev does integration tests, including installation. If developers are responsible for creating the installation tools, they should be doing the installations there so they can debug those tools. If someone else is responsible for writing them, the devs should be working with them to make sure the tools do what the software needs to install correctly. You can't get the installation tools right if you don't test and debug them, and when they interact with the software the developers are the best ones to figure out what's wrong and what's needed to fix it.

    Developers should not be doing the installation into the QA environment. They should be handing the installation tools over to QA and letting them run then according to the deployment instructions. That's the only way to confirm the instructions were really complete and that everything works per the documentation, by putting it in the hands of people who didn't write it and letting them deploy it. That way when it comes time to deploy in production you've got some assurance that the deployment will work because it has worked before.

    Now, if things do go wrong you need dev involvement. They wrote the software and the tools, they'll often recognize exactly what's going wrong where Ops and QA won't. They're also the ones most likely to be able to give you a quick fix to the problem that'll get production up and running without having to back out and try another day. If you've already invested the time bringing the systems down and deploying the new version, it makes no sense to revert to the old version and waste more downtime tomorrow re-doing the deployment if the only problem is a path in a config file having the version number in it in QA but not in production and a quick edit of the newly-deployed copy of the config file will clearly fix the problem.

    1. Re:Yes,but not into production by ImprovOmega · · Score: 1

      This. We do the same thing in our environment. Devs have almost total control over the dev systems, we have an easy means to refresh/wipe out said systems if and when the devs screw it up, and when it's ready for actual users to test the business analysts (working closely with the devs) ship it over to QA for client testing. If the clients approve it then a formal request is drafted for operations to install it in production. The has drastically reduced the number of errors that slip into production (though they do still happen). Errors in QA are significantly reduced, and errors in Dev (very common) are easy to erase and start over again.

      If you let devs install directly into production, there will be many, *many* errors that they miss and you better hope you have good backups.

  37. Accountability by Anonymous Coward · · Score: 0

    I've been in a similar situation, where developers were actually stopping a production service, checking code out onto the prod box, compiling it in place, and troubleshooting it for hours after that. Our service support team hated it, and it caused a lot of penalties with our clients (which, of course upset the CFO and the investors). We went to a model where the dev team would give us a package, we would get it running on a parallel server, test it to make sure it was working, then swap the old and servers' addresses.

    If the package didn't work, there was no negotiation- we just didn't deploy the new code and the dev team went back to work the kinks out. A side benefit was that the prod support team didn't catch hell for an outage; the dev team absorbed the full impact of their lack of attention to detail and quality. Things got dramatically better with the products after that.

    It ended up making everyone's life easier. The whole dev team didn't have to be awake all night for the change, the time to make the change shrank from 7 hours to about 30 minutes, and the customers started seeing what was good about our product rather than the monthly multi-hour outages.

  38. Dev and manager here by Anonymous Coward · · Score: 0

    I'm a developer and a manager at a small company and I can unequivocally say "no" here.

    Developers installing software inevitably causes issues - even when you're talking about QA/Test. It invites short cuts and quick fixes that never get documented so six months down the line, no one remembers what was done or how to reproduce it. That's if the original dev is even still around, which they often aren't.

    If deployments aren't easily reproducible by another party than you can't guarantee what's running or when it was running. This invites all kinds of issues - especially if you deal with monetary transactions. There's a reason why stuff like PCI requires separation of roles.

    Note that I haven't even touched on the potential damage that can be caused if there is malicious intent.

  39. Of course! by blirp · · Score: 2
    But only the two or three times to perfect the automated procedure.

    M.

    1. Re:Of course! by Anonymous Coward · · Score: 0

      But only the two or three times to perfect the automated procedure.

      M.

      See, I think everyone here needs clarification, are we talking already automated, repeatable deployments, or the unzip this, rename those, merge in any previous config changes kind of bull crap.

      Developers should feel the pain of installing their software, the same way operations does, but probably not on the same servers.

    2. Re:Of course! by Anonymous Coward · · Score: 0

      I agree. Where I work, no in-house developed application gets copied, installed, or tweaked by hand. When an new application project gets started, one of the tasks in the project is to define the deployment process of the app (flexible as the project progresses and discoveries are made). The deployment process must be scriptable (this doesn't necessarily include dependent libraries that don't deploy with the application), and the script is written by an implementation team - hence the developer works with the implementer to hash out the process within the constraints of the target systems (or to identify constraints that need to be changed). This includes working out the details of how the code gets built and where the script gets the code from - this is almost always a build job that pulls code from source control, builds it, and drops it in path to be picked up by the script (and this process is done on a system the developer does not have access to - the configuration/build manager owns it and works closely with the developer to produce the build job).

      All this is initiated at the start of the project so by the time the developer is ready to go to test, the process of building and deploying the application is already worked out, usually tested, and is repeatable. Then the developers can focus on resolving application bugs instead of implementation bugs.

  40. It depends on who carries the pager by Anonymous Coward · · Score: 0

    If the developer is going to get woken up in a mad panic to get customers back on-line nights and weekends, then, yes, she should be able to install software into production. And in this scenario the developer _is_ also the operations person. These scenarios usually don't last long.

    I'm a DevOps person. I value developers getting close to production to better understand how customers are being impacted by their software, but I do not want them in a position to break things. My job is to keep customers up and happy and to never know I exist.

    Good operations people are conservative (not as in being a Republican, of course) and only change production in a safe way. If the organization is healthy and prioritizes what's important, then changes can be made rapidly and often, but this doesn't mean developers get to do what ever they want.

  41. No, no and for the third time no. by jimicus · · Score: 1

    I refer the honourable gentleman to the ITIL guidelines which cover this sort of thing. In brief: developers do not even get access to live systems, much less carry out updates on them.

    (Much of this is based on somewhat rusty memories; please correct any mistakes I've made)

    Developers package their applications according to an agreed process and hand the packaged application over to an operations team whose job it is to update the live systems.

    This update must not be acted upon unless and until the update has been carried out successfully in on a test environment - which is again separate to the developers' environment and is meant to mimic the live environment as closely as possible. ("Successfully" in this case means it installs cleanly and the updated version passes an agreed set of tests, including user acceptance tests). Ideally you'd have a separate test team who vouch for the build.

    Yes it's slow and cumbersome. But it's not intended to be quick, it's intended to ensure that the IT department is not at home to Mr. Cock Up.

  42. Heck No. IT/End User feedback loop critical by crimoid · · Score: 1

    Having worked at several startups with large environments where development routinely was leaned upon to jump into production I firmly believe that ideally developers should not install their software (or even touch it) once it is released. Allowing them to do so leads to band-aids, hacks, lack of documentation, short-cuts, and all other manners of badness.

    Strictly maintaining that division between development and IT/end users helps ensure that development maintains a complete package. Incumbent in that is that the appropriate feedback loops into development must be established, implemented, and acted upon. Bug reporting, issue tracking, customer feedback, and the like are critical bits of information that cannot be ignored by development.

  43. Are you kidding? by kumanopuusan · · Score: 1

    Developers shouldn't even build software for customers/production.

    make is 35 years old!

    ./configure
    make
    make install

    Not having an automated build and install process is a waste of everyone's time, but especially the developers' time.

    --
    Use of the words "good", "bad" or "evil" is almost invariably the result of oversimplification.
  44. Package management and auditing by Anonymous Coward · · Score: 0

    Enterprise systems come with package management systems. Use them. Developers should be required to develop in one environment, package it and test in a testing environment, then scheduled installations into production with some means of management approval and auditing. Any backouts required involve simply removing the bad package and installing the previous working one. But I speak from a sys admin perspective.

  45. Not the dev's job by Anonymous Coward · · Score: 0

    - It's the build manager's job
      - It's the deployment manager's job.

    Really -- this question completely depends on the size of the shop.

    I've had sysadmins tell me that a platform that only ever runs on linux, they'd rather we didn't require a single cron entry to run -- even if that would require importing half a dozen new libraries.

    And I think that's a potentially reasonable request to make... depending on /why/ they make it.

    Unfortunately, in this case it was "I don't want to have to maintain the program when installing it". Tough shit, princess -- the time that job runs is important, and the manual and ticket system says why.

    If you're building up to an MSI, you should have a person in charge of it depending on the build. Same with RPM or .deb.

    For the past few years my builds have consisted of python egg files, and the sysadmin deploys it with two lines of config I supply.

    Making devs screw with the install depends on... whether or not the dev's are responsible for the *whole* install. If they aren't, then no, don't have them use the instructions, you'll just interfere with testing.

    Really, you're talking to the wrong group about it. When my install instructions for the magic-black-box ommitted that we use apache tomcat and two warfiles in it and I got an earful from a project manager, I gave it right back to her. Not my fault I consider them external libraries that speed things up. The system works just fine on a brand new install without them. They were previously installed on the platform, listed as "highly recommended dependencies" and our config file had comments on how to point to them with appropriate defaults for a default install.

    But if you convert or upgrade the server and roll an existing install into the new one -- while following install instructions that helpfully detect an upgrade instead-- then yes, our install depends on the old services being on the new setup. And yes, we give a 'cryptic' error message .

    Not my fault your sysadmin -- (the PM) is an idiot.

    Yes, I can write a test for any given error -- but that tends to cause bloated, unmaintainable heavy code. At a certain point, it's time to assume competence. That means if you get a message saying I can't find tomcat, you man up and demonstrate that your degree made you at least as literate as someone with a decent background in liberal arts, much less the 20 years of experience you show on the resume.

  46. Shouldn't really matter by jvkjvk · · Score: 1

    caveat - this is talking about as the poster requested, production deployment of web services from big companies.

    The software should be able to be deployed by nearly anyone familiar. Any changes to deployment are modifications of install scripts or applications.

    Actual deployment to a production environment should be able to be done by a lot of different roles.

    I prefer not to have developers deploy because they have access to a lot of different possible packages.

    Build should be produced by CM.

    Test should be able to install on their test systems, as checking the install is part of the test process.

    Once a gold build is produced, the people administering the production application servers or ESBs should probably manage the package deployment.

    Please don't tell me the developers are also administering the production boxes!

    But really, test is familiar, development is familiar, systems should even be familiar... It could really be any of them.

    "Should" then just becomes a choice made, and someone puts it down on their time card.

  47. Someone has to install it by nedlohs · · Score: 1

    If your developers have time to spare and are salaried then it might make sense to have it be part of their jobs. If it can be done by someone cheaper or less critical to tight developer deadlines then you might have it be a job or a role in some other job.

    I don't see anything inherently wrong with having some developers in that role though.

  48. Hands off the production environment. by flink · · Score: 1

    Ideally, the systems management team should handle install into staging and production environments. They have worked with the dev team to establish a standard environment. The dev team should take time to understand the environment where the application will be deployed, and the systems team should understand the application well enough to diagnose basic problems.

    Unfortunately, in my experience, cost cutting means that the installation and maintenance is done by an IT contractor pulled from a rotating pool in Bangalore who doesn't know how the application works. They usually can't tell a software bug in our code, from a missed firewall configuration step, from bad permissions in the filesystem, from a bad load balancer config... the list goes on. That's when I get pulled in. Of course I don't have permissions to do any useful diagnosis, and they are so fresh out of training they don't know how to execute a TCP dump. ...and that's why I don't do J2EE development anymore :)

  49. Big Ole Compliance Red Flag by Anonymous Coward · · Score: 1

    The folks above have commented on why it's a best practice for coders NOT to push their own code to PROD. Peer review, undocumented fixes, hacks, security holes, malicious insiders, it's all covered up there.

    Which is why SOX auditors, PCI auditors, HIPAA....etc all look for separation of duties. It's a case where Compliance actually has Security's interest in mind.

  50. Dev should not every touch the prod environment by TomTraynor · · Score: 1

    Where I work developers do not have any access to production. We have a process and it tries to ensure that what gets to production has been tested by the dev team, reviewed by the support team, and finally tested by the client before it even gets near the production machine. The devellopment team defines what is to be added/changed/deleted (specs). The support team and client approves the changes before we start. The code is then tested and signed off by everyone. Once that code is ready the development team writes the installation document that defines every change required to release to production (and must match the modules in the specs) and the computer operations team follows that list of instructions. The list is also then checked against the change list and only the changes identified get released, anything else will not be released unless authorized by the support team and the client.

    There are exceptions for emergencies, but, all code releases for any reason has to be signed off by the support team and client before it even hits the production machine.

    The upside of this is that every change made has been documented and verified. All code released to the production machine has been documented and an audit trail is available for review. This way a developer will have a very tough time trying to sneak in code that should not be in a production machine (it still can happen, but, it is very hard).

    --
    Panic now, beat the rush!
  51. Yes, when they do, they produce good software by 140Mandak262Jamuna · · Score: 1
    This is just anecdotal, but has some good reasoning behind it.

    I have been with this company since we were very small, pre IPO days. Those days, we did not have a separate QA dept and we devs pitched in as QA and documentation. Many routine stupid things to do QA kept getting in the way of what we believed as our true job, develop code. So we wrote stuff in the product to ease our own QA.

    For example Win98 introduced a "preview" pane on its file explorer. We had our own file explorer, and we had a preview since 1992. Why? Because we had tough time telling which project name corresponds to which project/design we had to test.

    We wrote a pseudo "non rendering" window whose only job is to accept and dispatch mouse clicks, in 1993. We had an env switch to dump out mouse clicks during the normal run and then we use this non-graphical-non-rendering window mode to run jobs in a batch. That pseudo event dispatch window eventually grew into our record and playback feature. Then it grew into our macro play back feature. Eventually it grew into our "Command Langugage".

    We wrote our own "process manager" to run the jobs in queue, run queues in different machines (only in unix, we used rsh).

    We grew big, and we have a separate QA dept. They have bought expensive mouse-click-recording and playback software. They have an expensive bought some queue manager, remote job manager etc etc. But when we were doing our own QA, we felt the pain of the customer and added tons and tons of things to make our jobs simpler, and the customer benefited.

    So, yes, eating your own dog food helps.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  52. it depends by a2wflc · · Score: 1

    My huge company with many brands has 100s of web sites. We have a few classifications of sites, and each classification has it's own process. In some cases (e.g. credit cards involved), it MUST be deployed & operated by a 3rd party vendor (different than the developer). In other cases, a single (approved) developer can do everything him/herself, as long as it's coordinated with the brand manager and corporate PR and has no features corporate privacy or security teams would object to and is hosted at an approved provider.

    In some cases, a seemingly simple new facebook page needs LOTS of input from LOTS of groups, and needs to follow a pretty complex process of who does what. In other cases, it's a trivial task that can be done in a morning with emails between 3 people.

    The key is to think up front about the different classifications. What are the legal/privacy/security/pr risks? In our case, risks not just for the brand, but all brands in the company. What can/can't be done in the different classifications? What processes need to be followed for each? What common components/services can be used/deployed without a security or privacy risk? After that, each site can be managed with the quickest and cheapest process? We would have 1/2 the sites and 1/4 of the facebook presence if every site had to follow the same processes (or we'd have lots of privacy, security, and operations issues).

      While credit card sites are operated differently, all sites and facebook pages are operated by the same 2 vendors with the same SLAs. We worked very closely with the operations companies to come up with the different deployment processes so that we can have both the quick/cheap and more complex types of sites with the same 24x7 SLAs. We also worked with our legal, privacy, security, and PR teams to make sure they are all satisfied that the processes are acceptable.

  53. automation by itmo · · Score: 1

    The best way to do this is to have automation. That serves as atleast some kind of documentation, it makes stuff repeatable , it makes stuff easier to replicate etc. Preferred method would be to have the automation in version control and a build machine which checks if a tag changes, then pulls the automation, executes it, it will install whatever is tagged, tag it as installed and shut down. Preferably this system is built so that you can only "please install this" tag stuff that is properly staged and autotested.

  54. End users should be able to install the software by markdj · · Score: 1

    I work with Industrial Automation Software. I have developed the software and installed it a customer sites. Any customer that depends on the vendor to always install the software is courting disaster. What if your critical enterprise software is custom installed, runs for five years and then due to a hardware failure you need to reinstall from scratch? Will the original person who did the install still be available? Is the software still being supported? All end users should have explicit written instructions for how to install the software. The industrial automation software I use can kill, cause fires, and do all manner of damage if not installed and configured properly. It is just good practice to have explicit detailed installation instructions, that someone with a modicum of knowledge of the system can follow to reinstall from scratch. I've seen plenty of customers who are using software for which they have no idea how it is configured or installed. The original engineers are no longer available. They were laid off in cost savings events. Then I have to come in to figure out what they have so that I can determine how to upgrade them to the latest version while preserving years of data because once the hardware failed you can't get it to use the old software and the old software won't run on newer hardware.

  55. Developer Access Metric & Nomenclature by Anonymous Coward · · Score: 0

    Application quality/reliability is inversely proportional to developer access. 'Nuff said...

  56. Only if the IT guys.. by Anonymous Coward · · Score: 0

    .. stop asking us to wipe their asses, and do it themselves.

    Seriously? What kind of technical people are you hiring that can't take care of this?

  57. Been there done that. by Anonymous Coward · · Score: 0

    I agree 100% with no. One of my clients bought a payroll system without asking anyone in IT to look at it. The developer required that they install it themselves. There were warring signs all over that anyone from IT would have seen a mile away. The developer install requirement was just the first clue. My thoughts are that if a company has not had time to build a decent install package yet, the rest of the product will also suffer from lack of refinement. In this case I was correct, and after less than three years we migrated to a different payroll product. I am continually surprised about how ignorant developers are about the operating systems they develop for. .. ESPECIALLY SECURITY! If politics prevail watch them like a hawk and do not grant them unsupervised access to you network.

    Here is another issue to think about. We also had problems when we need to do any type of infrastructure work. We will work after business hours to complete a project as to not disrupt business operations. Will the developer do the same? Probably not. We had a great deal of trouble coordinating support from the developer to schedule work on the payroll system. After it was installed and the check was signed they kind of wash their hands of supporting anything other than trivial end user issues. It took 2 months to get them to coordinate configuring their system even for an IP change. Any problems they wanted to blame on IT; luckily we gave them a dedicated server so that excuse did not fly.

    I would suggest that some products are very complicated and may require developer support to install and configure correctly; especially for some lame IT departments that I have seen. But if they cannot even write an installation procedure for their product, the install issue will probably not be the only issue you’re going to have with this product.

  58. without a doubt by heracross · · Score: 1

    I work in a company where the Datacenter , not developers deploys to test and production and they get it wrong a high % of the time. So yes. The datacenter employees don't even understand the server software or database involved , yet they control deployments. Its a nightmare

  59. How big an enterprise? by Tastecicles · · Score: 1

    For very large corporations, backend deployments are few. Frontend deployments are many. I'd say developers who know their backend environment, which changes little, can be trusted in deploying what they develop - with supervision and prior auditing by those entrusted with maintaining the environment. Absolutely not in the case of frontend deployments, where you may see many different configurations hardware-wise. Something which works on one box might bring another box down - workstation administrators are the people to trust with such deployments, who can then carry out diagnostics when something goes wrong. In this case documentation and audits are important.

    As a former SQL developer, in a very small company, I had complete access to everything. For me, it made life easier but more complicated, to be paradoxical. Something goes wrong, I have to stop developing and fix it myself. Therefore I'm incentivised to get it right first time, which means careful coding and careful testbedding and careful debugging before the product even sees the production machines. Then I can move on to the next job safe in the knowledge that the chances of me getting a call at 3am because of some bit of rogue syntax brought a few thousand £ worth of gear to its knees is next to zero.

    closure: if the developer is coding for production where he is not likely to be called upon to drop everything and fix a problem on a production box, such task reserved for someone else, then full documentation of every call and function is an absolute must.

    --
    Operation Guillotine is in effect.
  60. tsk by Tom · · Score: 2

    it seems unhealthy to me to have software installs done by developers

    "unhealthy" is putting it very nicely. It's insane.

    The developers should never have to touch the production system. It is very, very important that the guys running the production system know how to install the software on it and get it up and running. That is exactly what they will have to do if everything burns down one Friday night.

    Plus having the developers install it is an open invitation for all kinds of hacks and shortcuts instead of a proper deployment process.

    --
    Assorted stuff I do sometimes: Lemuria.org
  61. Hello? Installer = Package manager = instuctions! by Anonymous Coward · · Score: 0

    And what do you think an installer is, other than *software*, written by developers, that contains instructions, written by developers, on how they would install the software!

    Let alone something more sane, like ebuilds & co for package managers!

    *facepalm*

  62. human interaction by phantomfive · · Score: 2

    I'm not sure a human should be installing anything manually on production environments. Upgrades should be done automatically.

    --
    "First they came for the slanderers and i said nothing."
  63. probably not by roc97007 · · Score: 1

    If this is software only used internally, you may not have a choice. Unless the department is large enough to include an administration group, developers may not have any choice. But everywhere I've seen this, it's been a bad practice. Developers are good as developers. It is not necessarily in their skill set to be administrators and system architects also.

    For software intended to be sold, it is *very* bad practice for developers to be responsible for installation on QA (especially QA!) and final test. Were I have knowledge that this practice is followed, I decline to buy from that company. Proper versioning, keeping the stack aligned, assuring a pristine QA environment, are all specialized skills that developers are not required to have, any more than race car drivers are required to be mechanics. (There. A car analogy.) Some may be, and a few may be good at it, but it is not their speciality and should not be a job requirement. (That said, developers should be on call for install problems that require dipping into the code, or may result in code changes.)

    But again, it depends on the size of the operation. If you're developing a product with the laptop balanced on the ironing board, you do what you have to. But it becomes a lot more difficult to convince people that your product is enterprise ready.

    --
    Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
  64. Headline question? Answer is no. by Imagix · · Score: 1

    Huh, another example of how almost any question that appears in a Slashdot title should be answered with "no". No, the developers should not install the software themselves. Not in test, not in production. (Assuming a sufficiently large company that there are people other than the developer...) It shouldn't be that hard to install and get the software up and running. Should something happen to the developer (quit, fired, Hit By A Bus, whatever), who's gonna install it then? At a minimum, there's a bunch of missing documentation.

  65. There's a balance by Sebastopol · · Score: 1

    Part of having a validation team is to approach the code without the biases of the developer. The developer is too intimate with their software, and on top of the two primary methods for code coverage (random and directed tests), there is still the human element that a validation team brings.

    On the other hand, it is also useful for a developer to "eat their own dogfood". I wrote CAD tools for a decade, and when I finally became a designer and actually USED them I was like, "Dafuq did I code this stupid feature X for, when I really needed feature Y?!?!?"

    There's a fine balance, but they definitely should be involved beyond kicking their latest drop over the fence to the validation team (or end users, if there is no team).

    --
    https://www.accountkiller.com/removal-requested
  66. Who is responsible? by Anonymous Coward · · Score: 0

    Whoever is accountable for the system should control deployment strategy.

    If they want the developer to install and configure, fine.
    If they prefer operations, that is okay too.

    If reliability is important, it should be "hard" to deploy new code.
    If features and turnaround are important, it should be "easy" to deploy new code.

    Hard means more testing, documentation etc, easy means less.

  67. old joke by Torvac · · Score: 1

    developer: ... but it runs fine on my machine
    boss: ok, then we ship your machine

  68. In the Best of All Possible Worlds... by sycodon · · Score: 1

    Developers -> QA -> Operations (Am I dating myself here?), with the project manager (or Product Manager) driving the process.

    I also think developers and QA personnel should be more or less interchangeable, but that's not likely.

    I would also insert a second layer of QA consisting of Project Managers and Product Managers. The primary QA guys are running regression tests and unit tests etc. You need to have someone actual sit down and drive the software too because Mercury and the like don't catch everything, especially logic and common sense things.

    But the reality is almost no one has the budget for this. So the developers are doing QA themselves and helping with installs, etc.

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    1. Re:In the Best of All Possible Worlds... by Hotawa+Hawk-eye · · Score: 2

      I would also insert a second layer of QA consisting of Project Managers and Product Managers. The primary QA guys are running regression tests and unit tests etc. You need to have someone actual sit down and drive the software too because Mercury and the like don't catch everything, especially logic and common sense things.

      Automated tests are good and I prefer to write automated tests for all the software created by the developers with whom I work. But sometimes interactive tests are useful and/or necessary. Making sure that the core processing routine for your application does what it's supposed to do with known input? Automate that. Making sure that the interface (GUI, web page, etc.) passes the right stuff to the core processing routine when the user clicks on the nice shiny buttons? Harder to automate; it may be more cost-effective to create an interactive test for that.

  69. It shouldn't be an XOR by khb · · Score: 1

    Yes, the installation process should be relatively automatic, and well documented so that another team can and should usually install it. However, such teams are often *too* capable, that is the Developer(s) should do some installations themselves so they see just what sort of nightmare they have created ... or how fragile it is in the context of a full production environment.

    Development environments are no substitute for the RealWorld. Ignoring the RealWorld is a BadThing

    1. Re:It shouldn't be an XOR by Lodragandraoidh · · Score: 1

      Along those lines - I advocate having a development and test environment that mimics what is in production with enough detail to do meaningful tests of real-world situations (partial load testing and so on). With virtualization, the cost of creating such a system is cheaper than ever - and it can give you meaningful insight into complex end-to-end systems interaction beyond what testing on an isolated server provides.

      Instead of having a pool of 100 servers for a given part of your infrastructure - 2 or three VMs on a virtual network may suffice. Care should be taken to ensure the VMs are identical images to what is running in production - or slated to be run along with the deployment of your application. Limit the variables as much as possible so you can get as realistic results as possible - extrapolate those results to the larger network - and see what implications there are for parts of your infrastructure you weren't able to model realistically (e.g. ingress border switches and such).

      Beyond the functionality of the application that a user may see - test other things like:
      * Security
      * Resource utilization (CPU/RAM/Storage)
      * Hard to replicate bugs (leave the test running over extended periods of time to weed these out).
      * Impacts to other systems that interact with the new/new version of the application.
      and so on...

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
  70. Always have an install package by ripvlan · · Score: 1

    There should always be an installation package.  Not having instructions, or allowing the developer to hand-install stuff, leads to all kinds of problems (inconsistencies for instance, i.e. no two systems the same).

    Another reason - simple scalability of a business.  The installation must get to a point where it can be handed off to somebody else.

    Installation and deployment generally doesn't get the respect it needs.  Imagine buying an app for your phone - and somebody handed you a long text document detailing the 5 libraries that you needed to install first, and then they needed to make a few hand-patch configuration changes to the device?  That wouldn't be acceptable - Enterprise software should be just as easy to install as consumer products.  Customers see value in this and the installation tends to be the first encounter with your product and can set the tone for the relationship.

    Somebody else posted something about dogfooding.   Yes - engineers must know how "hard" it is to use the product (whether it be installation or usability).  However, the engineers cannot be the ones responsible for installation.

    Exception to the rule:  brand new proof of concepts being delivered to the "partner" customer.  By the time the "second" partner install comes up - there needs to be an installation package.  I work for a large company and I generally cannot touch a customer system - so everything must be packaged and handed off.

    In my line - the installation is easy.  It is the configuration that is extremely complex.  Although it doesn't require an engineer, it does require an "expert."   But this too should be as easy as possible.

  71. Production Environments? Absolutely not. by zifn4b · · Score: 1

    Should developers be responsible for installing the software they develop into production environments?

    Absolutely not. This is horrible security practice and will not fly even an inch in many industry standard audits. I can give countless examples. A developer sneaks a change into the software to funnel personal information and credit card numbers off to a private database and then sells it on the black market.

    The whole point behind the division of labor is a set of checks and balances and reduction in conflict of interest. Quality Assurance analysts validate the code does what it is supposed to. The developer doesn't do this. Developers typically don't care much about that level of quality of their code. They have a different set of objectives. They must complete objectives, they have deadlines. The customer performs user acceptance testing not the QA analysts for obvious reasons. Even the brightest of user proxies cannot replace the customer's direct feedback. The deployment specialists, IT or Operations specialists deploy the software. They are responsible for the production server infrastructure and the environment not the developers. They must exercise great care in what they install, whether its the company's own product, Microsoft updates, drivers or anything else. It's all the same.

    I'm shocked this question even gets asked. There is no free lunch!

    --
    We'll make great pets
  72. Yes and No by Anonymous Coward · · Score: 0

    First, nothing smells disaster like having a developer install its own software ... And nothing smells disaster more than a developer that cannot have access to prod ...

    The Lone Developer should have have a preprod environment. Do its bidding there. Then, a staging environment, where he should write a documentation on how to install it, and how to test if everything is all right.

    Once that document is done, revert, and use The Intern to follow the document on Staging. Have The Intern write his thoughts, his findings. See if he was able to follow through.

    Finally, have The Production Team and The Intern install it on Prod using the documentation, with the Lone Developer on standby for any issue.

    From this point on, although The Lone Developer should have access to the servers, he should be instructed not to do any modification on the server. That's mostly a monitoring and debugging phase for him.

    My final thoughts: being anal retentive on any process will make things break. So by being slightly lax under a tight grip, it gives the best of both worlds.

  73. Here's another twist on this: by Anonymous Coward · · Score: 0

    Given questions about Sarbanes/Oxley, security audits etc for large companies - the answer is no.

    However, and this is the twist, I do believe developers should have a good working understanding of the issues associated with the installation and running of their applications in a production environment. To that end, you should have a test environment/network that mimics as much as possible the environment in which the application will live.

    Ostensibly programmers are (mostly) computer science graduates - and as such should have an understanding of all aspects of computing - particularly with regard to how their application interacts with the environment in which it lives - yet too many times I've seen issues along these lines:
    * Mismanagement of hardware resources.
    * Mismanagement of network and pooled resources.
    * Security failures.
    * Operating system environmental dependencies / failures.

    As a result I believe developers need more hands-on in test environments. Testing on their personal machines is not enough. They need to get their hands dirty doing what system admins will do when installing and managing the app, and should do automated testing to validate resource management, security and other dependencies can be handled properly. There can be a team that specialises in this - but the programmer should have some basic hands on in the test environment before they hand off to a test/packaging team.

    This will give them an appreciation of what others have to deal with - but more importantly, it will make them a better programmer (assuming your measurement of success is working code; and I define working as complete[in terms of installation dependencies and what it is currently designed to do; I do realize that the codebase could be on an iterative life-cycle], secure, and either no resource impacts - or smart enough to have behaviour appropriate when more resources are needed).

    I wouldn't trust a programmer who could not build his own machine, load the OS, and integrate that machine into a complex network. I've seen the bad results too many times when this is not the case. A program is not a thought experiment - it is a living/breathing entity existing in a complex environment - with interactions beyond the program logic; too many 'programmers' forget that.

    That is my advice.

  74. Never. by whitroth · · Score: 1

    And more of my career still was as a programmer, oh, sorry, let's be politically correct, "developer", than as a sysadmin. And I've done configuration management.

    Not ever.

    For one, they know how their systems work, and what they need. Wait until they leave, and let the new person install it. Much hilarity will ensue. And after the 20 or 30 hour day and a half, management will want to know why, and as much as I disparage management, on this, they'll be completely and totally right.

    Egoless programming, as it was called in the early nineties, had someone else look at your code before it went to test. Why should the same person move it from dev to test to prod?

                      mark

    1. Re:Never. by Lodragandraoidh · · Score: 1

      Given questions about Sarbanes/Oxley, security audits etc for large companies - the answer is no.

      However, and this is the twist, I do believe developers should have a good working understanding of the issues associated with the installation and running of their applications in a production environment. To that end, you should have a test environment/network that mimics as much as possible the environment in which the application will live.

      Ostensibly programmers are (mostly) computer science graduates - and as such should have an understanding of all aspects of computing - particularly with regard to how their application interacts with the environment in which it lives - yet too many times I've seen issues along these lines:
      * Mismanagement of hardware resources.
      * Mismanagement of network and pooled resources.
      * Security failures.
      * Operating system environmental dependencies / failures.

      As a result I believe developers need more hands-on in test environments. Testing on their personal machines is not enough. They need to get their hands dirty doing what system admins will do when installing and managing the app, and should do automated testing to validate resource management, security and other dependencies can be handled properly. There can be a team that specialises in this - but the programmer should have some basic hands on in the test environment before they hand off to a test/packaging team.

      This will give them an appreciation of what others have to deal with - but more importantly, it will make them a better programmer (assuming your measurement of success is working code; and I define working as complete[in terms of installation dependencies and what it is currently designed to do; I do realize that the codebase could be on an iterative life-cycle], secure, and either no resource impacts - or smart enough to have behaviour appropriate when more resources are needed).

      I wouldn't trust a programmer who could not build his own machine, load the OS, and integrate that machine into a complex network. I've seen the bad results too many times when this is not the case. A program is not a thought experiment - it is a living/breathing entity existing in a complex environment - with interactions beyond the program logic; too many 'programmers' forget that.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
  75. IT Auditor here by Anonymous Coward · · Score: 0

    COBIT is a globally accepted framework for providing end-to-end governance of enterprise IT systems.
    IT Auditors (internal and external) will test your systems against the COBIT best practices.

    Here's the two areas you'd fail an IT audit if the developer could push to the production environment (you can google for the details on these controls):
    Change Management Process
    User Access Review

    If you're a US-based company and you fail a SOX audit, you could be subject to a fine of $1 million and 20 years of mandatory audits. We also test this for PCI DSS and HIPAA compliance so you can see why from both a security and a business perspective why the developer role is separate.

  76. FREEDOM!!!! by PortHaven · · Score: 1

    For example, I had a project which required me to make some basic, rudimentary black & white icons. The ONLY graphic software I had was Microsoft Paint in Windows Vista. A dated and wholly incapable program.

    I requisitioned ANY graphics package, even some free open source ones installed previously. And was turned down as it not being a necessity. So what should have been 10 minute job of icon creation turned into hours of needless painstaking pixel by pixel design in MS Paint.

    Now there's stupidity.

    ***

    Basically, a large environment should have a list of software package approved for installation. That list should cover a variety of utility types, (text, graphic, audio editors, etc). Including free and/or open source options that are approved for installation. It's not even that I don't have the ability to install. Just not the authorization.

    And that's frustrating.

  77. IT shop by Anonymous Coward · · Score: 0

    My last job was in the IT unit for the IS section of the orginization, supporting desktop IT for mostly devlopers, and a few other types as well. We provided the computer, with an image. The devlopement side had their own image, with Office and Visual Studio and the like pre-loaded, and everyone else got the company image with just office and whever else. Unless the devlopers aksed for help with their software installs, they were on their own after that. The devleopers sent their code on up their chain of command to people to test install packages and the like in the IS department. Where i work now, again the IT department provides the devloper with a computer and OS, and they take care of the rest, of course we are always willing to help them load whatever software they need, but most of the time they choose to do that work themselves. As for their product they are responsible for producing the installation (although most of it is web based), and we again help them deploy it.

  78. NEVER by Jeremiah+Cornelius · · Score: 5, Funny

    NEVER. Never. never, never, never.

    NEVER.

    Signed,
    Platform and Information Security Architect.

    --
    "Flyin' in just a sweet place,
    Never been known to fail..."
    1. Re:NEVER by subnomine · · Score: 1

      ALWAYS always always install your own software at the Playboy Mansion.

    2. Re:NEVER by antdude · · Score: 1

      Did Shia LaBeouf get a new job/career? :P

      --
      Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
    3. Re:NEVER by Hognoxious · · Score: 2

      Seconded.

      Signed,
          Developer who really isn't very good at that sort of stuff and would rather someone else dealt with it.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:NEVER by Anonymous Coward · · Score: 0

      NEVER. Never. never, never, never.

      NEVER.

      Signed,
      Platform and Information Security Architect.

      Sounds like you got a title that will be gone in the first company layoff... lol

    5. Re:NEVER by Jeremiah+Cornelius · · Score: 1

      Prolly not. Online commerce, banking or Infrastructure software and cloud service companies are not Target or General Motors.

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    6. Re:NEVER by Kalriath · · Score: 1

      That's odd. The vast majority of banks use Windows-based servers for their online banking environment. And they're perfectly secure. Almost like... holy shit... pretty much anything can be made secure if the person setting it up knows what they're doing?!? Well I never!

      --
      For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
    7. Re:NEVER by swilver · · Score: 1

      never never = always
      never never never never never never = always

    8. Re:NEVER by Kalriath · · Score: 1

      Ok, let's go through these in order:

      JPMorgan: story indicates social engineering involved. Not a hack.
      World Bank: Indian offshoring firm responsible for the breach. Not a hack.
      Suffolk County National Bank: Valid hack.
      Citibank: Breach method unknown. Unverified if this is a hack.
      Operation High Roller: Client side malware steals online banking credentials to impersonate valid users. Not a hack.
      Bank of India: Valid hack.
      Net-security article: Isn't talking about a bank hack at all. Is an article about how easy it is to get into bank accounts by installing trojans.

      So from your seven "examples", two are valid, one is unverified, and four are invalid. Somehow, I feel like your opinion is somewhat unimportant, really.

      --
      For a site about things like basic rights, Slashdot users sure do like to censor "dissent".
    9. Re:NEVER by icebraining · · Score: 1

      They're all examples of the poor security practices of banks, even if not all are "hacks".

      Operation High Roller: Client side malware steals online banking credentials to impersonate valid users. Not a hack.

      Wrong. It's a hack caused by poor security practices by banks. For example, no computer malware could steal my credentials and impersonate me, since the bank website uses transaction-bound OTPs.

      Somehow, I feel like your opinion is somewhat unimportant, really.

      I wish I could care, I really do.

  79. Production is Production - hands off by br0ked · · Score: 0

    Its a very easy NO! Production is production. It can not go down! All software installed there needs to only be installed by the people that get the calls at 0300.

  80. Ideal versus Reality by scamper_22 · · Score: 1

    In an ideal work, I want to leave the system test environment to the test people.

    In an ideal world, a company cares about system and test engineers and think they should be just as capable as developers. They know how to automate labs and use whatever tools they use. Working in R&D, this is often not the mentality of management.

    In an ideal world, software installation and configuration is given constant up-front importance. I've always push the that any piece of software should be easy to build and install from the beginning. It simply helps everyone start working on the project.

    So while I'd love to leave the system to System/Test engineers, the reality is that I often do need to end up installing and doing systems work. Part of this is good as a develop who doesn't know anything about systems is going to have a lot of problems.

    But that's all ideal. In reality, we don't have enough system/test engineers to really make it feasible. I have to build/setup my own labs half the time, so I know how to do it anyways. So it's not a stretch for me to manage that half the time.

  81. Let them watch by Anonymous Coward · · Score: 0

    How about you record "everything" in the session when installing production? This way devs aren't doing the process (which can be bad, because they can skip steps in documentation and god forbid they go or forget), and you make sure you know the problem is either a misstep, some different variable, or simply bad code. Either that, or have the developer be there watching what's happening WITHOUT interfering. (More costly)

    Ideally there is a lot of communication before and after, and the process of deploying is pretty transparent (ensured by the recording of the process).

  82. How about not being so ridid? by Anonymous Coward · · Score: 0

    It all depends on the individuals involved. When problems happen, your best guy/gal needs to grab the problem, be that a developer or integrator. Have some flexibility and use your people according what best fits the situation.

  83. On Production? Never. by SkimTony · · Score: 1

    Developers should never be allowed to install anything in a production environment, for the simple reason that a production environment needs to be well documented. When the Devs install their own stuff, they don't follow the documentation, if any even exists; they just install it the way that works, which probably bears no resemblance at all to the documentation.

    On the other hand, Developers should be forced to watch while their software is installed, per the documentation, and then when nothing works, they should be given the documentation and made to fix it. Alternately, a separate person/team should watch the developers install their stuff on a clean system, and document every step they take, for reproducibility.

  84. Dev tools by vlm · · Score: 1

    I know I'm posting late, but where I work, for internal apps, we "git flow" and have some naming conventions and if your "deployment instructions" as a dev are more than the single line "git checkout release/2012-09-blah" then you've failed as a dev, naughty dev, go away until that works. That's the official "demac point" or whatever you want to call it.

    So... umm... yeah... a dev can log into a production server and type in "git checkout release/whatever". And the admins know it..

    I'm sure you can make a horrifically complicated system involving all kinds of software and checks and balances and endless procedures and meetings, but if you can eliminate all that via technology and standardization, that's a win.

    The biggest problems I've ever heard of with "git flow" is devs making releases work unidirectional (like they only support database schema upgrades not downgrades, add a line to a file every time it notices it was upgraded without checking to see if the line is already there, etc) and devs and admins getting into branch "revert" wars and people on both sides refusing to adhere to the demarc (well, yeah, git checkout and then also please manually edit file X and blah blah for 5 pages, um, no thats not the agreed upon standard, nothing but one git checkout line is allowed) All three are management level issues not dev / admin issues..

    Needless to say this forces massive automation and logging and a real test environment the use of which is enforced. Which is good.

    You can put a hook into git such that it emails when you change branches. Don't recall how, maybe its just a script that periodically looks at diffs of the output of "git status", but its obviously quite valuable in this situation, combined with a email list for the admins and devs, so everyone is instantly on the same page when something gets released.

    --
    "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    1. Re:Dev tools by Todd+Knarr · · Score: 1

      That won't work for a lot of places. For instance, a system that uses a database where the server and login information changes from environment to environment (development uses the development database server, production will use a completely separate different database and DB server). Often the developers won't know the information for production, and they certainly can't put it in a non-production configuration. That means you'll have a git checkout to get the base code, followed by inserting environment-specific information into the configuration. Or more likely a git checkout of the software followed by applying updates to the existing configuration for new and changed settings if any (often there won't be any configuration changes for a new release). Ideally the configuration update's handled by either a script or a simple patch to update files, but sometimes the easiest and most reliable way is to simply document what needs changed and let an experienced sysadmin pick the best method to do it.

    2. Re:Dev tools by vlm · · Score: 1

      True, but those are bad designs. Some kind of environment or global variable tells you if its prod or dev in most of the "framework"ish systems. Not too hard to implement something like that in other systems. So.... all your passwords, hostnames, config, whatever are all located in /usr/local/src/passwords/whatever and that file and/or directory is different for -dev and -prod and admin via puppet maintains that file... the devs just have to trust them. This guarantees a goofy dev is going to hardcode the wrong thing in a app generating chaos, seen it a million times.

      Also you'd be amazed what a motivated admin can do with Puppet. You can "git checkout" and then force a puppet run and within a couple seconds puppet has done "whatever" to completely customize the system.

      I will say that "git flow" only works for application changes. Fundamental server software changes pretty much need admin coordination (We're using rails 3.2 now, etc). The devs can help the admins by squirting in a syslog message every time the app crontab kicks that says "gotta install 3.2". But someone's gotta apt-get it all into place. Server software changes are best done by rolling out an image with all the changes as -test and then promoting the image, assuming it works, to -prod, just like any other update or security patch..... "git pull" in a crontab is the kind of mistake you only make once... But purely for app changes, git flow will do.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    3. Re:Dev tools by vlm · · Score: 1

      True, but those are bad designs

      I mean specifically the places where it "won't work" as opposed to your designs, which will work.

      Its possible to "sabotage" an app with endless hardcoded stuff, but that means the app dev failed design, hard. If an admin has to grep around in the raw source code at 2am to change an ip address, the dev has failed.

      --
      "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
  85. We're Gonna Need A Bigger Bureaucracy by smittyoneeach · · Score: 1

    It's all coming to a head.
    Individual developers just can't do it anymore. They didn't build that library. They can't deal with the combinatorial explosion over time of code in the wild.
    We're just going to have to hire more bureaucrats to dance around the issue, throwing acronyms on PowerPoint slides at the problem.
    Higher level code, called 'legislation', in the language called 'English' will be delivered by the ream.
    This write-only code will trigger paralysis in all who read it, and, eventually, the economy the readers inhabit.
    Legislation is become the destroyer of worlds, and a right jolly virus indeed!
    After you collapse the economy, the problem of developers installing software enters a self-solving stage.
    You're welcome.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  86. IMHO the answer is mabey by FuzzyDustBall · · Score: 1

    First off if your reason for not letting your developer touch the production server is that they might hack it up, I suggest getting a new developer. With that said I assume you are running a business which really makes this a resource issue. There may be a couple of reasons why developers would do the installation.

    1. The cost in time for developing/maintaining an install system is more than is required for the developer to do the installs themselves.
    2. The systems could be very unique and having installers with enough knowledge to install even with a good installer is not as cost effective as having a developer that does it part time.

  87. JTAG by Anonymous Coward · · Score: 0

    I'm the only one in the office that knows how to use the JTAG

  88. It depends by Anonymous Coward · · Score: 0

    I've worked in shops that developers are not allowed to install on their desktops. Never seemed worth the weeks it would take to me, but at least I got paid for doing nothing.

  89. Sounds more like a moral argument by Anonymous Coward · · Score: 0

    If it works in production who cares who installed it. The idea is creating applications that work for the appliance they are built for. Unless your making a consumer product there is no need to even bring it up.

  90. That depends... by whatthef*ck · · Score: 1

    Do you want it installed today, or do you want to wait a week while I write up instructions and scripts and test them in a clean environment (that will probably need to be built from scratch)? And, of course, while I'm doing that I won't be working on the other projects everyone's been hounding me for. Is it OK to push the delivery for those back a week? Your call.

  91. Company size versus policies by angel'o'sphere · · Score: 1

    If the amount of developers in a company is below X they usually install their own software and decide on their own which tools and libraries to use. The millage will vary, but you can call them the teams with 100% productivity. (Yes one of those teams will beat the other one badly ... )

    If you have a centralized policy that usually means: new developer, takes 2 weeks to even get his computer; now he has it, it takes some days until he has the base software (IDE, source code revision control software, CASE System - if needed - , Email, external Web access (yes sometimes developers need google or stackoverflow) ) finally he needs: credentials for the http proxy, to access a maven repository and subversion. After 4 weeks he has all the necessary software and credentials ... consider: the year has 12 month, 1 the developer is spending on vacation and one on getting his initial development environment up and running.

    Allready 10% time is lost. Not to mention all the other hurdles because 1000 developers share the same SVN repository via a 100Mb ethernet.

    I for my part prefer a situation where developers can decide themselves. Usually they just put their own local svn server on one of the dev boxes ... 100 times faster.

    Or they install a groovy plugin or take another rules engine ...

    Bottom line I would claim they are twice as effective as teams where the corporation tries to control everything.

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  92. Left to the dev by OldManCoyote · · Score: 1

    For embedded development work, it's a requirement that the dev pubs their build onto the target hardware. We just couldn't do our work without it. But once the developed software has been tested on a test system, it should be left to QA/V&V to make installations...

  93. Like with most things in life... by luis_a_espinal · · Score: 1
    ... it depends. Amazing I know!!!(10+1)

    Should Developers Install Their Software Themselves?

    Should developers be responsible for installing the software they develop into production environments?

    It depends on what the hell they are doing. Are the developers creating a medical device or mission critical system? Are they developing a shopping cart? Are they contractually bound to use a specific set of tools (or eat their own dog food if they are in the business of tool development)?

    What about System Test environments?

    What about them? Again, it depends? What's the size of the organization? What are their testing needs? Is the organization or project contractually bound to have a strict separation between development and testing (say as per DO-178B and/or other standards for avionics)?

    I'm not a developer

    Then shut up then. Seriously, I tell you why a few lines below.

    and I'm not all that familiar with Agile or DevOps,

    What does Agile/DevOps has to do with developers installing their own tools. That's unrelated to the development process of choice (agile, waterfall, whatever.)

    but it seems unhealthy to me to have software installs done by developers

    And this is why I tell you shut up. What the hell do you know about developers and development? Since you know nil, on what basis can you say this or that is unhealthy. Unsubstantiated, subjective opinions are not facts, and are a dime a dozen (and we have way too many of those already in the industry... and in life in general.)

    Again, as I mentioned before: IT. DEPENDS. In some cases, it is ok (and even necessary). In other cases, it is not. Making assumptions about it without specifying a working context, that's just brain farting.

    I think that properly developed software should come complete with installation instructions that can be followed by someone other than the person who wrote the code.

    So the end user should know how to install the compiler suite and editors I installed on my machine (plus dev-specific configurations) to use the system I wrote. Brilliant. Make users' live more difficult. Yay to productivity and increased ROI!!!!! That was sarcasm btw.

    I'd like to hear opinions from developers.

    You like pointless exercises for attention whoring sakes, do you?

    1. Re:Like with most things in life... by pkinetics · · Score: 1

      Agreed that everything should be defined as fit for purpose.

      I think that properly developed software should come complete with installation instructions that can be followed by someone other than the person who wrote the code.

      So the end user should know how to install the compiler suite and editors I installed on my machine (plus dev-specific configurations) to use the system I wrote. Brilliant. Make users' live more difficult. Yay to productivity and increased ROI!!!!! That was sarcasm btw.

      The person following the installation guide may be another tech, and not the end user. What happens when the installation fails at 3am, and the developer skips a step because they have been whacking away longer than it should. A step by step guide provides a checklist for complex moves.

      Is it always needed, like you said, depends. On the other hand, it is like documentation. Developer's never want to do it, and inevitably they are horrible at it, but when you need it, boy it is there and you have a nice warm fuzzy down the road.

      Is there a return on investment, depends. Take any nasty move to prod, with a lot of complex steps, or more importantly potential for disaster, and I bet anyone worth their money builds some form of installation and troubleshooting guide to it before actually doing it. Assumptions are the mother of all #uckups, and until you are bitten, the negative / null assumption is overlooked.

  94. I wouldn't trust developers by pkinetics · · Score: 1

    Without a proper Move To Production strategy, mandated and followed, developers end up being sloppy about deployments.

    The only time I have consistent success is when we have a Move Coordinator, who reviews all moves before deploying to Production.

    The developer builds the move process, including rollback steps, and tests it against Dev. (They have a rollback step that they can use to reset the Development environment, and it had better be tested.) It is reviewed by another person, preferably the task lead or the actual Move Coordinator, who verifies it works in the Test region, including the rollback steps. (So what if you have to run it twice, better safe than sorry.) The results are verified by the End User / Client. If approved, it is scheduled for Production. Ride the end user, cause they will forget to test it, and then when Prod is refreshed down to Test, they can't find the changes and you have to redeploy again.

    If the Move Coordinator is the developer or task lead, an alternate is designated to review and verify.

    No matter how many developers and skill and experience levels I work with, someone inevitably makes a shortcut, saves it as a on off, and "I'll remember to plan this as part of my deployment." and forgets it. It does not matter on complexity or experience. Everyone does it.

    Trust no one and assume the worst. The rollback is your safety blanket. Never forget it. Back up everything. The more data changed, the more important to have a recoverable methodology. The bigger the system, the bigger the exposure. Frankly, I like my a$$ as it is, still attached and not chewed off.

  95. need usable dev test platforms by Chirs · · Score: 1

    I run into this regularly. A full-scale system install costs $$$. However, we have a (very) limited number of them for the dev team to use when debugging issues that only show up on full-scale installations.

    When your bug only shows up at 90% of rated operational load, you _need_ a system that can reproduce that scenario.

  96. If you want an installer by drolli · · Score: 1

    then pay for it. Writing and automatic installer and or/packaging software takes additional time. The more standardized and better working you like it the more work it takes.

  97. spoiled developers have to have admin rights by JoeZeppy · · Score: 1

    ...and this is how we ended up with all Windows apps requiring local admin rights to run correctly. Because all the developers had local admin rights to install their own software, so all their software worked fine for them when they tested it.

    In my experience, developers no very little about the OS, security or any of the technical nuts and bolts of how an OS works, and what bits should not be modified, they know just enough to be dangerous. I've actually had a developer go into security settings and deny access to Everyone at the root of C:, to keep virus scans and software updates off their system. Of course, they didn't realize that "Everyone" means them too, and the system account as well, and are surprised that the machine reacted badly to this. Also, too, they managed to do this on a Friday when they had CRITICAL WORK that MUST GET DONE by MONDAYS DEADLINE!.

    Which makes me want to ask SO WHY ARE YOU F#$KING WITH YOUR PC INSTEAD OF WRITING CODE? Lets make a deal, I wont write C++ code and you don't try to administer my boxes. Never mind, I wasn't doing anything this weekend anyway.

    1. Re:spoiled developers have to have admin rights by JoeZeppy · · Score: 1

      I actually read this as "should developers be allowed to install software "on their own PCs."

      Letting them install software for other users is a whole 'nother level of insane.

  98. Oh god. by Anonymous Coward · · Score: 0

    Should developers be responsible for installing the software they develop into production environments?

    Absolutely not.

    I know there are developers who have a grasp on systems out there, but your average developer couldn't tune something as simple as Apache, for example, to save his or her life. They're often not aware of business requirements change management, sign-off, et cetera. (They don't need to be - they're developers.) And the number of developers I've had to personally teach, "Back up the database before running your fucking script that alters data," is legion.

    I could go on, but I think the reverse question illustrates the stupidity: Should you let your sysadmins write critical application code? How about your salespeople? Surely the head salesperson can crank out hardcore C, right? No big deal.

    What about System Test environments?

    That depends. How lazy is your systems team? Test environments should be provided. Unless you're running a half-assed amateur hour business, you're going to need to be concerned with package version matching, configuration similarity, et cetera. with production.

    'course, if your'e lazy, you let developers do whatever they want locally, and force integration/testing on a staging environment that mirrors production. This is often the best of both worlds, because developers can get anal about their local setup. (Rightfully so! As a systems person, I myself cringe whenever vim-enhanced isn't available on a remote box.) It does come with the potential for, "Works on m local system!" syndrome, but that's generally easy to remedy provided your developers aren't "rockstars".

  99. Packaging is an arcane art! by anwyn · · Score: 1
    Deveopers should do what they are good at, developing.

    Testers should do the testing.

    Packagers should do the packaging.

    Sysadmins should do installations.

    Requiring devopers to know everything in the Debian Policy manual would be too much.

  100. i get hairy monkeys to install my software by Anonymous Coward · · Score: 0

    the funny part is if you put enough monkeys in aroom some day something wonderful will happen

    1. Re:i get hairy monkeys to install my software by minstrelmike · · Score: 1

      Some days something wonderful happens even in a roomful of monkeys. That's the promise of probability and is why people buy lottery tickets.
      Most days you end up with a room full of monkey shit. That's the reality of probability and is why lotteries make money.

  101. No, Bad idea. by Anonymous Coward · · Score: 0

    Three words dude: Segregation of Duties

    Read up: http://en.wikipedia.org/wiki/Separation_of_duties

    Several free matrices exist on the Internet. If role A and role B together are done by same person and can lead to fraud or significant error, either these two roles cannot be done by same person, or you need acceptable compensating controls (mitigating factors). Typically these should be preventive, but corrective and detective controls may also be appropriate. YMMV.

  102. For god's sake, NO! by Anonymous Coward · · Score: 0

    If the production sys admins can't install (AND BACK OUT) software they should reject it,
    since it doesn't meet their needs.
    Going another step
    If the Config Management people can't build it (given a 1 page max README) they should reject it.
    They should be able to take that 1 page document, the SVN repository, and OS install disks
    and I guess an internet connection and be able to build in half a day.

  103. We had a department for installations by Anonymous Coward · · Score: 0

    We had an installation department that I was a part of. All we did was install the software and then we had another person who stayed at the company to see that it got up and running. This was a major insurance system and we could not trust just anyone to install it. I was a software engineer (current day glorification term for computer programmer) so that someone was there to fix any problems that might pop up. Every main frame system is different and you don't know what you might run up against.

  104. I'm not -- but there are two reasons! by Lorens · · Score: 1

    We agree one needs at the very least two environments. When you have lots of money -- or lots of VMs :-) you can have lots of environments. You need a developer free-for-all environment where developers can play, this could be their own machine but sometimes you'll need dedicated machines (hardware, expensive licences, whatever). Then you need testing/QA machines where normally you would not permit developers, and production machines where you do not permit anyone more than necessary.

    The packing needs to be done because when you have few people authorized to do installs, then the people who do have that authorization must be able to do any and all installations, and it forces handoff to Operations. I work in a place where we we have so many different applications we need a database to keep track of who is responsible for which part of which application, and it would be (even more of) a nightmare if something had been installed in some unknown or non-standard way.

    But there are two reasons for these rules (at least!).

    Most people here are taking this from an engineering reliability aspect, and that is a valid concern, but in many companies the rules separating environments are also motivated by security and confidentiality, and are often even based in law and contract agreements. One might hire a team of contractors/temps to develop something, but not only must they have no chance of inserting malicious code anywhere, they must never ever even *see* production data, only dummy data! The classical example is a bank or a hospital, but this could/should also apply to ISPs (mail...), anything that stores SSNs or credit card numbers or passwords, etc.

  105. No by minstrelmike · · Score: 1

    Developers should not install software, especially stuff they wrote.
    The *nix software available is proof of this. All the Linux folks say it is more secure than windoze 'because' you don't have to run everything as root.
    Maybe not but most all the devs I've ever seen login as root just to work. And then when they give out some piece of new software, it doesn't install OR work unless you're logged in as root

    TESTING should involve testing both the software and the instructions.

  106. Three thoughts by salesgeek · · Score: 2

    On developers never having access to production:

    In many cases, developers are the only people who understand the full application, and in many cases are the only people who can actually troubleshoot a botched install or figure out why things aren't working right in production. Yes, you are suposed to have some kind of QA or staging environment and you are not supposed to deploy bad code, but sometimes things go sideways. In these cases, only a developer who knows the code and any integration issues will be able to figure out what went wrong. Acting like developers should *never* have access to production is a lot like saying "the mechanic should never have access to my car's engine, ever". It makes sense 99.9% of the time, but there is a .1% where your engine is broken and the mechanic can't fix it without getting under the hood. Yes, Mr. System Administrator you can change your oil, rotate tires, and even change wiper blades but fixing a spun road bearing or smoked transmission solenoid is flat out.

    On Developers and Access Rights:

    There are a lot of developers who don't understand the computer they are developing software on. Usually, they are very BAD developers. Take for instance, a webdev who doesn't know Apache. Instead of using built in tools like mod_rewrite, the developer will build their own tools to do what is built in to apache. Good developers know their platform, often at a level that is much deeper because they take time to read code or API and config documentation so they understand the toolbox they are working with. Often a single line of configuration is more powerful than 1000's of line of code. Developers need to be administrators on at least their developement environments... usually extended to staging there is a large difference in scale between development (a VM on my laptop) to staging (multiple servers) and production (hundreds of servers).

    On installer driven software:

    It doesn't matter if you use installshield, roll your own RPMs or use Salt, Chef or Puppet. Any way you go you should do everything you can to automate installation. When you automate you reduce the chance of human mistakes in installation process. If you do installation automation right, then a deploy to production can be triggered by anyone with appropriate authority or any automated process with appropriate authority. Having people sit at the console and install software manually should be a red flag that the software you are buying sucks or is incomplete.

    In Enterprise-Grade software:

    Installatioin should be automated to the maximum extent possible, using the appropriate operating system installation tools. Documentation for the upgrade and install should be clear enough that a non-developer can successfully install and test the installation. Install activity should be logged, so that if something does go wrong, it can be figured out later.

    --
    -- $G
  107. Dev != ops by emt377 · · Score: 1

    Never, ever have your devs do ops. Developers need to think further out, work on projects, in a deterministic proactive fashion. Day-to-day Ops is reactive and if you get your devs involved in it it's going to be a huge distraction in the short term and a burn-out factor in the long term. The best devs are very good long-term proactive thinkers that will very quickly burn out when confronted with ops work, not only because it's counter to how they think but also because they still have their project responsibilities. And, the worst possible thing you can do is put your devs on call. They won't say anything, because they will recognize the necessity of someone responding, so they'll suck it up. Then they leave for a job elsewhere where they don't have to.

  108. In summary... by Thuktun · · Score: 1

    Looking over all (heh) of the posts already here, then adding my own $0.02, the answer can be summarized as follows:

    IT DEPENDS

  109. Use Chef or Puppet by Anonymous Coward · · Score: 0

    The tools Chef and Puppet take script files that define system configuration and installed software.

    With these scripts you can define
    * what packages are installed (effectively scripting apt or yum)
    * what services are active
    * what users exist
    * many other useful things

    Having production machines configured by Puppet or Chef has many great advantages:
    * can deploy the same configuration to multiple servers (eg a cluster, or standby machines)
    * can version-control the system configuration
    * can apply a variant of the script for test/uat and be sure you are getting a very prod-like environment

    And it solves the original question here - the developer can participate in "deployment" by committing changes to the scripts. Sysadmins can review these scripts, run them in UAT environments, and then merge the changes to the production branch in the VCS.

    I worked in a large company that used this approach, and it functioned extremely well.

    There is also a large open-source foundation that *open sources its sysadmin work* by having its scripts in a public repo. People can post patches to the scripts, which are reviewed/tested/committed just like commits to the sourcecode. Very cool. Sorry, forget exactly who that is...

  110. coders will learn from their own bad habbits by fredr1k · · Score: 1

    It's good to have lend the developers into the delivery project team. They learn how their shortcuts or bad programming habbits actually affect the product that the customer receives.

    --
    "Never EVER mess with a jumper you don't know about, even if it's labeled 'sex and free beer'." - Dave Haynie
  111. No devs in prod by dindi · · Score: 1

    No. At any decent shop developers do not even have access to production.

    You develop your X hours in the morning (or whenever your contract says so) at a development environment. At smaller shops then the developers or testing engineers move it to the testing environment. (with sufficient documentation on what should go where). At bigger shops it is "middleware ops" who do this after a change request is approved at the change meeting (if the company somewhat follows ITIL).

    Then the product is tested by comparing the wannabe you developed to the specification. Testing can be by testers/qa/customer/whoever else. Really depends on the house.

    If the product is functionally OK, it is moved to staging/performance testing (one or two environments). These environments are EXACTLY the same as production in an ideal case, the performance testing many times is an environment with both worse and better hardware then production (or something you can throttle/bottleneck artificially).

    After that it is production. Production should never be touched by developers (only in extremely small shops where you design, develop, deploy maintain ... errr .. and answer the door and help customers ... and clean the floor sometimes)....

    We developed a product that was released early, we had lots of bugs. Our "tech dept" (kinda like middleware, but not too clever) cannot support it, because it is "all too new complicated technologies" they refuse to learn. The owners do not understand these matters very well (being old and not too much into IT), so the problem escalated, that not only our entire environment (small: 5 DBs around 20-25 linux servers (Apache, MQ, APE, some JAVA console apps, and 10 client stations that run some of our web interfaces for intranet) had to be supported by my small team of 5 guys.

    Voicing my opinion that our 5 developers should probably not be forced to start setting our clients' environments up too while still finishing the product - an argument you don't want to be part of - got me dizzy today morning, with a high heart rate, sweating and slightly slurred speech. I decided that no money or company is worth ruining your health and when someone expects you to do their job you should either suck it up and do it or stand up and walk. I stood up, packed my stuff and left. Now I am sitting home and wondering what now ....

    If your company is starting to push your developers into doing tasks they should not do, they should be informed of the correct procedures and pointed to the dangers of letting a developer deal with systems. Yeah, I also did 10+ years of network and UNIX/Linux before got back into development, so there are some (a lot) of us who can do it - but we should not, unless it is an emergency of some sort.

    FYI we have 22.000 + registered users with 5-10K concurrent. Not an environment 5 developers should cobble together then install their crap on.

    Once you let the "emergencies" in, they become the norm and you might have to design, develop, deploy and then even troubleshoot, since now they know you can do it. And then there is no going back, you are doomed. Like me. Hopefully not shaking for 10 hours and not out of a job with a family where the 2nd baby is on the way......

    OTOH ... it depends a little on the product. An .exe or .jar or .app can be easily given a 3 step install with roll-back. A PHP site with 10.000 files is a little different. For a long time I helped our sysadmins with a replication script I wrote in Curses/shell with rsync doing the heavy lifting. They demanded the source (I had a good reason to keep it back) so I gave it after agreeing, that this was just "nice of me" and that they should be doing the scripts while I develop with my team. They ran the first replication test in the middle of our afternoon rush. A new customer with 10 sites was down for 18 hours. It took 5 of my guys 5 hours to fi

  112. Ask Knight Capital about this. by EricScott · · Score: 1

    Anyone from Knight Capital want to comment?

  113. Fuck no by Anonymous Coward · · Score: 0

    Developers should only have read access to production environments, never write access.

    Production support people, the ones who do the actual software installs, need to be competent individuals able to understand the install scripts are supposed to do and be able to fix them when they break without calling the developer and saying "Wahh! your script broke!", because production environments always differ from dev and QA environments. That means your installers have to be more competent than trained monkeys.

    I've seen apps that were down for days because of a typo in the installation instructions where the installers couldn't do shit about it, and couldn't give any feedback other than, its broke. The ignorant fucks were too stupid to see that the path was simply wrong, because production was not identical to QA or DEV. and the dev made a fucking typo.

    And no making sure that dev/qa/integration/beta/prod identical is not a realistic solution I have never fucking seen it outside of a mainframe environment, ever.

  114. Sure in DEV, but not QA, UAT, and PROD by asv108 · · Score: 1

    I have no problem with developers installing in DEV, but they should not be pulling the trigger on any environment outside of development. The trick is to make sure that the process is consistent across all environments with different teams executing the release. I sell software that solves these problems, but its usually the process not the technology where the biggest problems reside.

  115. no ops by cratermoon · · Score: 1

    As a developer, the last thing I want to deal with in ops issues. Here, I give you the install script, does it fail? Fine, let's fix it. Do I want to be on call at all hours because your monkeys can't run 'make install' properly? Fuck no. Half-assed attempts by ops staff and craptastic server clusterfucks that result are not my problem, and trying to install my software on a mis-provisioned system with a single-core 128MB instance when the system requirements clearly state a 4-core system with 4GB should result in immediate termination.

  116. Treat configuration as code! by Anonymous Coward · · Score: 0

    I'm a big fan of virtualisation, but not for copying whole VMs along with software configuration - that's just crazy talk. Virtualisation is a tool that, when combined with others like Puppet/Chef/Saltstack, allows you to quickly iterate and get new machines to the same working state every time. These configuration tools also allow you to plug in your own custom configuration data for a particular environment, but use the same "recipes" to deploy that configuration. You can version and release the recipes and the configuration, thereby treating them as code. The result is: (1) developers/ops jointly own the deployment recipes, (2) developers OR ops can jointly own the (now much simpler) configuration data, (3) everything is versioned so you can be sure you're deploying the same thing to production as you tested (4) "reinstall from scratch" is now possible for dev, test, and production environments with 100% consistent results every time.

    Of course databases etc. have to be treated specially, but databases don't usually sit on the same servers as applications, at least not normally in organisations of such a size as to have deployment problems.

    Devs need access to logs. In a trusted environment with trusted devs, give them access to the servers with strict instructions to not change anything except in emergency situations with prior approval. In less trusted environments, make sure an Ops guy can sit next to a developer (or vice-versa) to debug a problem, and for gods sake, give developers access to the application logs somehow. Look at Logstash or similar.

  117. Big AU website that gives devs full access to prod by Anonymous Coward · · Score: 0

    I work for one of the biggest websites in Australia and at heart an OPS guy with specific skills and im a strong believe in configuration as code and having an automated build pipeline. Once you are at that stage then giving full access to (their own specific servers in) production isnt a mind blowing exercise to 'operations'.

    Our mantra is 'you build it, you run it, you own it'.

    The key thing that we have gotten to is that we, for all new things anyway, deploy by trashing the servers and rebuilding them and installing an RPM package of the application. Re-installing a server to deploy sounds a little insane but if anything provides the assurance and environmental consistency that are the key to this issue.

    If you re-install your box to deploy and your deployment is an RPM (or similar) package install that pulls in the required packages, then you have assurance that your test, preprod and prod boxes are exactly the same.

    The difference is around configuration - ie talk to X database here, Y database there. To address that, we use DNS (short host names) and environment variables for sensitive information.

  118. Re:Big AU website that gives devs full access to p by Anonymous Coward · · Score: 0

    deploy by trashing the servers and rebuilding them and installing an RPM package of the application

    What happens when your application is not the only thing on the server? What if there are 30 apps on a server? Even if no downtime were incurred due to HA configuration, that creates a lot of risk and extra testing effort in scenarios where you don't have dedicated servers for individual apps.

  119. They should at least try it by kiick · · Score: 1

    One of the greatest learning experiences for a developer is to see things from the customer/user perspective. For that reason, I'm going to buck the trend here and say that developers should HAVE to do at least 1 customer install, just so they know what hell they are putting them through. There is often a big disconnect between what the developer thinks he's producing and what the field people actually have to do to get it to work. The way to fix that is to make the developer go through the experience.

    That being said, I do agree that anyone (properly authorized) should be able to install the software. If you can't install it without the developers help, then it isn't ready for prime-time.

  120. Oracle developers by erexx23 · · Score: 1

    All of our Oracle developers install their own software. They have no problem doing so.

  121. 3 O's by Anonymous Coward · · Score: 0

    On Production: Never On Test machine: No On Dev machine: Definitely yes and only they should install.