What Specifications should a Programmer Seek in a Computer Purchase ? Or, What Computer should I buy?
I wish to acquire a new computer that is specially designed for programming.
I would like to build it myself for the learning experience, but am willing to purchase it made as well.
Basically I have downloaded so many files dedicated to programming that are so large that a) my computer is near capacity and b) my 4 year old computer is extremely slow.
Specifically, I am into databases (Oracle/PostGreSQL, Mongo, Hadoop) and java, but love learning all possible languages.
RAM, RAM and RAM. Get as much as you can. Then an SSD, then more RAM, then more RAM, then a fast CPU (RAM).
Get an i5 or i7 (i have i7), fast ram and complication wise it should be good. I was surprised but the firmware on one of my HDs was buggy and didnt let me boot up on it so keep that in mind if you experience problems (it was a seagate barracuda) -edit- also mongo sucks.
There is no reason as a software developer (we make good money and spend a lot of time on the computer) that your workstation shouldn't be top notch. Go get yourself an i7, SSD, 8+gb ram, 2-3 monitors and an Aeron chair.
I would say build a computer that has decent amount of power. The reason for this is that some languages have useful IDEs (ex: Visual Studios for .NET), and some of those IDEs require a powerful machine (ex: Eclipse for Java).
Also, we computer people should have powerful and interesting computers. :)
CPU, RAM, and storage (HDD or SSD) are probably most important for a programmer. Some specs that would be ideal for such a computer (in my view) are:
Intel i5 CPU (3.0+ GHz) 8+ GB RAM ~500GB Harddrive (Optional) An SSD for OS and big programs such as Eclipse
These specs will suffice for a programmers use, but you may go for better specs if you so desire. The rest of the parts won't really matter much and are based more on preference than specs.
Also you'd want 2-3 monitors to increase productivity. Then you can look at reference material in one monitor and code in the other. For 3 monitors you can have reference material in one, code in the middle, database in the third. For web development 2 browsers would be the bare minimum as you're often previewing changes in the browser and writing code at the same time. Basically it saves a lot of window minimising/maximising and alt-tabbing.
To add to the comment by @zuallauz, for those times when you don't have the luxury of multiple monitors, learn to use multiple virtual desktops / workspaces. Something as simple as SysInternals Desktops works fine, and you can switch between them very quickly by using a shortcut (`Alt+1`, etc). You will wonder how you lived without this in the past.
I would like to remind people to be nice. There is no need for rude comments. If you disagree with the answer then a downvote and a polite conversation will suffice.
Subjective Question but here's my answer:
Whatever you do, include a SSD, at least big enough to install the OS (64-128GB). sacrifice some CPU power to get it if you have to. Also the more RAM the better.
My current 'Basic' Davelopment system (I have built 2 this year and they are good for my programming needs):
Pentium G630. (entry level, socket compatible with i3 i5 i7 etc) 4GB RAM DDR3 500GB 7200RPM hard drive 128GB SSD (I used Kingston SSDNow which is cheaper but there are better ones) 350w Power supply Cheapest Gigabyte motherboard 24-inch 1920x1080 monitor. (This is just big enough to display two documents side by side - of course dual screen would be nicer!)
For SSD you'd really want 128GB as the minimum so can install the OS, commonly used programs including the IDE and also all your source code on it. It really makes a difference with Visual Studio loading and compiling to/from the SSD with big projects.
Agreed but this is a budget issue for many. 64GB is just big enough for Win 7, Visual Studio 2010, and a few projects. Larger capacities are of course much more comfortable.
@zuallauz: You don't want to put the OS on an SSD; you want the SSD as a secondary drive, where you store all your coding work. Putting the OS on the SSD can actually be counterproductive, since it turns out it's a pretty bad place to store a swapfile.
@Mason, why is it a bad place to store the OS and swapfile? It's the ideal place for performance. Also even if the disk will wear out slightly faster SSDs these days have good wear-leveling algorithms and extra hidden space to use when bad blocks are detected.
Mason is probably remembering years ago when you could write to your SSD too much and wear it out... Not an issue anymore.