I am looking at a new position with a new company. I have talked to some people in the past (in general, not at this company) that they had been given a yearly budget to buy new computer stuff to keep up to date.

Now why I feel this question is worth asking here is that Joel comes right out and says an employer should pay for the best equipment money can buy... within reason of course.

9. Do you use the best tools money can buy?

Writing code in a compiled language is one of the last things that still can't be done instantly on a garden variety home computer...

Top notch development teams don't torture their programmers. Even minor frustrations caused by using underpowered tools add up, making programmers grumpy and unhappy. And a grumpy programmer is an unproductive programmer...

Does anyone know if the industry has such a standard to offer an allowance or budget?

I have never worked for a company like this, but I am thinking I should toss this in the ring for negotiations. Seems reasonable. How do bigger companies like MS, Google, and Apple handle this? If you say yes, give a range... I have been told numbers from $5k to $10k. Seems high to me, but hey I would gladly take it.

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.
If this question can be reworded to fit the rules in the help center, please edit the question.

4

The refresh cycle for non-developers is also important. If your internal users must still use XP and IE6, that will limit your ability to introduce new features.
–
mhoran_psprepJun 20 '12 at 10:31

2

There is no standard, some companies provide budgets others don't. I've worked for both, I'm currently at a place that will buy you a new laptop and cover up to $1000 and pull the rest out of your paycheck over the next 12 month to pay the rest.
–
AlanBarberJun 20 '12 at 11:43

3

@AlanBarber - your employer makes you pay for your own equipment? I guess that means when you leave, you get to keep it, right?
–
warrenJun 20 '12 at 14:19

12

one of the most recent places I worked I was given a $300 "student" grade Dell craptop with the cheapest i3 and 8GB of RAM as my primary machine as Director of Application Development. This was "standard" for developers until I complained and got everyone at least mid-tier i5 machines with 16GB of RAM, you would not believe how much morale improved, and of course productivity increased 10 fold.
–
Jarrod RobersonJun 20 '12 at 15:58

3

It isn't about "user experience" it is about developer productivity. Not having the machine paging constantly every time you kick off a build, or re-deploy an app to a local app server, or restart a local app server, or being able to run 2 Virtual Box machines for cross browser testing. Just being able to kick a build, and then go back to coding is critical. All these things lead to 10X or more productivity over the course of a day even. QA and UX people should be doing acceptance testing on old hardware and browsers. Developers should be churning out product as efficiently as possible.
–
Jarrod RobersonJun 20 '12 at 17:16

13 Answers
13

Personally, I would want the company to just sort out the equipment I need, not give me a budget and make me to deal with all the research, negotiation and other hassle that goes into buying and installing corporate hardware.

In the end, all I want to have to do about hardware is state my few requirements, and have someone else do all of that work, so that I can get on with mine.

More important and appropriate (IMHO) is a personal training budget, with which you can buy books and attend courses and conferences.

funny, personally I feel the other way around: I really hate coming to a company and being offered not-so-top-of-the-line hardware with preinstalled crap or limited features. I much more prefer being given the budget and pick hardware I know then install only what I need. In the end I'll be more productive. +1 though for the training budget
–
stijnJun 20 '12 at 7:35

25

@stijn I see what you mean, but isn't that more about the competence of the people who provision the hardware, than about whether you provision it yourself?
–
Paul ButcherJun 20 '12 at 8:16

5

that certainly is a factor, yes. Another one is me being a control freak when it comes to organizing my workplace :]
–
stijnJun 20 '12 at 8:26

5

Having a budget allocation for hardware does not necessarily imply having to sort out the details yourself. To do it that way is simply the easy way out for the company.
–
Michael KjörlingJun 20 '12 at 8:32

5

I personally find it useful to build my own machine. I can keep up-to-date about the latest technologies in the software world, but it's good to be forced to look into hardware from time to time. Every time I have to upgrade, I find new developments in hardware that I otherwise would not have known about if someone else built my machines for me.
–
PhilJun 20 '12 at 14:13

Compilation times of state machines with > 80 transitions that are
going to make you storm the CFO's office and make sure you get a shiny
octocore with 12GB RAM by next week, unless he's interested in paying
you watch the compiler agonize for hours... (Make sure you ask for
dual 24" as well, it doesn't hurt).

However, if the current equipment is still good, I do not see a point in wasting money.

A yearly budget would be nice, but I can see some wastage happening if you have to "use it or lose it". E.g. some years you might need to provision up and spend more than you are allocated but other years you might not need to spend much. So allowing for the budget to rollover into the next year would be essential to the policy.

Another option would be to combine the hardware budget with training, so you can choose to put a portion of it into training and a portion into hardware. Of course a good employer would be placing you on training courses every year anyway, but in my experience this rarely happens.

Having a individual equipment allowance or budget does not necessarily imply the points you list. If you state a requirement as for example "development IDE X which we use needs 4 GB RAM to run really snappily; I want to be able to run three instances with some room to spare, so minimum 16 GB RAM", then IT can still work out the particulars, order the hardware, install and maintain it, etc.
–
Michael KjörlingJun 20 '12 at 8:31

While "Having a individual equipment allowance or budget does not necessarily imply the points you list." is true. Managers who don't understand will assume that since you made the choices and spent the money, everything will work perfect and there is no reason you can't deliver X% more productivity.
–
cdkMooseJun 20 '12 at 17:03

2

Everything you ask for can be a weapon used against you by management. Pick your battles.
–
JeffOJun 20 '12 at 22:34

I've never met with such budget. On long-term contracts, the corporations provide the computer stuff and they care if something gets broken. It's more rational than giving the employees the money and expect they will buy for it what they want. What when someone's laptop breaks down? A few days are wasted before he/she gets it repaired or buys new parts etc. When the company manages the hardware, he/she will get replacement for the broken laptop within a few hours.

Another case are contractors/freelancers, which are hired for short term, and they manage their stuff themselves. They handle the repairs themselves and they simply expect the payment will be good enough so that it will be profitable for them.

I think there are pros and cons (as usual). Having individual equipment budgets can mean a wide variety of hardware, good for debugging, bad for maintenance.

Do the individuals also track the warrantees on the equipment? Time wasted if they do, administrative problem if they don't.

It may depend on your situation. A small/medium sized company selling software into the general market place, then an individual budget may be a good thing, (good for debugging). A large corporattion working on internal software, then individual budgets may be a bad thing (everybody has the same hardware).

There is also the argument that developers should have to test on machines that are about average, so they get he same perfomance as the target user.

When the company I work for started out it we had a $1500 personal hardware allowance. Employees could buy equipment for working at home and expense it. As the company was bought and sold we've lost this nice benefit.
Our current IT department will supply developers with top of the line equipment but it's from one of the big vendors (HP, Dell, Lenovo, etc).

Both Dell and HP make hideous kit these days. Incredibly cheap and very often Windows only (wireless,modem,graphics). Not ideal for a developer who uses Linux OS as their day-to-day development desktop.
–
Bryan HuntJun 22 '12 at 8:27

Definitely a nice to have and something I would bring up for discussion or even as part of your bargaining chips for salary negotiation. The question is more about whether it's a "should" or a "must".

Does anyone know if the industry has such a standard to offer an allowance or budget?

Unfortunately the industry definitely doesn't have it as a standard practice, but thankfully some companies are a bit less greedy and more in touch with their developers' (and employees' at large) needs.

This is going to be a rather broad answer, and by budget I don't make a distinction between a budget given to you to buy or place an order, or as something transparent where you request an upgrade managed by your company's staff. In their books, it's all the same thing anyways.

It's Handy

The problem is that this can obviously quickly represent a huge budget for a company, if it reaches a certain critical mass. However, I'd agree with you and Joel that it can be well worth it.

There's absolutely no point in frustrating employees.

Don't Get Spoiled

That being said, you also need to keep employees in line and make them realize that sometimes bad performance or slightly out-dated hardware is just a fact of life. You don't want everybody to turn into spoiled kids who want a new SSD, the latest iN processor, the extra GB of ram, etc...

I don't want people to obsess over eternal youth, and that applies to hardware as well.
(With software projects, however, I tend to push for staying as close to the latest release as possible... Analogies don't always hold :))

Specific Needs for Specific Hardware

I think there's a distinction to be made between:

the basic equipment that is definitely required for your job when you start,

and the more advanced equipment where the need stems from specific requirements.

Base Package

For instance, the following are pretty standard things you'd be entitled to expect, and for which I don't see a (strong) need for special orders:

a laptop + cellphone (if you are an on-site consultant),

a workstation if you work off-site and stay at the mothership,

plus maybe a few non-controversial goodies like:

decent input devices (keyboard, mouse, maybe trackballs...)

decent chair.

These can be the same for the whole company, except for special cases like employees with disabilities. Employees with disabilities or injuries should obviously be accommodated.

Bonuses

Then if obviously you'll need to do lots of videoconferencing and presentations, you might want a few gadgets like bluetooth thingies, tablets and styluses. Which can actually be shared across departments by using a reservation system, to not end up with everybody requesting some (and losing them), while cutting down on the room for whining.

If you are a designer, you'll need your drawing tablet, your trackball, etc... I do every once in a while see the one developer who begs for a trackball instead of a mouse. Personally I've tried both, and I see both as almost equally identical, so I never really bought into this claim, if you don't have a specific need for it other than "I like it better". You can live with a mouse instead of a trackball without developing an RSI within 8 hours if you don't already have issues and have correct usage habits. It's a different issue when you get a crappy mouse or trackball or keyboard, but I don't see a clear win for one or the other.

If you are a developer needing to run 4 application servers simultaneously, building projects, and keeping 3 instances of Eclipse or Visual Studio open at all times, you'll obviously need a rather competitive workstation. I'd consider this "basic needs" for developers, so it doesn't mean the marketing dudes necessarily need to be aligned on that.

Build Your Case: Hard-Data For the Win

From experience, most companies are understanding with regard to your needs if you can prove that they are legitimate. If you can defend the rationale for it, they'll cough up the money or try to accommodate you. They're paying you to work, so they really don't want you to be wasting time.
(That is, if they care one bit about your job... if you're irrelevant, I'm afraid you're out of luck there...)

Show the Gain for You

So, in the past, my coworkers and I did get upgrades for RAM, input devices, chairs, hard-drives and whole workstations or even server farms based on clearly collected and outlined requirements. It does take a bit of your time to build your case, so discuss it first with your line manager, but it will probably be fine. Or spend the extra hours one week at the office to build the case, it can be worth it and your line manager will trust you more with such decisions in the future.

Show the Gain for Them (Money is the root of all evil...)

With regard to the above example, we did for instance calculate build-times and the reduction we could get, and did comparisons between the different setups present at the company, calculating the average of wasted time per developer per day, and then making them realize that it was equivalent over a year to about 20 full days per person of being unable to do anything (as the computer would basically be unresponsive if you didn't have a least a quad-core and 8GB of RAM for this build). Times the number of developers, that's a hefty amount of hours they pay people to stick around doing nothing, which was way higher than upgrading at least some of the stations.

More recently, a co-worker has been doing a similar evaluation to persuade them to consider SSD drives, and is in the process of collecting really fine-grained data on how much time would be saved for every body, in a similar fashion.

For health-related queries, a simple recommendation from your doctor, even informal, might be enough.

For custom software, you may just need to present the advantages of the tool and its impacts when integrated into your process. For instance, I managed to get my last 3 companies to purchase licenses for wireframing tools after using a demo version for a presentation to grab their interest, and then using them more extensively in one or two short-lived projects involving a few people. These were rather cheap, but originally they didn't want to buy the licenses without seeing the need. When they realized it clearly helped to visualize prototypes and make educated decisions earlier, they gave the green light quickly.

Plan

Define an upgrade plan.

Define benchmarks and metrics to use for measuring the gain.

Provide clear results.

Draw conclusions on these results.

Maybe do some initial legwork on cost- and savings-calculations (discuss with line manager as well, or do this in a second review of your proposal).

Get coworkers to sign off on your request, possibly with each writing a statement about how they feel about the update, be it positive or negative (the point is not to make a completely biased marketing speech to extort something from your company, it's also to really research this and see if it's really needed).

A Quick Note on Large Upgrades for a Whole Team

Suggest rolling releases if you request upgrades for a whole team:

it distributes the cost over a longer period,

it gives time to iron out transitional issues ("whoops, just realizing that this CPU combined with this OS version actually presents issues when cross-compiling our product X for other platform X"),

it prevents the whole team from being stuck in IT maintenance hell with system reinstallation, system updates and the usual clean slate issues, or the occasional mishaps’ ("whoops, deleted that important backup...").

Admit Defeat: It Doesn’t Always Work For Everything...

And rightly so. Not everything is acceptable. And things that are acceptable may be out of reach for your company. Build your case, bring it to the line manager, discuss it over a team lunch or something more friendly and team-spirited than in the heat of this year's financial review.

Also, if you have a hard time building your case:

admit you probably don't need it,

admit you probably were wrong and upgrade X doesn't buy you what you thought it would.

If you can't build a case and start being defensive about your request, it means you'd be better off doing something else.

+10 for a clear, well defined answer, with a lovely stealable plan for justification. Well reasoned, esp. with the Admit Defeat portion.
–
Jennifer SJun 20 '12 at 17:14

@JenniferS: Thanks. I'm glad if it's of use to someone.
–
haylemJun 20 '12 at 17:40

I felt like I was getting RSI about two years ago (I do work regular 50/60 hour weeks) - got a trackball (Kensington) and I haven't felt a thing since. The mouse is ergonomically very weird. Yet another crappy Apple invention! Funny that the Microsoft split keyboard is so nice to use... only MS product I'd ever recommend.
–
Bryan HuntJun 22 '12 at 8:30

Here's some food for thought. How come I can spend my own private money on software or hardware which my company is not willing to pay? Spending my own money means I'm really convinced that the piece of hardware or software is gonna help me doing my job better. I don't think this is about being spoiled, i think programmers and managers need to take our profession more seriously. And act like real professionals about it.
–
SaabJun 22 '12 at 8:46

I think a yearly budget is a waste of money -- equipment doesn't become obsolete that quickly. I think it is better to upgrade when performance jumps ahead to where it is worth it to make the switch, for example when dual-core processors were replaced with quad or 6-core, when Windows 7 replaced Windows Vista and XP, when terabyte hard drives replaced 200 or 300 MB drives, and when SSD drives came out. These were all significant improvements.

But after getting the latest and greatest desktop with some or all of the features mentioned above, it doesn't make any sense to spend another $5K the following year for an incremental improvement.

Also, I believe all developers in a group should be upgraded together, and also get the same equipment, since support will be easier that way.

Why the downvote? I was answering the question. Whoever downvoted may not agree with me, but that doesn't merit a downvote.
–
tcrosleyJun 21 '12 at 11:42

Who decides when a technology increase is significant in this case?
–
ZootJun 21 '12 at 14:10

2

@Zoot That would usually be the group's manager (with input from the developers), or the CTO (Chief Technology Officer if there is one) or in the case of one small company I worked for, the CEO (who had a CS degree, so he was qualified to make such decisions). The decision should be made by someone that can weigh the benefit to the programmers vs the overall cost to the company. If you're working for a company producing software where upper management is not qualified to recognize a technology shift, I'd jump ship. They probably aren't qualified to manage software projects either.
–
tcrosleyJun 21 '12 at 17:39

A yearly upgrade is not necessary. I depends on the tools Vs system performance.

I prefer that Developer's system is upgraded as they need more powerful system to run all the development tools.

It basically good for organization as It reduces the development time.

also each organization should consider using centralized server like system that can be used to install software that can be used for testing purposes and reduce resource utilization on developer's system.