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.

gnat
  • 21,442
  • 29
  • 112
  • 288
CrazyDart
  • 606
  • 5
  • 8
  • 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_psprep Jun 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. – Alan Barber Jun 20 '12 at 11:43
  • 1
    I would bet money that you would end up with a typical public budget effect: Unused allowance would be decreased the following year, as the developers don't seem to need it. Therefore everyone is going to make sure to fully use their allowance even though they might not need it, just to keep the allowance up for the time they might. Expect a lot of expenses at the end of the fiscal year. – Jules Jun 20 '12 at 14:14
  • 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 '12 at 14:19
  • @warren to clarify, i'm a consultant. They let us use our own personal laptops for project work, unless we work onsite for a client that provides us the hardware. Part of the perks package is to give you $1000 for your personal laptop. – Alan Barber Jun 20 '12 at 15:23
  • 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. –  Jun 20 '12 at 15:58
  • 1
    the problem with developers always having the latest and greatest is that we can sometimes forget the typical user experience – JamesRyan Jun 20 '12 at 17:02
  • @JarrodRoberson: well, until recently we didn't even have something equivalent to your i3 setup for developers (and we typically run 2 app servers and have a least 2 eclipse IDEs open, a the occasional build, plus the load of usual browser tabs...). Not fun. I agree with JamesRyan it teaches you to squeeze performance, but on the other hand it's just frustrating (and can lead to crap optimization as well). I'd want hard-data on the "10x" claim though (not that I doubt that it improved, I just doubt the factor, if even at all measurable). – haylem Jun 20 '12 at 17:08
  • 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. –  Jun 20 '12 at 17:16
  • This is a terrible idea. Any company that has to maintain a network and provide support to its devs *needs* a hardware standard. Ideally, a hardware standard that upgrades often enough. – Steven Evers Jun 20 '12 at 17:24
  • 1
    @SnOrfus: the problem therein lies in the "ideally". Quite often, you can't argue much with your IT department once they've set policies in stones and are playing dead, and you end up with crap hardware where half of the time you can either decrease your longevity getting worked up cursing at your screen and slamming your mouse, or chit-chatting at the coffee machine (hey, can be productive, but hardly all of the time), or re-enacting a very famous xkcd comic strip. – haylem Jun 20 '12 at 18:11
  • Doesn't seem constructive. Should a company provide free soft drinks? How about "take your dog to work" days? This is the same thing... different companies will try different equipment purchasing systems, and there's no "right" answer that'll fit all company cultures. – Caleb Jun 20 '12 at 22:49
  • At least you're not working on a first generation 64bit machine running a 32bit operating system with on two gigs of ram. Talk about productivity. – Chris Jun 21 '12 at 02:05
  • I was wondering if this question wouldn't actually be better suited for [PM.SE](http://pm.stackexchange.com/)? – haylem Jun 21 '12 at 13:22
  • @Chris: actually, I was! I had at some point a x64 quad-core (ok, with 4GB, not 2GB) with... Win XP 32bits... Pointless crap. Hence the struggle. Now the "upgraded" stations have the same x64 quad-cores with win 7 x64, and 8GB (if you're lucky... sometimes it's 7GB, depending on availability. Unusual much?) It's definitely a lot better compared to the nightmare builds used to be, but it's still sub-standard for the work we have to do for this project. Still, I can understand that the IT department need to move slowly on these things. – haylem Jun 21 '12 at 20:57

13 Answers13

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.

Paul Butcher
  • 2,817
  • 1
  • 18
  • 18
  • 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 '12 at 07: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 Butcher Jun 20 '12 at 08: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 '12 at 08: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 '12 at 08: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 '12 at 14:13
  • +1. Though... I agree that in the perfect world, you'd be able to place an order for what you want and the company takes care of it, or already has a preselection of quality stuff to choose from so you don't need to over-analyze it. Sometimes you do need the extra thinking though, and also not all companies have a department to handle this sort of requests. – haylem Jun 20 '12 at 16:44
  • @Phil: interesting angle, didn't ever realize that, but it's true that I've been getting out of touch with hardware since I finished my studies. In fact, 2 years ago, after I came back from different assignments overseas, I was shocked when I found out my family had replaced their "brand new" Pentium 4... until my father told me "well you know, we got it about 5-6 years ago already...". Time flies, you better keep an eye out indeed. But hardware management can quickly be a time-sucking blackhole. – haylem Jun 20 '12 at 16:49
  • 2
    @Phil I've always tracked hardware changes via my personal machines. At work consistency of computers across the company is more important than being able to tweak mine exactly how I want it. Having everyone do that significantly increases costs for the support desk and corporate IT since they've got a huge number of configs to support instead of a handful. I'd rather see the money wasted there be available to make sure standard dev boxes are well specced and money is available to buy the tools I need when I need them. – Dan Is Fiddling By Firelight Jun 20 '12 at 19:37
  • +1 - How many software developers does it take to screw in a lightbulb... – JeffO Jun 20 '12 at 22:33
  • Well in the end this was what I ended up with. I asked about a budget and he said, how about you tell me what you want and I will get it for you? – CrazyDart Jun 25 '12 at 22:58
  • I agree with stjin. I've found that the IT departments are very focused on saving as much money as possible while getting equipment that _looks_ like it will work. I'd rather be given a budget and get what I want. But then again, I buy my own equipment because I've never seen an IT department give appropriate development hardware. – Andrew T Finnell Jun 26 '12 at 19:12
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.

haylem
  • 28,856
  • 10
  • 103
  • 119
  • 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 '12 at 17:14
  • @JenniferS: Thanks. I'm glad if it's of use to someone. – haylem Jun 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 Hunt Jun 22 '12 at 08: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 '12 at 08: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 '12 at 09:37
  • @Saab: Well you can if you want. Or you can request a budget. For one thing that might help to change their mind about it (but I don't see how that would solve the "spoiled" assumption. Spoiled people don't mind spending money buying useless gadgets. Case in point: herds of students in universities with MacBook Pros and Airs with a high price tag). Then it might also be the best way for you to get the decent hardware you need. If they're OK with that (usually they don't mind for input devices, workstations are a different issue...), go for it if you don't mind paying it. – haylem Jun 22 '12 at 09:39
  • @haylem Yeah it wasn't even RSI, just ache, thank god. Anyhow, I really think it's a flaw, inherent to the mouse, any mouse, I've had expensive ones too. It's the whole thing of pawing your way around the desk, too much friction. Once you go trackball, you'll never got back. – Bryan Hunt Jun 22 '12 at 17:23
  • @BryanHunt: I'd try trackballs again, but I'm also afraid of then switching to someone's station and feeling alienated by the mouse. So, I try to use the keyboard as much as possible. Though even keyboards, after 10 to 12 hours on a regular basis can show signs of muscular problems, both because of the tensions in the fingers but because of the constant weight of your arms lying on your wrists bones, if you put them down. Best thing I did to stop if getting worse was actually forcing myself to re-learn how to type. – haylem Jun 22 '12 at 17:26
  • @haylem I touch type. Been touch typing for a decade now. Never use anyone else's computer. Not going to compromise my comfort for the sake of station jumping ;) – Bryan Hunt Jun 23 '12 at 14:25
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,473
  • 1
  • 37
  • 64
  • 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 '12 at 08: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 '12 at 17:03
  • 2
    Everything you ask for can be a weapon used against you by management. Pick your battles. – JeffO Jun 20 '12 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.

BЈовић
  • 13,981
  • 8
  • 61
  • 81
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
  • 12,867
  • 1
  • 40
  • 65
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,084
  • 1
  • 23
  • 23
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
  • 18
  • 17
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,541
  • 1
  • 25
  • 41
  • 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 '12 at 11:42
  • Who decides when a technology increase is significant in this case? – Zoot Jun 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. – tcrosley Jun 21 '12 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.

dodgy_coder
  • 1,098
  • 7
  • 22
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).

Brad Patton
  • 131
  • 6
  • 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 '12 at 08: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.

user583726
  • 101
  • 1
-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