
Why doesn't every company buy developers the best hardware? - utkarshkukreti
http://programmers.stackexchange.com/questions/93983/why-doesnt-every-company-buy-developers-the-best-hardware/
======
cletus
Good questions to ask when being interviewed:

\- What is your standard developer hardware configuration?

\- How often is it refreshed?

You get bad answers to those questions and it's a definite warning sign
(IMHO).

If you're working for a cash-strapped startup (possibly bootstrapped), you may
want to negotiate a deal whereby you supply your own hardware (in exchange for
higher salary and/or stock/option grants) if they're only in a position to
provide substandard hardware.

One side note: what constitutes good hardware depends on what you're doing. If
all you're doing is writing PHP/Python/Ruby in vim/emacs and running a local
Apache/nginx and possibly a MySQL server then it almost doesn't matter what
hardware you have... _apart from the monitor_.

But if you're compiling huge C++ (or even Java) projects then you probably
want good I/O (possibly an SSD, preferably in RAID1 config for redundancy),
lots of RAM and a good CPU.

As one data point: I have a 6 core machine with 12GB of RAM and 2 24" monitors
(some opt for 1 30") plus a Macbook Pro 15" with SSD. You can refresh your
hardware every 18 months if you want to (but most don't unless they have a
pressing need; I know some people with 4-5 year old workstations because those
are fine for what they do).

~~~
praptak
_"But if you're compiling huge C++ (or even Java) projects then you probably
want good I/O (possibly an SSD, preferably in RAID1 config for redundancy),
lots of RAM and a good CPU."_

For huge builds it makes sense to go with a compile farm. Working on a god box
that sits idle 99% of the time is a bit wasteful.

~~~
rch
Quick aside: does ESXi still impose too much overhead to move a compile farm
onto VMs?

A friend of mine tested it 3 years ago and it was something like 300% slower
(no idea about the disk config, but he's a smart guy). It would have been
worth it at anything under about a %50 hit...

~~~
absconditus
What exactly would be gained by using VMs, assuming that there were no
performance problem?

~~~
tedunangst
The boss gets to put "lead the conversion to a virtualized environment" on his
resume. True story.

------
alain94040
I empathize with you, the developer. I still want the best machine money can
buy.

But I have also been on the other side. Let me give you a simple question to
ponder: assuming an engineering team of 50, and the cost of 2% to upgrade
machines, would you rather upgrade everyone, or hire one more developer? As
the manager, I can tell you that everyone is asking for an extra headcount:
"we need a full-time person to handle builds", "Tom could really use an extra
hand with the XYZ module". Etc.

It happens to cost the same: hire an extra developer, or upgrade. So, as a
manager, you handle the trade-off. Life is all about trade-offs, not absolute.
I'd love to have a faster machine. I'd love to have more engineers. I can't
have both.

~~~
etaty
Give each year/month credits to your engineers to buy a new computer and give
them a way to 'buy' extra credits. So some of them will wait longer, some will
buy a new machine each year.

Give them the liberty to choose!

~~~
jlaurend
There are certainly benefits to having everyone upgrade at the same time,
though. From a technical standpoint, it seems better to have everyone on the
same setup so that you only have to deal with the same set of problems. You
might also be able to get a deal for buying in bulk.

Additionally, it would be frustrating to use your credits too soon and then
the guy next to you gets something twice as good one month later. So just play
it safe by keeping everyone on the same playing field.

~~~
willyt
Or suddenly all the machines in the office are bluescreening at the same
obscure graphics driver bug and nobody can do any work...

------
encoderer
To any development manager who wishes they could offer better hardware within
their budget: If you haven't already done this, buy an SSD for every
workstation. Nowadays, you can get 128GB for $200 or less.

Do that, and make sure the system has 4GB+ RAM, and 2 monitors at high
resolution, and your hardware will feel brand new to the guys on your team.

I did this a couple years ago as one of my first acts after being promoted,
and it worked great. I paid a bit more to get the drives that came with an
upgrade kit (that is, an enclosure and imaging software). Gave them to each
dev to take care of themselves.

I didn't have to wait on and work with the bureaucratic IT department, and a
dozen SSDs was cheap enough I could put it on my card without needing CFO
approval.

You don't need "The Best" hardware. In fact, it reminds me of the saying that
"People buy horsepower, but they drive torque."

What matters to developers isn't how many FLOPs you can do, but how quickly
can you load your VMs and start Eclipse and grep your local filesystem.

~~~
illamint
Echoing this. Most workloads don't need dual Xeons, or even more than 4GB of
RAM, but an SSD and two big monitors can make even a low-end machine feel like
an absolute Ferrari when you're not waiting for Outlook to launch or wasting
time otherwise. SSDs are the best productivity upgrade you can buy: $100,
maybe $200 per developer and suddenly no one's sitting around just waiting for
their IDE to launch.

~~~
jseliger
I'm not a developer, and I still think an SSD is the most significant marginal
upgrade I've seen in the last 10 years. If you told me I could use a machine
with Core Duo and an SSD or a modern Xeon and a standard HD, for almost all of
what I do, I'd choose the former.

------
bad_user
I have mixed feelings that the best hardware yields better productivity.

I worked with a Macbook Pro, top of the line, with 2 x 24 inch monitors
attached, with an ergonomic keyboard and wireless mouse and all that crap.

Now I work with a $500 ASUS that doesn't even lit my keyboard, with Ubuntu
Linux installed and I'm using it directly (no external monitors or keyboard)
since I'm on the move a lot.

As far as my productivity is concerned, I still get things done at the same
pace. Hardware is not my bottleneck.

Of course, this has more to do with my other preferences. I like keeping my
toolchain as light as possible. I don't use bloated IDEs, even when working
with languages that require an IDE, such as Java. I don't do heavy processing
often and when I do, I prefer offloading that work on AWS. I am also
proficient with manipulating virtual desktops.

As far as startups go, I think that spending money on expensive hardware is
not frugal spending. If you're my boss, I would rather prefer a bonus than the
latest and shiniest crap -- if I want shiny crap, I can buy it myself while
respecting my own priorities.

~~~
icebraining
My meager single-core 1.6GHz laptop has been fine for development, until the
time I had to use Eclipse instead of Vim. Why, oh why, does it freeze while
I'm just writing code!

~~~
Kliment
Eclipse shows you build errors by compiling your code in the background as you
type. I believe you can disable this, or make it happen less frequently. This
is the cost of red wavy underlines for compile errors. I don't remember the
exact setting, as I haven't used Eclipse in years, but it's in there.

~~~
icebraining
But the Right Thing™ would be for Eclipse to lower the priority for such
checks, so that they wouldn't conflict with the interface. I often have
processes using all my available CPU time, but since they run at a 'niceness'
value of 19, they don't affect the interactive tasks.

~~~
bad_user
It's easier said than done -- whatever Eclipse is doing in the background, it
also has to update the interface to reflect the latest results, which means
synchronization with the UI thread.

Also, a big project is hard to optimize, especially when threads are involved;
so whatever shortcuts you take to make it work at first does come back to hunt
you in a big way and you can't fix it easily.

For example people are telling me that Eclipse should run fine, but on my
laptop it freezes a lot, even for small projects; while IntelliJ IDEA works
flawlessly. So I'm not sure what the problem is, but it does something on my
box that it shouldn't -- and throwing more money on hardware (instead of
searching for a better alternative) just seems like the wrong approach to me.

~~~
burgerbrain
I am under the impression that async UI updating is a rather solved problem.
I'd wager Eclipse has even done it since.. probably forever. No, I suspect the
real issue is that it doesn't 'renice' it's compilation processes correctly or
sufficiently.

~~~
bad_user
Not necessarily -- if you're pushing thousands of update events in a short
time, those events will also trigger a waterfall of other events triggered by
UI components and so the effect gets multiplied; the end result being that it
doesn't matter if the operations themselves are async as the UI will get
sluggish.

Another problem is that some operations are blocking in nature. Consider the
case when an intellisense dialog is triggered (after typing a dot or pressing
Ctrl-Space) -- to give you intellisense, Eclipse has to compile your code,
make guesses about your intent in case the code has errors (since intellisense
also has to function in case of simple errors, otherwise it is useless) and
then present you with a dialog with options available for completion. This is
not something that can be done async.

Of course, this opinion was just some random guess. I have no idea why Eclipse
has the tendency to freeze the UI on my machine.

------
gdulli
My company proactively offered to upgrade hardware for whoever needs it. Even
bought a huge monitor for everyone, which I didn't need and doesn't fit on my
desk.

But a $99 software license I asked for 4 months ago that will make me more
productive every day, I'm still waiting for it.

One time I was at a large company that gave all developers ridiculously fast
and powerful machines. By far the highest specs I'd ever used. But the machine
crawled because of all the million background processes IT put on there, and
the crappy tools in our software chain.

Software is so much more important than hardware.

~~~
rch
Is that $99 for tasktop? I've been waiting a week for that one, and will just
buy another license myself if it hasn't come through by Thursday. Just as I
did for Fusion and Igor...

Now, if I could just afford a CX1...

~~~
gdulli
No, it's an SSH client.

~~~
rch
Ah, interesting - never considered paying for one of those...

~~~
gdulli
SecureCRT has some really nice features. I spend a lot of time in terminal
sessions and never liked Putty.

~~~
falcolas
I spend 90% of my day in terminal sessions (python development on remote
servers), and while I like Putty, I'm open to anything that can help me
develop faster. What features of SecureCRT do you feel would help you the
most?

~~~
gdulli
SecureCRT has tabbed windows, so I can have 5 sessions on one machine in one
window, 5 sessions to another machine in another window, and so on. I can find
and navigate to the right session with the least effort.

It can automatically keep logs of all sessions. Grepping through these logs to
find a complicated bash command or sql query or the output of a query/command
that I ran in the past has been invaluable.

And there are little things it handles better than other clients I've used. It
restores broken connections better. The session profile management is easier
to use. Quickly opening an SFTP tab for the current session is handy. Resizing
a window does the right thing. It has a million other options, far more than
other clients, but doesn't feel bloated at all.

I'm sure other clients have some of these features but this is the only one
that has what I think is the best implementation of all of them, and they add
up to a great experience.

~~~
falcolas
Thanks for the feedback. Looks like they offer a free trial, giving it a shot.

~~~
eropple
If $99 is a little steep (and for me, it was), PenguiNet is a pretty good,
mostly-modern SSH client. I purchased a license and it's been worth it.

<http://www.siliconcircus.com/>

------
chadgeidel
Doesn't it seem that everyone is avoiding the "elephant in the room" here?
Virus scanners are a severe drain on productivity. Perhaps I'm in the minority
by running a Windows box, but when I open up Process Monitor
(<http://technet.microsoft.com/en-us/sysinternals/bb896645>) it sickens me to
see how much I/O is going toward stupid virus scanning operations. Not to
mention the 500MB of real memory that the various scanner binaries are
consuming. My virus scanner consumes more memory and I/O than my IDE (Visual
Studio 2010).

Maybe I'm in the minority here, but I would expect that a developer should
know enough about computing to not get a virus. This, of course is assuming
the organization has a competent IT department and is "securing the perimeter"
with firewalls/proxies, and only allows approved software loaded on machines.

Sure, this would be a radical approach to IT, but I think it's a policy that
needs to be implemented.

~~~
johngalt
IT here who has tried this. Completely agree, av tools are pigs and they never
seem to stop viruses. Intuitively virus writers must test vs common av tools
before releasing.

A locked down network without av on the endpoints worked _better_ in my
experience, and the users loved it. The only reasons I still use av for some
offices is this:

1\. A manager will inevitably ask "omg why wasn't there AV on this users
station?! Are you negligent!?"

2\. Locking down the network can get in the user's way too. Just because I
have good network practices doesn't mean that the software you require does
too. All it takes is one business need/damn the damn the risks, and you are
left scrambling.

------
alex5092
I worked for a huge company in their IT dept. We tried to convince our
management to upgrade all the development machines using some of the arguments
already mentioned in this thread. They did not want to believe that a hardware
refresh would actually improve productivity ("show us the ROI"). A couple of
us decided to build a tool to gather some metrics on how long it took to build
and deploy our app on localhost (if you're interested see <http://lopb.org>).
We then compared results before and after a simple RAM upgrade on a few
machines. We were able to show hard numbers to support the claim that better,
faster hardware would save time waiting for build & deploy to complete.

Although building in less time did lead to happier developers, it did not lead
to more features getting built in the given time frame. We did eventually all
get RAM upgrades at least, but the development process and technology stack we
were using were the real time sucks that we could not fix with better
hardware.

------
51Cards
I've made this comment before on here. I purposely develop on older hardware
because of performance concerns. Pretty much any code you write performs well
on an i7 but will it perform well when it gets to your clients who are all
stuck running Celerons? I always keep my development machines back a few
levels so that I know if it runs well for me, it will for the end user.

~~~
Havoc
Surely the best way to do it is to develop on the best machine available but
then occasionally test it on inferior hardware just to make sure you're still
on track?

Intentionally crippling the entire dev environment seems a bit drastic to me.

~~~
51Cards
I don't see it as crippling at all... I don't develop on a 486 :) But you also
don't _need_ to sit on an i7 either which was the thought in the article. If
your target audience is using typical hardware then most of the time you can
easily use typical + 1 to develop. Then you can spot issues as they arise and
not later when you kick to the test environment. The more you can catch in-
process is less you have to re-architect later. Of course every situation will
vary. Just my thoughts anyhow.

~~~
mahyarm
That doesn't really work when you have a complex system that spans servers,
clients, databases, custom libaries,etc. And a large large test suite.

------
PaulHoule
In a lot of organizations, software development is secondary, so the machine
you get is going to come out of some system that does a mediocre job of
procuring machines for salespeople and secretaries. If you're lucky you get a
new mediocre machine, if you're not you get a hand-me-down laptop from a
salesperson who couldn't sell.

It doesn't make any sense, but 70% or so of people who hire developers don't
seem to look at this rationally. On the other hand, they usually don't provide
you good specs either.

~~~
stewiecat
Even in shops where software is the business I've been given a standard Dell
laptop for development. The IT folks didn't want to bother with procuring
different laptops for different business functions, so everybody got the same
thing.

------
vacri
What constitutes 'best hardware'?

I have a friend in high finance whose desktop is a (dual?) quad core with 12GB
ram which he regularly maxes out. I have a colleague that writes firmware on
windows XP, which with his various drivers and Eclipse problems causes a BSOD
about once a fortnight. I keep offering him to get a new computer, cards,
whatever, and he refuses because of the cost to him in terms of getting his
environment set up 'just right' again - he's quite picky (at my previous
workplace, a digital circuit designer on six figures didn't want to move from
his PIII to a Core 2 for the same reason).

Another colleague runs a quad core on an SSD and complains that his CAD
program runs slow... but when we run it through its paces, it doesn't seem to
hit any bottlenecks bar the initial load (which isn't his complaint); it just
'feels' slow.

as with all things computery, the answer is: "it depends"

~~~
djipko
>I have a colleague that writes firmware on windows XP, which with his various
drivers and Eclipse problems causes a BSOD about once a fortnight. I keep
offering him to get a new computer, cards, whatever, and he refuses because of
the cost to him in terms of getting his environment set up 'just right' again
- he's quite picky (at my previous workplace, a digital circuit designer on
six figures didn't want to move from his PIII to a Core 2 for the same
reason).

I've seen this before (and was guilty of this kind of thinking a few times)
and I believe this is simply misguded. No matter how good of an "old-school"
developer someone is, she needs to keep her tools fresh. To me this is no
different than having a very manual build or deployment process (maybe not as
bad but still).

I believe when it comes to HW + toolset for development, you simply must
consider:

-Computers break - you need to be able to set up a new one in a matter of hours (or 10s of minutes). Maybe it does not need to be this drastic everywhere, but if your computer breaks and it takes you a few working days to get it just right - something is wrong - you need to automate it or reconsider the tools (which may not be always possible especially in embedded/hardware design world). If you get this right - upgrading will not be (such) a problem.

-You need to keep up with the tools - maybe more than you need to keep up with the libraries. With this I don't mean only the newest versions, but to constantly be on the lookout for the better alternatives - blogs, forums etc. there is simply no excuse for not doing this if you are a developer other than laziness. This will help you get rid of some stuff on your machine you don't actually need because you may end up with better alternatives. I am a firm believer in getting rid of clutter in your life.

Not all devs in all companies can follow these, of course, due to policies,
the nature of work, "legacy stuff" and whatnot, but it helps a lot if you can,
and point 2 means you are learning - so you are not bored.

------
wladimir
I don't care so much about the hardware as long as it does its job and there
are no crazy wait times. Having good and recent software on the other hand is
very important to me.

I simply hate having to put up every day with bugs that have been solved five
years ago. And especially if there is no reason beyond simply the slowness and
conservativeness of the IT dept that causes this.

------
matwood
My philosophy.

Buy a nice monitor (2 if you can afford it).

Buy whatever hardware is reasonable for ~1k or less. Repeat yearly.

This will always keep the developer with a good machine without spending too
much money. With the way HW is nowadays, it's possible to go 2 years on each
machine.

The story changes if you need laptops. After using LOTS of laptops over the
years, if given a choice I'll only use MBPs now.

~~~
SoftwareMaven
I concur with all the above. It doesn't take a fortune to keep developers in
really nice machines. I do prefer to get my developers laptops, though (unless
they explicitly prefer not). Convenience is just too nice (not too mention the
occasional time at home always pays for the extra cost).

~~~
matwood
I agree and will personally never buy another desktop. With laptops I budget
them to last 3 years as my primary machine. I've owned 2 other MBPs, all of
which are still in use by the people who I either old them to or gave them
too. The original G4 PB is still kicking strong with a guy from work, my mom
loves my old SR MBP, and my current i7 runs great to the point where I could
see it lasting 5 years by simply replacing the HD with an SSD when prices are
right.

------
kemiller
Something I always wanted to do as a manager was to offer not just great
hardware, but essentially an allowance. That is, the developer is expected to
buy and maintain their own hardware, but they get a budget. Say, $3000 at
signing, $1500 annual refresh, and you have to pay it back if you quit or get
fired for cause within the first 12 months. Coder gets to use whatever
hardware they please, and keep it. I have predictable support costs, and in
the grand scheme of things, it's a pretty cheap perk.

Never could convince my superiors. But maybe when I start my own...

~~~
dsmithn
Sounds like a good idea, but I would not want to risk getting stuck paying
$3,000 for a machine I don't need anymore.

~~~
kemiller
Don't... need? What? ;)

So, if you already have hardware you like, use that and take the money as
bonus. Or get a big monitor.

------
d4nt
If you're working in an in-house IT dept. then giving the staff of a cost-
centre better equipment than the "people who make all the money" is a big
issue.

If you're working in a big company then central IT probably have a standard PC
supply agreement and standard image and will oppose allowing anything non-
standard on the network until someone signs off on 2 or 3 extra support
engineers to "support" this non standard stuff.

If your company isn't making much money, any capital expenditure like this is
hard to justify.

So, you really want to work for a small software company that's making lots of
money.

------
YetAnotherAlias
Another important 'hardware' that doesn't get enough attention is the chair &
desk. I believe that having an ergonomically designed and adjustable chair and
desk is as important as the PC specs to programmer productivity. In my current
job I have a bad chair/table and it is breaking my back. Probably this issue
also gets worse with age. Investing in good furniture might also save the
company on health care costs. From personal experience I have spent quite a
bit on fixing my back.

------
mnutt
From the other side, as founders, when did you switch everybody over from
using their personal laptops to company laptops? A funding event? Certain size
of the team?

~~~
rdl
Even before paying for salaries, we buy hw for founders or employees as needed
-- early on, pretty flexible (I got a desk and chair for home so I could wfh;
cofounder got a new mbp 2011to replace a 2009, but since I have a 2010
personal, I didn't feel any need to upgrade myself.

One of the big advantages of being a small startup is flexibility -- no need
to have policies for stuff like this, just handle it on an ad hoc basis.

------
kraemate
Am i the only one who thinks developers asking for good hardware is an
extremely bad idea? All the greatest software ever written has been developed
on extremely slow hardware (especially by today's standards). Fast compile
times is an oft-cited reason, but you can always work on the program while it
compiles. Are 'developers' these days really that perfect and busy that they
need to build their 10GB codebase in 10 seconds? And they have /nothing/ else
to do while it builds ?

According to me, all programmers should be given absolutely the bare minimum
hardware to program on. This way we can eat our own dogfood and hopefully
reduce program bloat. The primary reasons programs suck these days is because
'developers' have terabytes of RAM on their development boxes and consuming 1G
of memory for an applet isnt a big deal for them.

I say give all these developers asking for more hardware a 386!

~~~
totalforge
Devs should be required to _test_ on that older machine, and benchmarks should
be recorded and distributed, to keep everyone aware of the base-supported-
config performance.

The software can also suck from hundreds of hours of time being wasted by the
older gear. If your competitors don't think the same way, you have a problem.

~~~
groprate
It would be way to easy to ignore and rationalize away numbers on a table,
making it personal for them means automatically fast for every user.

------
motters
In the past I have been content with hardware which is several years old. One
advantage with slower machines is that benchmarking becomes easier, such that
any slow operations are really obvious at the development stage. The other
advantage is that customers are also often using similarly aged hardware.
Older hardware forces you to make your algorithms efficient, rather than
relying upon faster machines to hide the bloat.

In my case I was also often developing for embedded target hardware which was
a good deal slower than a typical PC, so older PCs were more realistic for
testing.

The advantage of always being on the latest hardware is if you're developing
large software systems which take a long time to compile, or if you're doing
something which fundamentally requires significant number crunching - such as
games or computational chemistry.

------
bradfa
I work with 135,000 of my co-workers and we all get rather slow, outdated,
Windows 7 boxes with 2GB of ram. It's the standard config regardless of what
you do. Supposedly it's much cheaper to manage for the IT dept than if we got
our own stuff individually and I imagine it's much cheaper to buy 50,000 of
the same computer from Dell than order a whole bunch of variety.

Seeing as developers are a small percentage of the total workforce, even if
all of them complained, it would be drowned out by the mass of people who have
computers good enough for their jobs. The cost of having to deal with ordering
and supporting different computers (beyond just laptop versus desktop) is not
0. The quantifiable gain from having some people have better computers is very
difficult to calculate. Thus, it's easy to just give developers the slow boxes
and listen to them complain.

Related, I've previously emailed to ask why my company has a policy that every
PC must be shutdown every night even though it can take up to 8 minutes to
start up in the morning (we have a lot of required anti-viri/spam/malware and
disk scanners that run). I was told that the company expects us to not be
fully efficient all the time, go get some coffee while your computer boots.
Also, different budgets cover PC cost versus payroll.

~~~
jerf
"I was told that the company expects us to not be fully efficient all the
time, go get some coffee while your computer boots."

Who told you that? Well, actually, it doesn't much matter to me, but if you
were told that by IT, you may discover that forwarding that email up to
management will have exciting and entertaining consequences. As long as you
don't mind making an enemy or two.

On a more practical note, some machines can be set to turn on at a certain
time, via BIOS settings, or hardware that takes advantage of Wake-On-LAN or
other such things. If you're really personally bothered, you may be able to
take advantage of that. You may also want to consider trying to simply suspend
the machine. It'll mostly look and be off, but should come up more quickly...
if it works.

~~~
bradfa
Management told me that ;)

Our IT is some low paid people answering the phones in a foreign land. They
don't much care if I complain. The IT managers higher up who make the
decisions aren't any better at listening to employee complaints. Their
motivation appears to be save as much money (that they decide to count) as
possible. Their impact to costs outside of the IT budget aren't high on their
priority list.

My laptop gets locked in a cabinet at night, I just suspend it and everything
appears to be off. If you have a desktop, that's not necessarily possible, and
the Dell's we have usually have some blink'en lights still going when the
machine is asleep.

BIOSes are generally locked down so employees can't change them. Laptops have
mandated full disk encryption that uses the MBR in special ways, so dual
booting is not possible.

I actually was told once that I had left my 21" CRT on overnight. The little
stand-by light was still on when I left one day. That's a big no-no. There's
somewhat random checks for these types of things. Fun, eh?

Thankfully, the work I'm doing is interesting and the pay's good. The politics
and budget antics are rather annoying but I get the impression that's the way
the world works at large companies. Maybe I'm wrong?

------
allenp
Real question: I know these are huge companies with diverse teams and projects
but can anyone share what type of hardware Google, Apple, and Microsoft
provide for their devs?

~~~
yesbabyyes
Don't trust me at all but I've read about Microsoft's machines (probably here
on HN) and as I recall they have really top-end hardware.

I think Google has a lot of MacBooks but I don't know where I get that from.

~~~
egeib
I spoke with a Google sys admin a few months ago. He said he had a MacBook and
a Lenovo Thinkpad with Ubuntu. It was in the news a while ago, that they only
use Mac or Ubuntu. Any Windows OS has to have some type of signoff from
management.

~~~
glassx
That's what I've heard too. Also, according to this article, 70% of the
laptops run OS X and 30% run Ubuntu. Most desktops are Linux, though.

<http://digitizor.com/2011/07/12/google-android-linux-dream/> and
<http://news.ycombinator.com/item?id=2755050>

------
brudgers
The economics in the article are faulty because they do not include the
considerable amounts of staff time entailed in swapping coumputers out. Those
include not just the obvious time spent acquiring a computer such as
determining what is available, comparing specs and pricing, ordering,
receiving and physical installation, but also all the productivity losses
which configuring a new computer entails - e.g. installing and configuring all
the various pieces of software for the new OS installation which invariably
accompanies those Macbooks which the author advocates (the same would hold
true for Windows machines as well and even the drivers on Linux would have to
be tweeked for new hardware). And lest we forget, there's handling and
disposing of the old computer which also takes time.

It's the sort of thing which can easily consume 40 person hours - even without
the considering the inevitable time lost playing around with the new toy.

Finally, there's dealing with the inevitable pissing and moaning which
accompanies any change - some people just want their damn computer left alone
because it works fine, thank you very much. Other's wanted the 15" MBP not the
17", while the OSS fanbois cannot believe that they were once again thwarted
in favor of commercial software.

------
robryan
As well as just the hardware speed, I think for some it would also improve
their motivation, and you may gain more from an employee in that.

It also depends what your doing, if you are after someone to produce great
pixel perfect designs, get them some decent screens. If you have an app where
the latest i7 and SSD can cut compilation time in half you can probably make a
good gain there by not having the programmer get distracted each time they
compile.

------
elviejo
This is a reason why I'm interested in "Bring Your Own Computer" idea. I mean
I still bring my laptop to work anyway. Normally my personal computer is more
powerful than what I have at work anyway. And if the company would pay or give
me some bonus for it I'd be really happy.

[http://www.zdnet.com/blog/sybase/the-year-of-bring-your-
own-...](http://www.zdnet.com/blog/sybase/the-year-of-bring-your-own-computer-
to-work/113)

~~~
mmagin
IANAL, but in the modern world, that can result in a lot of potential legal
hassles. E.g. company gets sued, and suddenly your personal computer gets
subpoenaed in the process. You're without your laptop AND other people are
looking at potentially embarrassing personal data, etc.

------
jrockway
If you work at a big company, it's because most people are bad at programming,
and the assumption is that you are too. Therefore, doing anything other than
the bare minimum to prevent employees from burning down the building is a
waste of money: a new computer is never going to increase productivity if the
person using it doesn't know how to program.

The reality is that organizations don't change, and if programmers are
considered code monkeys at yours, you need to GTFO if you aren't one. The
reason your coworkers don't do more to change the status quo is because it's
great for them: no real obligations and a nice bump in titles every five
years. They don't need a better computer because they don't do any work. If
you actually want to program computers, though, then you need to look for
other opportunities.

<jedi hand wave> This isn't the employment opportunity you're looking for.

If you work for a small company and have this problem, it's simply because
they're cheap.

------
walexander
Another point to make: if you're a developer, don't be afraid to _ask_ for the
best hardware.

I've seen many developers sit around staring at laptop screens while I'm
working on my 2x24" monitors.

Do not feel like you're being greedy. Ask your boss. The most he can do is say
no, but the likely thing he'll do is 1) ask why, 2) say yes.

------
rch
I once had to watch a startup skimp on dev hardware, only to splurge on
'launch' parties and (no kidding) billboards...

The founder, a marketing major, had a hard time explaining things to their
investor once the inevitable end was clear.

I'd ask the question: why wouldn't a company trust the developers' specs for
adequate hardware?

------
Slackwise
Those few seconds of delay between performing actions can mean the difference
between keeping focus on your work, and getting annoyed and distracted. I
simply can't understand why anyone wouldn't want to give their developers at
_least_ a fast CPU, plenty of RAM, and an SSD.

------
int3rnaut
I've been reading a lot of Paul Graham's works and one of the big things he
points out is being cheap is good.

"8. Spend little.

I can't emphasize enough how important it is for a startup to be cheap. Most
startups fail before they make something people want, and the most common form
of failure is running out of money. So being cheap is (almost) interchangeable
with iterating rapidly. [4] But it's more than that. A culture of cheapness
keeps companies young in something like the way exercise keeps people young."

<http://paulgraham.com/13sentences.html>

Take those few moments of lag or downtime or whatever and enjoy your day--do
something else that's productive or have a drink or something; make the best
out of life.

------
rdl
Due to all the costs of adding extra developers (management overhead,
communications complexity, inertia), spending $20k per person (every year or
two) on hardware (desk/chair, home and office setups, laptops, phones, etc.)
is still a win, if it lets you have smaller teams for the same overall
productivity.

The bigger hassle for me is that upgrading machines causes some downtime, so
it's better to buy loaded boxes and replace them slightly less frequently
(every 18-24mo) vs. a new machine of lower spec every year.

Tools also are a great place to spend money; having a great
build/provisioning/tinderbox/etc. system saves developer time, and doesn't add
communications complexity.

------
codgercoder
I don't know if it's anyone else's motivation, but developers should have
machines that approximate the machine of their software's customer base.
Otherwise what runs OK on a developer machine can be painful to use out in the
field.

~~~
to3m
Remote debugging works pretty well on Windows, and I imagine it's the same
story on anything Unix-like. You can work on your decent PC, debugging your
program as it runs on some rubbish old castoff PC that was destined for
landfill. If the budget isn't even enough for the necessary peripherals, you
can get away with just a kettle lead and a network cable and then use Remote
Desktop to interact with it.

The remote debugging setup process isn't very slick, but it doesn't take long
to figure out, and with a bit of folder-sharing you can keep all the files on
your work PC so that it's all nice and convenient. I did this for quite a
while, working on Windows, and it worked well. I don't recall any significant
problems with it.

If cost is what's preventing you getting a nice PC, then that's one thing, but
the issue is just ensuring that slow code doesn't go unnoticed, this approach
will probably keep you/your programmers happier...

------
jasonkester
Definitely a no-brainer. Always buy the best machine you can get.

I'm surprised that most developers don't take the same approach to tools. If
you're using Eclipse or (god forbid) a _text editor_ to write code, spend a
minute and tally up all those 5-second chunks of your life you've spent this
year looking up the names of variables, objects, whatever, and running into
runtime errors from typos. Multiply by $$$/hour and see what you could have
spent on a decent IDE.

JetBrains makes IDEs for pretty much every language out there by now, and any
one of them will pay for itself in about four days.

~~~
_mayo
> If you're using Eclipse or (god forbid) a text editor to write code, spend a
> minute and tally up all those 5-second chunks of your life you've spent this
> year looking up the names of variables, objects, whatever, and running into
> runtime errors from typos. Multiply by $$$/hour and see what you could have
> spent on a decent IDE.

This is a bit of FUD. There are plugins for most text editors that give them
features that most IDEs have. For example, my Vim setup has tab and code
completion, snippet management, syntax error highlighting in real time, code
folding, document and file search, etc. I can also traverse a file faster in
Vim than an IDE, my fingers do not ever need to leave the keyboard, and it's
completely free (as in beer and freedom).

~~~
StavrosK
I use Vim and don't really need all the fancy code/whatever completion things,
but how on earth do you get them? It seems complicated enough that I haven't
bothered.

~~~
_mayo
It's not to difficult, There are a ton of plugin's listed on the Vim site, and
some on github. Most of them are just dropped into your .vim directory and
some need to be set to startup in your .vimrc. Command-T(this one can acutally
be kind of a pain to setup if your vim was not compiled with Ruby support),
SuperTab, SnipMate are the three I recommend the most.

~~~
StavrosK
Thank you, I'll give them a shot now.

------
specialist
My work dev laptop is bitchin fast, but runs slower than my 3 yr old personal.

Because of useless software (cya-ware) installed by corporate IT.

Useless anti-virus crap (ever hear of sudo?), ridiculous hard drive
encryption, remote monitoring/management stuff.

Just working in Eclipse, I often wait every single keystroke. Yes, Eclipse is
mostly a pig, and I've disabled/closed everything I could. But I have zero
hassles working on my personal laptop, even when I have video (or audio)
running too.

------
BadassFractal
I had to buy myself a couple of SSDs. When building your project takes 2-3
hours of time, every improvement really matters.

Our management just tells us to go context switch onto something else, there's
always lots of thrilling email answering and documenting to do. At other times
you can switch to fixing bugs or working on another feature, even though I
personally cannot stand continuous context switching as it decreases the
quality of my work.

~~~
hippich
well. if it is 2-3 hours task - i believe 15 minutes wasted for context switch
is still better then 2-3 hours lost waiting =)

Questions is - will 2-3 hours task become 30 minutes task with SSD drives?

------
algoshift
Minimum two large monitors, say, 24in 1920 x 1200. Preferably three. This, in
my opinion, enhances productivity far more than the difference between a 3GHz
and 4GHz machine.

That said...fast is good...faster is better...ridiculously fast is just fine!

All of our workstations have a minimum of two monitors, some three. A few are
overclocked and use fluid cooling to keep them from going up in flames.

------
mhb
You're a programmer making $100K/year. If you're confident that a new whatever
will demonstrably increase your value to the company, spend $1K/year on the
new whatever and make the case later that you are more valuable and should be
paid more.

And, yes, this doesn't take into account that the company might not want to
support your idiosyncratic hardware choices.

------
chaz
Not everyone can do it, but for smaller purchases, it's much easier to just
get it on your own and file an expense for it. 8GB memory SODIMM kits are
about $75 and probably have the biggest impact on performance. I used to
upgrade company-issued hardware all the time -- IT never knew and my manager
didn't care.

------
djhworld
It's probably easier for smaller companies to make hardware refreshes but in
big corporations there's the whole issue of "standardised desktops" and so on
to get around.

Getting a new machine isn't just a case of plonking a new one on your desk,
I'd imagine a lot of red tape goes on in the background

------
silverlake
As long as your machine provides reasonable performance, I doubt the marginal
return of a better machine amounts to much additional productivity. I'd rather
spend that money on 2 or 3 monitors, better software tools, or a quiet work
environment.

------
grandalf
I'd rather have developers use slow machines. This prevents a lot of foolish
performance problems. The developer's laptop should not be faster and have 5x
faster storage than the servers that will host the app.

------
johnrydell
I believe that most developers will gain 1 hour per day of productivity by
having at least 2 monitors. Any company that isn't paying for multiple
monitors is making extremely foolish management decisions.

------
euroclydon
Do you think John Resig needs the latest hardware to run VIM and Firefox?

~~~
jodrellblank
Do you think all developers are running VIM and Firefox and developing
JavaScript?

------
fmavituna
I believe real cause that managers don't know math, bureaucracy or disability
to see the big picture. Simple rule in our company we buy the best tools
(software / hardware) that money can buy, because mathematically it make sense
(there are a few exceptional cases)

------
coldarchon
I got the best machine they have at Alienware because I got fed up with
managers and customers sending me 200mb pdf containing 8 raw bitmap files. I
don't regret it although I still have my indy from silicongraphics for
nostalgic reasons.

one of the best benefits? I can look something up in no time.

------
inthewoods
A rather silly post - there are a lot of reasons why companies don't buy the
best hardware - the comments on the thread do a great job of listing them.

~~~
icebraining
Isn't that the point of the question - to get those answers? It's a
Stackexchange site, not a blog.

~~~
inthewoods
Even then, it's still a silly post. The reasons for not buying the latest
hardware are rather obvious.

~~~
mistermann
If the productivity gains outweigh the cost is it still obvious?

~~~
inthewoods
The point is that productivity gains are only one obvious metric - businesses
constantly battle capital spending vs. productivity.

