52

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.

15
  • 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. Jun 20, 2012 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. Jun 20, 2012 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?
    – warren
    Jun 20, 2012 at 14:19
  • 13
    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.
    – user7519
    Jun 20, 2012 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.
    – user7519
    Jun 20, 2012 at 17:16

13 Answers 13

102

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.

11
  • 21
    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
    – stijn
    Jun 20, 2012 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? Jun 20, 2012 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 :]
    – stijn
    Jun 20, 2012 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.
    – user
    Jun 20, 2012 at 8:32
  • 6
    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.
    – Phil
    Jun 20, 2012 at 14:13
23

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.

9
  • 2
    +10 for a clear, well defined answer, with a lovely stealable plan for justification. Well reasoned, esp. with the Admit Defeat portion.
    – Jennifer S
    Jun 20, 2012 at 17:14
  • @JenniferS: Thanks. I'm glad if it's of use to someone.
    – haylem
    Jun 20, 2012 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 Hunt
    Jun 22, 2012 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.
    – Saab
    Jun 22, 2012 at 8:46
  • @BryanHunt: I think (don't quote me on that) that Apple were the first ones to try to split the keyboard, so don't blame them too much. And (you can quote me on that) they didn't really invent the mouse either. There were earlier models, but we generally consider that Douglas Engelbart at Stanford created the first modern mouse, and that it was then further developed at Xerox PARC (which the Apple guys came to visit). I agree the mouse isn't perfect (and I had myself some issues last year), but it can mitigated if you don't have a totally crappy one. (Scary thing, that RSI. Glad yours is OK).
    – haylem
    Jun 22, 2012 at 9:37
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...

3
  • 7
    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.
    – user
    Jun 20, 2012 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.
    – cdkMoose
    Jun 20, 2012 at 17:03
  • 2
    Everything you ask for can be a weapon used against you by management. Pick your battles.
    – JeffO
    Jun 20, 2012 at 22:34
5

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.

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.

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?

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.

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.

3
  • Why the downvote? I was answering the question. Whoever downvoted may not agree with me, but that doesn't merit a downvote.
    – tcrosley
    Jun 21, 2012 at 11:42
  • Who decides when a technology increase is significant in this case?
    – Zoot
    Jun 21, 2012 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.
    – tcrosley
    Jun 21, 2012 at 17:39
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.

0

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.

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
  • 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 Hunt
    Jun 22, 2012 at 8:27
-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.

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