Looking for good techniques to justify "great than normal" machine for developers. The company I work for buys the same underpowered $500 dollar systems for everyone, and looking for ways to prove ROI or arguments to use. Sorry, I didn't say this in the initial question, the stack is VS 2008, SQL 2005/2008. As duties dictate we are SQL admins as well as Web/Winform/WebService Developers. So its very typical to have 2 VS sessions and at least one SQL session open at the same time.
Figure out how long you spend in the edit -> build -> debug cycle, then total that up over the course of a year. Then guesstimate (with some justifiable inflation) what a good computer would do to that number. Multiply the time improvement by your hourly rate, and present it as a business case.
A good one is:
Extra time per compile X number of compiles per hour X hours in working day X days in month X number of developers
This highlights how much of your (expensive) time is being wasted waiting for the machine to finish. You can do the same for test runs etc...
Testing, at least, should be occurring on a system as close as possible to the environment it will be released into. Most developers do at least some testing on their desktop, so that's a reason to not be any worse than your live environment.
If your live environment is an underpowered $500 system, then well, that's your environment. Perhaps you should work on that? Hard to say what other things you should bring up without any idea of what kind of development you're doing. Application? Server? An interpreted language or a compiled language?
My saying is "The answer to programmer productivity is not to give everyone slow machines"
Volunteer for as many dog and pony shows as you can (opportunities to show off what you've done to important people like the VP and so forth). At some point your machine will bog down. They'll ask why everything is taking so long. Explain that you have a painfully slow computer. Also point out how you're going to risk missing a deadline because of it. Point out how the hard drive never stops grinding.
Playing the numbers, point out how expensive your time is compared to the one-time cost of upgrading you now.
Danimal has a good formula there. You might include in that business case a spread sheet showing the base machine compared to what an "average" developer for your company needs, and wants. Things like Ram, CPU speed, preinstalled applications, GPU and so on.
Don't forget to include multiple display devices in your request: having a second screen to have the code on one, debugger on the other (eg) is invaluable. Or to be coding in one screen with the language reference in another.
Do you have a central server where building is done? If so, arguing for a "greater than normal" development workstation may be hard.
Being able to cut build times by a factor of 2-3, though, is a logical reason to buy bigger hardware.
OTOH, if a company is so worried about how much they're spending that they only ever get the Walmart specials (which are fine for "normal" work (typing, email, scheduling, presentations)), they're going to scare-off their actual technical folks, like yourself, who actually want to get work done, and who have a more complex job, than, say, the administrative assistant.
Unless you're hiring incompetent developers or your developers are making extremely ridiculous demands, the return on investment is almost always orders of magnitude higher than the cost of a workstation. Even a high-powered machine with a 30" monitor is cheap compared to a good developer's salary, anyway. It's so easy to please developers with a few shiny gadgets. If you don't do it, the company next door will!
Everything you get from your developer is channeled through his or her tools. The slightest inadequacy in those tools will be compounded a thousand times over the lifetime of those tools (expect to have to upgrade them within two years). These inadequacies kill your developer's productivity and may even generate a lot of frustration. Why would you want to skimp on the most important resource for your developers? I bet if you look deeply, you'll find much greater waste elsewhere in your company.
partly because of productivity and responsiveness of the machine for a developer who would otherwise play chair-jousting during compiles; but also because a developer is going to install the biggest, resource-hungry applications you'll see outside a production server.
Visual Studio takes up a lot of disc, RAM and masses of CPU. Eclipse (I'm told) is just the same. Any developer why is doing something useful will also have source control, development versions of production systems (eg a local DB to develop against), etc. All those apps take up lots of ram and CPU too.
Unless you're remotely developing on a server somewhere, you'll need tons of resources just to install half the bloaty apps they want you to use!
Expressed as code:
AnnualSavings := DeveloperCostPerHour * (AnnualWaitHours(OldPC) - AnnualWaitHours(NewPC));
if AnnualSavings > (MachineCost(NewPC) - MachineCost(OldPC)) then
ShowMessage('Time to pony up for a new machine!!')
else
ShowMessage('Sorry bub, gotta keep the old clunker.');
I can contribute from my own experience why would stronger machine would be helpful:
- Testing the code under different configurations. This would require running some virtualization solution. Such solutions requires a strong machine.
- Running a sand box. Many times the application developed requires a DB, a Web Server or other complementary product. Again, such software might require strong machine.
- Parallel development. At times, it might be very helpful to run multiple instances of the development environment. To do that, multiply the system requirement of a single instance.
Tell them that you will pay the difference between their cheap machines and the machine that you want. If you are confident that it will boost your productivity significantly then you will make the money back easily in performance bonuses / salary increases.
Also, if you put your money where your mouth is then chances are they will not follow through on making you pay for it because it will cause too many problems in accounting.
One of the reasons companies standardize on machines to buy is to avoid the bickering that goes on when employee A gets one thing and employee B gets something better. If you paid for it then no-one is going to complain that you have a better PC.
If they still say no then at least you know where you stand. They don't take you seriously and they don't take the role of developer seriously. Dust off the CV.
Yeah I hear you.
The basic justification is always the same for me : Slower machine -> Slower developement ; Faster machine -> Faster developement.
Altough if your boss is too much focused on numbers Microsoft is not helping either.
Visual Studio setup requirements :
System Requirements for Installing Visual Studio 2005
Processor
Minimum: 600 megahertz (MHz) Pentium processor
Recommended: 1 gigahertz (GHz) Pentium processor
RAM
Minimum: 192 megabytes (MB)
Recommended: 256 MB
Being cheap on hardware is stupid. People are way more expensive to find, hire, and retain than hardware. The difference in cost between minimal and great hardware is usually equivalent to a few weeks of programmer salary. You should give developers a top-end machine of their choice and at least 2 screens. If your company won't give you the tools for you (and thus them) to be successful, they aren't worth your time.
If you are a salaried drone working insane hours and getting everything done that is asked of you, don't waste your time squeezing blood from the turnip. The company is exploiting you, you allow it, and there is no reason for them to change. Either spend your own money (buying yourself some additional time each day), find some way that the current situation causes pain upstairs, or put up with it.
If on the other hand you are working a reasonable amount of hours or are paid by the hour, you should be able to justify the request, either through reduced hours (= reduced cost) or through improved productivity (= things getting done faster). You need to decide which the organization is more interested in and present your request in those terms.
Identify (and quantify if possible) how the under-powered machine impedes your productivity and slows you down. Then apply that to EITHER reduced hours for the same work OR to more work done in the same time.
Good luck!
I'm guessing that you probably don't work for a software company - like me, you probably are part of a software group within a manufacturing/hardware company, or maybe a financial or educational institution, etc?
For me, working with/for these types of companies, it's usually not that the company wants to deny people the tools they need to get their work done, but rather a matter of not understanding "why" developers need better machines than sales people.
Maybe try using an analogy that makes sense to the person(s) holding the checkbook. Why do sales people take clients to a steakhouse when McDonald's is right across the street? Why do mechanics spend extra money to buy Snap-On tools when Wal-Mart sells Buffalo brand screw drivers? (sure, I have some Buffalo screw drivers at home - but I'm not a mechanic)
This is just rediculous, developers are very expensive to hire and pay, hardware is very cheap.
Giving everyone a decent machine on their desktop plus a well spec'd server ( 8G ram should be ok) in the server room is the minimum that you should expect.
Otherwise, how are they going to be able to run a decent amount of VMs at once?
Strictly speaking, their desktop machine doesn't matter too much provided they have a decent development server (I'm assuming this is not games development etc here). Two screens is a good idea though.