tags:

views:

522

answers:

15

Processor speed, memory, disk space, screen size. What corners can be cut, what corners shouldn't be cut?

To be more specific - in my case I'm considering development in PHP/MySQL/Apache probably with eclipse as an IDE, but I think developers should choose their own tools.

+4  A: 

You can cut corners on aesthetics, sound card, video card (to some extent).

CPU should be one of the best available.

10k RPM main drive (or a solid state drive) is a MUST. I use a WD Raptor 74GB. My secondary drive is a 250gb, which is plenty for work.

2GB ram will cut it if you aren't running any VM's. If so go with with 4 or 8GB and run a 64-bit operating system, such as Windows Server 2008. (win2008workstation.com can help you configure it).

Don't skimp on monitor either. It's a small price to pay to get a bigger boost in productivity. I'd recommend 2 22" monitors.

In the end, programmers are far more expensive than computers. You want the computer to be as fast as they are.

Ben Scheirman
I can't see doing much with VM's
dl__
+1. You can skimp on the graphics card (enough 2D power in the cheapest of them) except that it needs to drive at least two monitors :) preferrably two DVI outputs, as pairing a DVI and an analog one often degrades the analog to sub-CRT quality.
peterchen
yeah that's true. Good catch.A low-end DVI dual monitor card is cheap. No need for a gaming gfx card. And for all that is good and holy don't settle for Intel Integrated Graphics!
Ben Scheirman
+4  A: 

What are you developing in? If you're using Visual Studio or Eclipse, your memory/CPU requirements are likely to be higher than running Emacs and make...

I wouldn't much like to develop with less than:

  • 30GB disk (size not particularly important; make sure it's not dog slow though)
  • 2GB memory (v. important)
  • 1.8GHz Core2Duo. (Dual core not hugely important, but useful for multithreading tests)
  • 1280x1024 resolution - preferrably much more
Jon Skeet
We're developing a DB-driven web2.0-ish website in PHP.I've heard that screen real estate is one of the most productivity enhancing attributes of all.
dl__
+1  A: 

I think it really depends on what you want to do and the developer. Really for bare bones, all I need is an internet connection (it is helpful to look up things) and a text editor. I program off of my laptop with no external screen. I'm old fashioned though. Most people don't like to work like I do.

Kevin
A: 

It really depends on what type of applications you are running. If you're developing large web applications on VS.Net, you probably need a strong machine with at least duo core, and 2 gig of RAM. And a big hard drive. This is so you have enough power to host your own database, web server, for a good testing environment. If you are developing desktop applications, in C, using VIM, you could probably do with a machine with much less specs.

Kibbee
It's WAMP development so we'll be using eclipse rather than VS
dl__
+1  A: 

I use Visual Studio 2005, Visual Studio 2003, SQL Server Managment Studio (2005) and Toad (to connect to Oracle) as the most consuming applications. And my company gives me an old PIV with 1GB ram to work. :(

A: 

It depends on the development tools being used and the corporate policies. Personally as a person who dogfoods a lot of beta products I would go for a machine along the following lines:

  • Quad core Intel based machine
  • At least 4GB of RAM but preferably as much as 16GB
  • Fast desktop class SATA II disks and many of them. The more spindles the better performance.
  • Windows Server 2008 Hyper-V or free Hyper-V Server base OS (x64 only). Allows for multiple virtualised operating systems to test beta products without having to re-install the business OS often. Also great for testing deployment scenarios.
  • Virtual business OS like Windows Vista or Windows XP (x64)
  • At least a dual 19" LCD screen setup with a decent video card to drive both display. No need for fancy gaming graphics. Widescreen preferred for extra screen real estate.

I wouldn't cut corners on the amount of memory and the overall disk performance. -

Craig Nicholson
What would you consider a minimum developer class PC? I think you haven't read MINIMUM in the sentence...
Daok
As I've specified, that is my minimum developer PC. :)
Craig Nicholson
+1  A: 

As usually, it depends. My rule is : "don't let the computer to become the bottleneck".

Computers are very cheap compared to developers.

Guido
A: 

Much of my development, my machine is basically a shell for SSHing to a dev box and a web browser. Don't need much for that.

It depends entirely on what sort of development you're doing.

Andy Lester
A: 

A lot of things CAN be cut, but to ensure efficiency, I would set a base standard of four items:

  • Dual Core processor
  • Dual Monitors
  • Let the developer choose their own OS
  • 2-4GB RAM, depending on 32/64 Bit OS

Basically the goal is to prevent the developer from waiting on the computer. Good tools help him produce good work.

Erick B
+2  A: 

Two things to mentions - two physical drives, and LAN performance.

This may be totally irrelevant, but if you're, say, copying large database files daily then for the sake of little cost and effort, do just make sure you've got a Gigabit network card.

This may seem like an obvious one to a lot of people, but some PCs still include 100MBit as standard, particularly if you're planning on going portable and getting a laptop as your main machine (perfectly reasonable choice, the main compromise that will affect things is HDD speeds are often slower in laptops). When copying large dB files, a 100MBit connection can get really, really tedious.

Yeah, it most probably is standard on a desktop, but it may not be even there.

Something we all should be doing, really, is some type of file backup, ideally to a network location, either file copy, via checked in code or otherwise. The cost of setting this up is nothing compared to the potential lost time for a weeks lost work.

Just copying to a second drive helps, and for this reason and the fact us devs like to fiddle with settings, I'd suggest two physical drives (in a desktop, for sure), one with data on, and one with the OS that can get wiped whenever. You could just partition a single drive, but two drives should give better performance during, say, builds.

Install your base line, grab a compressed image on your data drive, then a system crash may mean you stand less chance of looking like the codingHorror logo!

R

Retne
+5  A: 

It depends a lot what you are going to develop. I think a developer PC in general has other requirements than a consumer PC.

Things that that are less important in a developer PC (depending on what you do, though, some of these might be critical!):

  • Graphics Adapter. Unless you develop games or other 3D applications, a mid-end graphics card (shouldn't be too low end, but doesn't have to be bleeding edge) is more than sufficient.

  • CPU Power. Might sound paradoxically, but even a mid-end CPU is still fast enough in general. Of course, if you develop something that needs to be compiled with gcc for example and every tiny change causes 300 source files to be re-compiled, the CPU can't be fast enough and can't offer enough cores. But if you develop server side code, you only run it locally for testing and for real life testing you'd copy it on a server and test it there. Also scripting languages (Perl, Python, Ruby) will not kill your CPU easily. If you have to be careful to not waste too much CPU time, you won't run into issues like "Hey, the app runs fast enough on my 8 core leading edge Intel machine", which is not really helpful for users having a ten time worse CPU in their tiny notebook (where anything you do in seconds takes minutes).

  • Monitor size. It should be big enough, but it doesn't have to be gigantic. Everything above 24" is totally overkill IMHO.

  • Hard drive space. It is not really that most development will take gigabytes of disk space. Source files are small. Even if you have large SCM checkouts, you will not run out of it anytime soon. Of course starting with anything less than 60 GB is just a joke nowadays. It's say it should be between 80 GB and 160 GB (120 GB sounds like a nice value). However, a developer won't need 512 GB or more of disk space (that is something for severs). Also a RAID is overkill.

Things that are very important are:

  • RAM. Not the speed of it, the amount of it. Having zillions of applications and windows open at the same time is natural usage. You can't have too much RAM on your machine. If you run a Windows machine, give it 4 GB if it's 32 Bit Windows (windows can't effectively handle more than that - if you have more, most memory goes unused). If you have a 64 Bit Windows, or Linux or Mac OS X, 8 GB and more are great. 4 GB is the absolute limit. Working with 2 GB is no fun in the long run.

  • Monitor size. Well, I repeat it here, because working with 17" or 19" is no fun either. I'd suggest either 21" (a good value) or 24", if you really need that much space. Also consider a widescreen monitor (16:9/16:10) instead of standard format (4:3/5:4). Usually you have many windows open, that will contain little text to scroll left/right and a lot to scroll up/down, so it might make more sense to not use a wide screen monitor. However as the windows don't have a huge width, you can have many of them open next to each other (showing different source files or showing the same one at different file positions) and the wider it is, the more you can have of these. Working with many windows at the same time can be a real time saver, instead of only seeing one file at a time and permanently switching tabs (having to remember what was in the other file instead of just looking left to your current window what is written there).

  • Fast Network Support. Having WLAN optionally is nice, but only having WLAN is hell if you do SCM over network and need to copy lots of files forth and back between your machine and a server. A developer computer should have GBit/s Ethernet and have a wired connection to a GBit/s switch, to that also any server is connected as well.

Mecki
A: 

Monitor area - at least 2 screens.
The minimum spec isn't the latest processor, ultrascsi drives or gigabit lan - software got developed with last years machines.
But with increasingly complex IDEs, online documentation and screen filling apps/sites to test you need to have an entire screen for the app and another for the IDE, and ideally another for docs/email/webbrowsing/notes.

Martin Beckett
A: 

Generally it seems that about 2k is roughly what you want to spend. This has seemed to hold true over the last bunch of years. Maybe a little more if you want to splurge.

As others have pointed out - you do not want a machine to be a bottleneck. When you are spending $50k to $200k on a developer per year skimping on $4k that is amortized over 2 years is a really bad decision.

For specifics for me:

I would not go with less than 2GB ram. Processor speed right now to me is not that important - I would spend the extra dollars on memory and screen over the top of the line processor.

Biggest monitor you can get. I have a 24" LG that I bought for myself and brought it to work. My coworkers thought I was nuts. I tried to shame my company into buying a new monitor for me, but they had no funds they claimed. It was for my own sanity.

At home I have a 27" dell. It might be overkill but I love it. I am not sorry about either of those purchases.

Tim
A: 

For a minimum developer PC, in all honesty, damn near any $500 laptop or $400 desktop will actually suffice. I use a Gateway desktop (sold as a "media center") at home, with upgraded video and RAM ($60 video card and took it up to 3GB of RAM), and I have no issues at all running Vista Ultimate, Visual Studio 2005 Standard, Visual Studio 2008 Express Editions, local source control, CruiseControl.NET, a local IIS instance, SQL Server 2005 Express, Virtual PC, and a variety of other tools. It's a 2-core AMD 3.8, but I never really even tax the CPU except during heavy builds. The only slow part of this system is the wireless card -- and a new one should arrive for me Thursday.

(I even did bad naughty thing, and it dual-boots into Leopard, albeit without any networking or sound. Not even a hiccup with XCode, GCC, MySQL, Apache, etc.) I'll be dropping this partition in a few weeks when I cough up for a real MacBook.

The only thing I'm lacking is dual monitors. I have a 19" Acer widescreen (1440x900), which is OK, but I do miss the multi-monitors when I get home. (I have 2 Dell 19" 1280x1024s at work, and it's SO nice.) I could do dual monitors -- in fact, I almost bought a second one last week -- but decided against it as I have limited desktop space for another widescreen monitor.

Admittedly, my dev stack isn't the OP's dev stack. But I would be shocked if standard consumer grade kit (with more RAM and a mid-range video card) couldn't suffice for a WAMP or LAMP stack as well.

John Rudy
I should note that I took the OP's "minimum" very seriously. My box at work is a 4-core, 4GB, 64-bit MONSTER system. It's very nice. :)
John Rudy
A: 

Speed, ram has not always been very important to me, sure things compile faster with these, so if you will be writing or working on a large application, you will want a fast machine with lots of ram etc.

What has always been the most important, and is very frustrating when it's not there is work (screen) space. I find if very frustrating when I can't seem multiple widows at once, or I need to vertical scroll all over to see stuff.

I still use an IBM ThinkPad T40 for coding once in a while; the screen realestate sucks, it still compiles medium sized apps OK. If your building the uber dev machine, great; otherwise, be reasonable and build to the software construction you'll be working on most.

Brett

Brettski