Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I must be missing something.

The cost of employing a programmer in my area is $50 to $100 an hour. A top end machine is only $3,000, so the cost of buying a truly great computer every three years comes to $0.50/hour. ($3000/(150 wks * 40 hours))

Do you need a top-end machine? No, the $3000 here is to represent the most that could possibly be spent not the amount that I would expect. That's roughly the cost of a top-end iMac or MacBook (17 inch).

So suppose you can save $2000 every three years by buying cheaper computers, and your average developer is making $60. (These are the most charitable numbers that I can offer the bean-counters. If you only save $1000, or $750, it only strengthens my case.) If those cheaper computers only cost you 10 minutes of productivity a day. (Not at all a stretch, I'm sure that my machine costs me more than that.) then over 3 years the 125 lost hours would add up to a loss of $7500. A loss of 1 minute a day ($750) would give a net gain of $1250, which would hardly offset the cost of poor morale.

Is this a case of "penny-wise and pound-foolish" or have I oversimplified the question? Why isn't there universal agreement (even in the 'enterprise') that software developers should have great hardware?

Edit: I should clarify that I'm not talking about a desire for screaming fast performance that would make my friends envious, and/or a SSD. I'm talking about machines with too little RAM to handle their regular workload, which leads to freezing, rebooting, and (no exaggeration) approximately 20 minutes to boot and open the typical applications on a normal Monday. (I don't shut down except for weekends.)

I'm actually slated to get a new machine soon, and it will improve things somewhat. (I'll be going from 2GB to 3GB RAM, here in 2011.) But since the new machine is mediocre by current standards, it is reasonable to expect that it will also be unacceptable before its retirement date.

Wait! before you answer or comment:

  1. $3000 doesn't matter. If the machine you want costs less than that, that's all the more reason that it should have been purchased.
  2. I'm not asking for more frequent upgrades. Just better hardware on the same schedule. So there is no hidden cost of installation, etc.
  3. Please don't discuss the difference between bleeding edge hardware and very good hardware. I'm lobbying for very good hardware, as in a machine that is, at worst, one of the best machines made three years ago.
  4. $50 - $100 / hour is an estimate of employment cost - not salary. If you work as a contractor it would be the billing rate the contracting agency uses which includes their expenses and profit, the employers Social Sec. contribution, employers health care contribution etc. Please don't comment on this number unless you know it to be unrealistic.
  5. Make sure you are providing new content. Read all answers before providing another one.

locked by Yannis Mar 13 '12 at 20:29

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

Maybe they do, but not as often as you'd like? Any workstation you buy will only be "the best" for 6 months, at best. Usually a better model comes out the next quarter. To always have the best, you'd have to upgrade every 3-5 months. That's hard to maintain. – FrustratedWithFormsDesigner Jul 18 '11 at 20:01
There's a human factor, too. Buy a fast machine and gain all of that productivity, then spend 10 minutes per day at the water cooler and lose it all and then some. The boss sees both sides, so the pure productivity argument loses some weight. – JeffK Jul 18 '11 at 21:39
I definitely know I could use a little more punch in my machine. Not so much CPU power but RAM. Between running multiple instances of an IDE, browsers, and misc other programs another 4GB and a second monitor wouldn't hurt... – Rig Jul 19 '11 at 0:40
A developer without an SSD is a sad sight indeed... – ShaneC Jul 19 '11 at 2:25
We spend 4-5k on average for a dev setup here at SE ... – Zypher Jul 19 '11 at 18:26

39 Answers 39

Once I tried to argue for the company (largish) to buy us developers decent consumer grade systems. Essentially the performance specs on them were comparable to the Enterprisey version but at 1/2 the price. My argument was at these prices they were essentially a throwaway so if it broke just buy a new one (on the assumption that better than 75% would last 24 months). I suggested that in exchange for getting one of these laptops the developer would have to sign an agreement (or something) that he/she would be responsible for the SW load/configuration and help desk would not 'help' fix it.

It didn't fly but I thought the basic premise of the argument was reasonable, considering we did windows dev and all of us were local admins.


New programs run great - on the developer's computer. Buy a developer a 4 GHz 8 core box and the application he creates will run fine - on any 4 GHz 8 core computer. But on a typical customer's computer with 2 GHz and 1 core it runs like a dead snail.

Developers naturally keep adding features and code and levels of indirection until things slow down, on the development machines. If you're only developing for brand new hardware, then buy the latest. But it's a danger if you sell software to people with existing hardware.

A developer's computer should be about the same power level as the target customer's computer, with perhaps a bit extra for the debugger. But no faster.

I'd say give the developer as powerful a machine as possible, and then simulate user scenarios in virtual machines. QA and VMs should give a clear picture of how the product will perform in the wild, and then you can let your devs work as fast as possible.. – mash Jul 19 '11 at 12:51
Also, add explicit performance requirements. If there's a valid reason for your software to run on Pentium II machines, the developers can deal with this requirement, while still using more modern machines. Besides, feature creep was always an issue. You can add pointless features on any machine, irregardless of what is state of the art workstation performance. – Tadeusz A. Kadłubowski Jul 19 '11 at 13:04
@Andy Canfield - One would hope there are requirements. Just because the developers of have nice machines does not mean they should design the application to run on their machine ( this just be plain foolish ). – Ramhound Jul 19 '11 at 19:23
So, by the same token, car manufacturers should have to work outside, because sometimes their cars will be driven in the rain? ;) – Tom Morgan Jul 20 '11 at 8:19

2GB on a developer machine is obviously shameful, however, solving this problem should not cost $3000…more like $100 (conservatively). Why make the case to upgrade everything all at once? Smart IT departments are continuously upgrading machines over their lifetime. Eventually you need an entire new machine, but your machine is not running hardware specs for Windows 95; it could be upgraded for $300-$500 into a typical mid-range machine, and these upgrades could happen over several months so there is not a cash flow problem. You probably do not need a new graphics card, sound card, USB ports, DVD writer, etc., so why pay for them now? It’s like buying a new car because your AC is broken.


I think the "right" tools are required for the right jobs. If you don't have the "right" tools (hardware, software, or otherwise) I believe it is due a misunderstanding or miscommunication of the expectations between an employee and their bosses. This is both the developers and the company's responsibility. The higher the expectations the closer the "requirement" should be looked at.

This being said I know several developers who "need" 8 GB of RAM for their machine when I've made due with less in more trying scenarios. But again I think it's understanding requirements.


At my current company, developers are pretty high on the totem pole for hardware. I imagine that hardware is put on a normal company budget just like anything else, and the need outweighs the want.

In my opinion, a developer should be responsible for their own hardware, but that depends entirely on the situation. If you are asked to write a simple app for a simple website, than you might not need a sophisticated piece of equipment to sit in a text editor. On the other hand, if you are into contract programming and want to do some side gigs you may want to consider buying your own hardware and base software, and having the company purchase individual API licenses as needed by that specific company.

Either way, it is all a matter of checks and balances, and if you are concerned with productivity than your dollars are probably best spent in monitoring how much code a developer is putting out for their time. If it takes them 10 hours to do one project and 5 hours to do a similar project, it may be an employee related issue and not so much a developer issue.


Why not? Because it's not accountable. We can't precisely match each hour of work with a profit margin.

A simple solution for this would be refunding whoever pays for his own machine upgrades. If your counting is any true, it should be easy to prove your own profit from production improvement by comparing the past 2 periods (week, month, semester, year or whatever) in the exact same job / project.

If developers were able to quantify how much they are generating over a period, the issue disappears. Most developers can't. Nor their managers and even less the finance folks. Because the job is very subjective.

But if you can somehow show those numbers (I know I can't), then you're all set for your cost-effective-non-self-booting-dream-machine already!

The only problem with this idea is: how do you prove a productivity improvement? How do you measure developer productivity in a way that won't be gamed? – EMP Jul 19 '11 at 12:05
@EMP: You don't have to prove a productivity improvement. You only need to prove downtime. An employer already pays you $XX per hour. Additionally, he also pays taxes and benefits, so the ACTUAL cost per hour is even higher. He knows how much he pays you. All you have to prove is how much of that time was wasted due to faulty equipment. The OP talks about a 20 minutes boot time (no matter how you put it, this is as faulty as it gets). At $150/hour, each reboot costs $50. Show your boss the "power" button and tell him "Every time I press this button, you pay $50". – Sylverdrag Jul 20 '11 at 11:33
@Sylverdrag, good point, however that's only proving the problem - not the solution. Proving "lack of downtime" is harder. – EMP Jul 20 '11 at 12:10

Companies make decisions quite differently from developers. Most have mechanisms at place providing appropriate hardware for the task, having approved purchase channels, groups responsible for installations, testing, compliance with security and other measures. So questions changing hardware specifications can be complicated.

On the other hand, let's say you came to CEO with a suggestion to spend equivalent of 1% of salary for upgrading equipment. He will ask CFO to come up with the hit they would have on the margins and income, let's say it's 5%. Now, missing the estimates, that may have an amplified effect on company's stock price, say 10%, and upper management loses their million dollar bonuses. Unless, there are good reasons to expect the upgrade would improve company's bottom line, this suggestion would be DOA. Companies always seek to increase expenditures only if it improves income. That means that in most cases both low end and high end equipment are sub-optimal.

One solution to satisfy both developers and company management would be allowing developers to pay the equipment rent, a typical system would run $20-200/month if rented for 2 years. A company can have a range of approved hardware and offer developers either a standard configuration or to choose upgraded configuration and deduct the additional rent from paycheck.


I must have missed the author's perspective.

First, Google as one example was founded using cheap, "disposable" hard drives attached to older servers run as a farm. OK that might be hyperbole, yet see:

Second, it doesn't take much CPU or graphics resource to run gvim. So maybe your choice of development environment is the problem.

Third, there are dozens if not hundreds of CPU-intensity-reducing ways to enhance productivity which have little to do with whether or not you have 2 gig of RAM or 3 gig of RAM. Watch an average programmer over their shoulder to see this: for example, using a lightweight PDF reader vs. Adobe suite for the documentation; using a minimal installation of a VM for testing apps rather than a full install; removing all those startup daemons bundled with Win DELL machines (using regedit); using a lightweight browser to webmail instead of keeping outlook running; not opening 50 gazillion tabs in firefox chasing solutions to MSFT implementation issues on the web; etc etc etc.. So this point boils down to the following: Prove you need more Memory and Mhz to solve this software design problem faster.


The question pre-supposes that good hardware makes a significant difference, I recently switched to a Macbook Air, reduced CPU performance, less fan, less headache. I think that a far far greater factor is the human factor: what coding language? Are you using a dynamic programming language? What is the culture? Are you running a build every two seconds? Long (and unnecessary) test-suite runs? Far better to get the environment sorted out, rarely is a high-spec. development machine needed. The good software developers, the masters of the craft. What are they? They are writers. They write code for other coders to read. Actual function, speed, machine-deployment issues. These really are secondary. So is an obsession with correctness. I say relax more, and move to a right-on, open sourced language and toolset. This is where the company $ should be directed.

Next time you develop an operating system using "dynamic languages" and "running builds every 2 seconds", you let me know. Many problem domains are not amenable to that kind of workflow, and I'd put most commercial software in that bucket. – Billy ONeal Jul 19 '11 at 14:42

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