Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Some background. I have a rare opportunity in an organization of over 50,000 people to suggest a change in the way IT purchases computers. Currently, regardless of a person's role, they are given an HP Intel Core 2 Duo PC with 2GB of RAM and a single 19" monitor. We recently argued that this is not appropriate, in that different jobs have different requirements. Media Professionals have a need for higher quality monitors, fast disk drives, and large amounts of memory. Software developers typically need to have enough memory to run many applications simultaneously, frequently compile code and debug it locally, and use large amounts of screen space. Additionally, code needs to be tested on multiple platforms.

I'm looking for a recommendation for a reasonable HW specification that more directly meets the needs of software developers.

share|improve this question

7 Answers 7

up vote 5 down vote accepted

1) Give the programmer at least a 24" display (they cost almost nothing here) This increases productivity. Or 2x19" displays if you like better. If you develop GUI Applications the developers must have a dual screen configuration for testing. Against this "why the f**k is the dialog box comming up this way" bug.

2) They need at least 4 GB so they can run a VMWare environment for testing more GB if they develop cross platform applications and need more virtual machines. If you do GUI applications on cross platforms you should also install multiboot as you have to test the dialog problem on multi monitor systems on different platforms. And no currently available virtual emulation system supports multimonitoring in a native way.

3) The developer needs a quad core machine. It's not for performance it is for testing. If they ever do anything multithreaded they need it and the more cores and concurrency the more likely is that they run into a deadlock problem. Maybe a i975 Intel CPU with 8 virtual cores to see if sofware scales is even better. Remember that in a few years, this is almost like tomorrow if you develop a new complex software systemfrom scratch, this will be on all Wal-Mart shops for $400 soon.

4) If your developer need a lot of virutal machine, definitely go and buy a new Solid State Disk. The IO is the critial part for VM's. Or buy one disk per VM.

5) Buy a very good keyboard, mouse, desk and chair.

6) Buy plants and adopt a company cat.

share|improve this answer
    
+1. I love you. –  tomfanning Sep 9 '09 at 21:55
    
You're a dev, aren't you? –  John Gardeniers Sep 9 '09 at 21:58
    
Yes i develop cross platform multithreaded GUI applications. And i'm my own boss so i bought all of this (except the i975 Intel CPU). I can see that it was worth the money. –  Lothar Sep 9 '09 at 22:07

I would push to get developers two monitors. If you give more details about the developers, we might be able to give you better specs. If they are Java developers and using eclipse, get them as much memory as possible. I would try to spring for at least 4GB, its not that expensive. I wouldn't worry about the CPU as much as memory.

When you talk about how they have to run things locally, that can bring even powerful workstations down. Perhaps if you have databases and the like, money might be better spent on development servers which they can access.

share|improve this answer
2  
Amen to dual monitors and RAM. That's about the two biggest things developers need more than anything else. –  osij2is Sep 9 '09 at 21:27

more superuser suited possibly....

dual displays with high resolution, if possible two machines - one on the desktop another - more powerfull - in server room, possibly with some virtualization platform.

surly more memory and more cores.

disks in raid1 to avoid downtime. that does not replace backup!

share|improve this answer

Give developers two machines.

The first should be the standard (or even a lower end) corporate workstation for email, document writing and other common tasks. This keeps them from needing admin access to the corporate setup and prevents development mishaps from bringing their communication to a standstill.

The second machine should be a higher end box with lots of RAM and dual monitors. The developer should have full admin rights {edit} at their disposal {/edit} to this box. There should be enough hard drive space to store a few full backups (or VMs) so that the developer need not fear trying something that may destroy their environment. The constant install/removal of different libraries and trial software renders a workstation quite unstable after a while. It should be as painless as possible for the developer to backup and restore this box.

You can use a KVM to limit the number of monitiors/keyboard/mouse needed to a single set for the workspace.

share|improve this answer
1  
May I suggest instead of giving the developers full admin rights, you instead give them regular rights (they use their regular account) but give them a local account that does have admin rights. They are not to program using the admin account (there are of course, exceptions), but use it to do those admin things they may need (network changes, install/remove applicaitons, etc) –  shufler Sep 9 '09 at 21:15
1  
I'd rather have one big machine with two monitors and enough RAM, CPU and disk space for free virtualization (VirtualBox). Why buy more physical hardware when free virtualization works just as well? –  osij2is Sep 9 '09 at 21:30
    
I like the 2 machine idea, but I would suggest that the standard box should become a mandatory test platform. Their own primary development boxes will have lots of extra software installed, so enforcing testing on a standard PC config will help a lot to weed out prerequisite issues. –  Darth Satan Sep 9 '09 at 22:01
1  
I define "have full admin rights" to mean that they have full admin rights at their disposal. Anyone who uses an admin account for regular work gets what they deserve. I agree that if the developer is writing desktop software that it should be tested on a typical desktop not an enhanced and undocumented developer desktop. I typically write server software and so a typical server environment (or as close as you can come on a local VM) is the best choice for initial developer testing. –  Chris Nava Sep 10 '09 at 4:53
    
Giving them admin rights gives them the ability to screw the box up so it should never be considered a reliable pre-production test environment. There should always be a clean QA test environment that the developer has only user level access to (plus log reading ability.) –  Chris Nava Sep 10 '09 at 4:56

I would also suggest you to collect some feedback from users. Set up an internal company forum/poll and let users complain about what they lack and motivate why they shall get what they are asking for.

After all, your goal is to make their job easier, isn't it? By getting feedback from users, chances that you'll miss some important details before the decisions go final, will decrease a lot.

share|improve this answer

The appropriate machine is the one that most efficiently allows them to do their job, as defined by the employer. You should really be discussing this with the users who will be affected, not us. Once they tell you what they think they should have get them to justify it all. As an example, one dev at a former job tried to tell me he couldn't possibly work with less than two computers, with 2 monitors on each, yet couldn't come up with a single real reason for needing the second machine, as we already had a dedicated build machine.

share|improve this answer

I would recommend changing your setup and to adopt a cluster methodology. The local machines could be the cheapest and dumbest terminals if they are backed by powerful servers and a high-speed network.

I have seen just such a setup work at my university, where the students get to run lots of engineering design tools and simulation software off the grid on pretty old and low-end terminals that were donated by a corporation.

The software all start and run very quickly.

A very quick and easy way of improving build speeds is by adopting distcc to distribute compilation of your code. If every developer machine runs it, every developer machine becomes a compilation node and helping their fellow developers compile fast.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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