Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My boss wants to introduce new guidelines for the computers in our company. This means that the software environments will be completely standardized with a predefined set of tools. The goal is that all machines are completely reproducable and exchangable.

I'm wondering what the guidelines for developer's computers are in large companies, such as Google or Microsoft, especially companies which are certified according to some standard (e.g. ISO 9001). Do they allow developers to install software from the internet if they need it for some small task? (e.g. a code compare tool, CygWin, Windows Service Packs) or do they really want all needed tools in a fixed, predefined environment where all proposed changes must be discussed with a system administrator first?

share|improve this question

closed as not constructive by Oded, Jim G., gnat, Walter, ChrisF May 12 '12 at 11:33

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

9  
Standardized for the entire company or for developers? The former is guaranteed failure. –  Telastyn May 9 '12 at 19:23
4  
"Congratulations, team! We're now standardized on Windows 7 and Visual Studio 2010! Now who wants to write their first iOS application on their shiny new Dell?" –  Ant May 9 '12 at 19:27
2  
@CodeWorks - For a large development team this is cost effective (you have standard hardware and support contract and you can reimage a computer without much hassle, on the software side). –  Oded May 9 '12 at 19:32
1  
I get admin access on my local pc, but if anything happens to my pc they just re-image it to a base image missing any development tools. I'm told this was the compromise after much fighting to get standardized image, since they were unwilling to create a per developer or generic developer image or push any custom software requested for us. –  Ryathal May 9 '12 at 19:36
1  
Where I work, it's "Here's your computer, pick an OS". You are expected to install and administer your own machine, and the only hard rule is that you need to keep things secure - full-disk crypto, up-to-date OS and software, local firewall, etc. That, and that you need to do your work, obviously. –  tdammers May 9 '12 at 19:59
show 8 more comments

3 Answers

up vote 3 down vote accepted

You're really asking several separate, but related, questions here.

Hardware

First: every company I've ever worked for had some kind of standardization of desktop machines. At a minimum, the hardware and OS were standardized across large groups (possibly in rolling categories: you get this year's machine when you start, and then 2 years later you get that year's machine, etc.).

As for what the hardware is like: a great company will give everybody in the building awesome hardware with fast CPUs, giant monitors, and huge amounts of RAM, even if they don't need it. A good company will at least make sure that you get hardware that is adequate to your job (which at a minimum means that engineers will get bigger screens and more RAM than the receptionist does).

Standard Software

Not only that, but every company I've ever worked for had some kind of standard software set up as well. At a minimum, that means things like email/calendar/groupware, office software, etc. Everybody gets the same thing by default; at some companies you can get something else if you have a justifiable reason (although there may be lots of paperwork involved). Plus of course you'll get the company's standard line-of-business software (although these days those applications are often web-based). You'll usually be given these applications, and you're usually stuck with them.

Specialized Software

Then there is specialized software that you need to do your job: compilers, IDEs, image editing tools, etc. Regardless of whether we're talking about free software (e.g. Eclipse) or expensive software (e.g. Visual Studio, Photoshop), the company will usually standardize on a version. So everybody who gets Visual Studio gets 2010, not 2008 (or something like that).

Inevitably, this leads to there being some officially-sanctioned place for the standard versions of things to sit -- if for no other reason than to prevent everybody from re-downloading Eclipse. Likewise, for software that has update servers or repositories, it's common for the company to run its own internal mirror repository (and possibly to block access to external mirrors) to ensure that (1) big packages are only downloaded once, and (2) everybody gets the same version.

Generally, any software that's in a company officially-sanctioned repository (where that may be an OS package repository, or just a file share with installers, or even just a file cabinet with install disks) can be installed on your computer. Most places I've worked allow you to self-serve install this kind of software, regardless of whether it's free software or paid.

What About Everything Else?

But that brings us to what appears to be your real question, which is twofold:

  1. What about software that isn't officially sanctioned (yet)?
  2. What kind of customizations can I make to the software? (Or, equivalently, what kind of administrative rights do I have on my own machine?)

For the first question, it depends on the company, and the software in question. I've heard that some companies are pretty draconian about non-sanctioned software, but everywhere I've worked the policies have been pretty relaxed, especially for engineers. Sometimes a particular software package is disallowed because it hogs company resources (e.g. peer-to-peer file sharing) or is fundamentally insecure (e.g. various types of remote PC access software) -- in that case, there is usually a company-sanctioned alternative.

For everything else, there's usually some kind of approval process. At some companies, this is as simple as asking your manager, "hey, can I install this software?", whereas at other companies the software may need to have several levels of sign-off. Expensive software and software that communicates with external services are the most likely to be carefully scrutinized, as well they should.

The second question is more about how much freedom an individual employee should have to make changes to their own machine. At most places I've worked, engineers are given pretty broad leeway, with the caveat that certain changes will "void your warranty" -- the company helpdesk won't support you anymore, and you'll have to deal with any issues on your own. Non-technical staff usually have less leeway, mainly because the helpdesk doesn't trust them to not break something.

For example, at my current job (at a large software company mentioned in your question) I don't have root access to my own machine, but I do have sudo access to do most everything I need. At a previous job at a smaller company where we were on Windows, I was in the Administrators group on my own machine, so I had pretty free reign.

share|improve this answer
add comment

Even standardization for developers is crazy talk. I have never worked anywhere where everyone users the exact same set of tools. Is he going to buy 100 seats of Photoshop because the 2 guys on the graphics team need it?

What is going to happen is you will need some tool specific to your task on the project. They won't buy it because then they will have to buy 100 seats.

I get having some commonality of setup and a certain degree of standardization is important. (like all linux, Mac, Windows, same brand, model,etc) Make sure they are willing to commit the resources though to equipping the development team to be their best.

Fought this battle once where we had to use the same machines as the customer service flunkies. Lasted a few weeks and we had to upgrade the memory, still wasn't enough because they bought the lowest common machine they could and it didn't support the larger amounts of memory, came with slow hard drives, and no dual display support.

An IT professional has different needs than the secretary. We tried to get them to create a few classes of machine (like workstation and desktop) but no dice.

Sad to say, company is no more. Not just on that issue, but it is indicative of bad management or allowing one group (IT purchasing and Support) to make decisions for another (IT development)

share|improve this answer
3  
Usually companies standardize by role. The graphics designers will have one standard configuration with Photoshop. The developers will have a different standard config that includes Eclipse or VS2010 or whatever tools they use. Accountants should have a different standard config. One single config for everyone would never work, unless everyone in the company does exactly the same thing. –  FrustratedWithFormsDesigner May 9 '12 at 19:49
1  
That didn't stop my former employer from trying –  Bill Leeper May 9 '12 at 20:38
    
Having standardized builds doesn't mean everybody gets the same software. You can have multiple builds. You can add specialist stuff after you've dropped a build on a machine. –  Erik Reppen May 10 '12 at 19:35
    
Actually the @felix-dombek said completely standardized with a predefined set of tools. The goal is that all machines are completely reproducable and exchangable. That means they ARE getting all the same software tools, management seems to think the developers will be switching computers around. –  Bill Leeper May 10 '12 at 22:39
    
Ah, misunderstood that. Wow is that dumb. –  Erik Reppen May 11 '12 at 7:10
add comment

In my experience, most companies have three tiers of standardization:

  1. Standard developer images - Standard hardware, and the software that the developer needs to communicate with the rest of the company. Email, Office (or equivalent), standard browser, IM, service packs, sometimes Visual Studio if TFS is required universally, etc.

  2. Standard apps - Apps that some people need, but not others. You maybe don't need 4 different paint apps running around the company, or you don't want to pay for licenses for people that are just going to ignore the app. These are good to get and have in a central location to cut down on bandwidth/wait time too.

  3. One-off apps - Stuff that developers want/need. Most companies I've seen allow developers leeway to install what they want/need. Alternative browsers, profiler of choice, visual studio plug-ins, etc. Things that are free, un-supported by IT, and don't cause compatibility issues with others.

share|improve this answer
1  
#3 is critical. Even non-open source devs are constantly trying out new free solutions. Having to wait for somebody in IT to clear you on an internet download is a recipe for pain and a productivity slayer. Likewise with local system rights. Web devs frequently need to tinker with registry settings and their hosts file for instance. –  Erik Reppen May 10 '12 at 20:20
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.