50

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.

From The Joel Test: 12 Steps to Better Code

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.

gnat
  • 20,543
  • 29
  • 115
  • 306
CrazyDart
  • 604

12 Answers12

103

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.

Paul Butcher
  • 2,817
24

Should a software developer get a yearly equipment budget?

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.

haylem
  • 29,005
8

A yearly individual equipment allowance is a dangerous path to follow:

  • The manager will expect negligible compilation time, therefore increased productivity.
  • You will have to deal with all the hassle associated to maintaining a professional equipment, from buying to getting rid of through the many failures that will eventually occur.
  • What about common equipments? servers, routers, sysadmins, licenced/corporate software... If I were the boss, I would sell these services as a couterpart of allowance.

  • What about going further? phone allowance, desk, office, coffe machine, electric power, A/C...

mouviciel
  • 15,491
4

Yearly engineers salaries are high, therefore investing in equipment is good. 5-10k$ is nothing, if it is going to be used well.

To quote author of boost MSM library :

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.

BЈовић
  • 14,049
4

I guess it depends on the environment you're working in. Take Delphi for instance, blazingly fast compile times so speed of computer matters less. Screen realestate does.

Also, while giving new tools is nice, don't underestimate the time lost when setting up a new computer, configuring your settings like they were before. The things just not working.

Pieter B
  • 13,310
4

Say you're working on a project that does a dozen compiles or test builds a day, and each one takes ten minutes.

If you had a better machine, maybe they would only take eight minutes. Or five minutes. And your machine might still be snappy enough to do other stuff so you can keep working while it's building.

Work out how much time you would save every day, add it up for a whole year. Convert it to a dollar value by using your hourly rate.

Surprised yet?

sevenseacat
  • 3,094
3

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.

Jaydee
  • 2,667
1

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.

tcrosley
  • 9,621
0

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.

dodgy_coder
  • 1,098
0

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).

-1

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.

-1

Developers should get a yearly training + equipment budget, but when things go really well, extra classes/conferences/training/equipment/books/tshirts/meals should be made available.

It's usually worth more to a developer's than cash.

Tim Spann
  • 101
  • 1