287
votes

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.
27
  • 14
    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. Jul 18, 2011 at 20:01
  • 11
    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, 2011 at 21:39
  • 4
    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, 2011 at 0:40
  • 24
    A developer without an SSD is a sad sight indeed...
    – ShaneC
    Jul 19, 2011 at 2:25
  • 9
    We spend 4-5k on average for a dev setup here at SE ...
    – Zypher
    Jul 19, 2011 at 18:26

39 Answers 39

1
2
0
votes

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.

3
  • Did you get any feedback from management or finance why your proposal didn't fly?
    – bmike
    Jul 19, 2011 at 15:12
  • no mostly management just didn't want to address the issue and I ended up leaving the company not long after this. Jul 19, 2011 at 18:32
  • Sounds like a sound decision on your part :-) Thanks!
    – bmike
    Jul 19, 2011 at 18:38
0
votes

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.

9
  • This is huge. The devs at my place have nice, modern PCs. Unfortunately, we have 40,000 end users scattered all over the place, some of whom have old P4's with 256MB of memory. The app that uses 200MB of memory doesn't run very well. Jul 19, 2011 at 12:36
  • 3
    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, 2011 at 12:51
  • 2
    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. Jul 19, 2011 at 13:04
  • 1
    @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, 2011 at 19:23
  • 6
    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, 2011 at 8:19
0
votes

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.

1
  • Why the downvote? Is gradually upgrading your computer an unreasonable answer? Jul 25, 2011 at 13:18
0
votes

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.

0
votes

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.

0
votes

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!

5
  • 2
    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, 2011 at 12:05
  • Of course it's accountable. Everything ends up on a spreadsheet - the problem is a difference in opinion on the value that is placed on items on the accounting - not that it was overlooked.
    – bmike
    Jul 19, 2011 at 15:04
  • You both said basically the samething which is actually in agreement with what I meant. I didn't gave a solution on how to get the right numbers and neither did you. @EMP yes, that is the whole issue I tried to address. @ bmike (hope you get notified, though certainly not by this) if you can count but not place the proper value, that's what I meant by "not accountable".
    – cregox
    Jul 19, 2011 at 21:23
  • 1
    @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, 2011 at 11:33
  • 1
    @Sylverdrag, good point, however that's only proving the problem - not the solution. Proving "lack of downtime" is harder.
    – EMP
    Jul 20, 2011 at 12:10
0
votes

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.

0
votes

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: http://en.wikipedia.org/wiki/Google_platform#Original_hardware

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.

1
  • I get your point, but some choices are out of my control. We have to use Lotus Notes, and it makes Eclipse look like vim. And it's great to say 'use vim' but vim for Java isn't what I want to do. (I like it for Python and simple text editing, though.) Aug 12, 2011 at 23:24
-3
votes

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.

4
  • Well, all of the things you mentioned are more important than hardware, I agree. And I do suppose that bad hardware makes a difference, though less than bad development practices. But choosing to buying good hardware is easily accomplished, while all of the other changes mentioned require a significant investment. Jul 19, 2011 at 12:51
  • 4
    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. Jul 19, 2011 at 14:42
  • You would put most kinds of commercial software into the operating system bucket? Bit far-fetched. Most development is corporate development and is web-based. As for a software house that makes and maintains operating systems, I doubt very much the questioner would be encountering a lack of hardware resource.
    – Dantalion
    Jul 19, 2011 at 22:41
  • I never worked on a project where machine performance and memory have been irrelevant. If for no other reasons than local build, debug, test times all depend on machine performance. Jul 20, 2011 at 22:50
1
2

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