Ask HN: Why do companies issue crappy machines to developers?
Companies are willing to pay big money to developers, however they issue crappy laptops as development machines. Laptops are designed for mobility, not for performance. Sure, you can use a dock and plug a keyboard and external monitor(s), but a Core i5 laptop with 16GB of ram running at 1.6GHz won't cut it as a dev machine. I would imagine that companies would want to provide the best tools for their developers so that they can be happy and productive. What is the rationale for companies to do this kind of short-sighted thing?
70 comments
[ 5.1 ms ] story [ 136 ms ] threadPepper, for example. I always buy a good pepper grinder with the best quality whole peppercorns in it. The difference it makes to a dish is just incredible. This costs something like 3 cents per meal instead of 1 cent.
The cost of cheap tools can be a fraction of a well-made tool. On paper (ie. the only way in which a manager can compare them) they have identical functionality. So why spend 100x more?
Even if you then have to replace them more often, it's not likely that they need to be replaced 100x more often. And even if they do, that's not in this year's budget, so you can deal with that problem later, while saving a bunch now.
The intangible cost of crappy tools is very hard to measure in a way that can compete with the dollar cost in a manger's mind.
And so similarly, you get two extremes of developer culture: Aeron chairs, standing desks, subtle lighting, and good machines or crappy desks, left-over chairs, 7/11-style lighting, and cheap laptops.
If you find yourself having an eloquent long winded discussion with such a person, explaining to them they aren’t saving money by foregoing the soda at a night out (it’s cheaper to buy water after all), looking around the menu for the best value, half of which they can definitely take home (at this point I start to wonder if it’s theater, and even if it is theater, you’d have to be sick to even take part in such theatrics), I don’t know, what’s there to discuss. You almost want to throw a wad of $500 at their face.
This is a self-optimising strategy where he has cheap tools where it doesn't matter, and expensive tools where it does.
While this kind of approach can work very well, it doesn't translate well to the world of "corporate drone doing software development on company equipment" because:
1. Development don't have a nice clear "break" signal, they just introduce friction. Lots of small frictions, each maybe just a fraction of a second, too difficult to measure.
2. The entire problem is that unlike Adam working in his own shop, in charge of his own tools, most corporate developers get very little choice in their tools.
One insisted I was "wasting money" by buying name brand French's mustard. At the time, the gallon jug of it was $3.29 and lasted years-- and I made low 6 figures.
Another g/f insisted I was wasting money buying bags of ice at the store (we didn't have a water hookup for our fridge). She spent $30 on ice trays, and then there was never any ice because it had become this manual process that needed to be managed several times a day. I went back to buying ice...
--
So tell me about these peppercorns?
Most “slowness” is not caused by CPUs performance but by network latency and differences in data scale combined with inadequate indexing or poorly chosen algorithms.
A 1MB empty database on localhost will run well on anything!
What’s needed in my experience is network simulators that can add latency, and full sized databases with real data.
Watching those poor coders clicking around and typing was just painful. Multiple seconds to respond to any input.
Madness.
It doesn't make sense to save 0.2-1.0% of the fully loaded cost of a developer. Just making them happy and reducing churn by a tiny amount would more than pay for itself.
For instance, some developers have a 40 minute build process. You'd imagine that if you spent a week making that 40 minute build process a 10 minute build process you could get that time back in a few weeks.
The first response you might get if you bring the issue up is that we only work on tickets that have a direct benefit to the customer. If you stop for a moment to be articulate about it you can say "the customer wants to get features more quickly" and "we can cut three months off the schedule by speeding up the build process."
That's an argument that people will listen to.
Say you get paid $100,000 a year. Something that makes you 10% more productive saves $10,000 a year. $2000 of hardware pays for itself in about two months!
You can go from "talk to the hand" to getting what you want if you can explain just what a good investment better hardware is for the business.
People often just don't think about "how long does it take to do X?"
At one startup I worked at the CEO wanted to try "hackathon" style development and have us try to knock something out in two hours.
This was a system that had a back end written in Scala and a front end using Typescript and React. I told the CEO that it took 20 minutes to go from zero to docker images ready to run (I knew because I kept notes) so at best we could do six iterations in that time. The CTO said, "No way it takes that long".
I stepped back at this point and we all agreed we'd go ahead and see what happens.
It really took 18 minutes.
Whenever I've felt pressured and "under the gun" I've taken notes about what the process is and where the time actually goes.
Same with "the meeting should be an email" type of thing, meetings are expensive but they cannot see the costs.
Not arguing that's enough, but it is probably better than the average customer laptop. So if you do get a much higher-end machine, it's worth making sure the app runs okay on something less capable than that.
When you give developers wonderful devices, it takes a lot of mindfulness to consider the performance on lower class hardware. When you have to make do with $100 laptops or phones, you're more likely to make things work for the low end users.
Is not targeting median consumer grade laptops
At my org the PO's had to upgrade from MacBook air to MacBook Pro in order to be able to screenshare Jira via Ms Teams with slack and outlook open
Since that's impossible, we simulate this by a network of nodes (humans) linked using a very low bandwidth communications channel (speech and it's representations). Each node has finite capacity and can only bear in mind a certain number of considerations. There are a number of well known failure modes. For example:
One node is delegated a decision affecting matters they don't understand (HR person has to buy computers for Devs)
To render the financial situation comprehensible to central nodes, it is simplified by binning costs into budgets. For example, HR budget pays for laptops, engineering budget pays Dev salaries. Decisions are made to optimize each budget separately, so HR budget is optimised by buying cheap laptops, without reference to the fact that this makes engineering less efficient.
Fury. Rage. Tempest. The sound of my soul dying. Where's the fucking grenade?
Forgive me for being so complicit. $100/hr was a lot of money then.
I just brought my old PC and joined it to the domain. No one had a problem with it for some reason. (It was the wild west out there)
Did that at MSFT once. They wouldn't buy me an Adobo Photochopz license, so I borrowed one from alt.binaries.blah.blah. My co-worker would joke blackmail me once a fortnight: If you don't bring a grande hazelnut latte with extra nutmeg from that Starbucks 'meeting' you are goin' to, ugh hmm!, I know!, imma tell x you got that pirate photochopz on your usb thingy and he gonna fire yo ass.
(There was a time when you could talk like this there, long before you had to introduce your pronouns aft your name, when the safest space was the kitchen, where you could arm yourself with 185 °F cup of Farmer Brothers coffeesupersludge.)
(We were in software license compliance, btw.)
1) they are cheap
2) they don't like you and have given you the crap machine
3) they want you to create stuff that runs on a machine similar to the target audience of your product. So you'll build stuff that works on less speedy machines
of all of those options its mostly 1, then two, and very very unlikely 3
Saving money is pretty much the only thing I can come up with. I certainly don't agree with any of it. The laptop piece might be a bit of DR (everyone has their work PC with them, so we don't need an emergency office).
Everyone in our company gets Threadripper workstations these days. Currently we are handing out Thinkstation P620s. We don't play games with bullshit dev machines anymore. All of that frustration is reserved for our cloud vendors.
- we buy every year about 10,000 laptops. Not one model because some are not available on all continents, but a small number of models.
- we buy less than 400 laptops/year for IT people, that is 4% of the total
- out of the IT people, over 80% are using the laptops just for emails, Excel and PowerPoint, so regular computers are fine.
- the rest of ~100 laptops/year out of 10,000/year means just 1% of the total. The guys in charge of equipment purchasing are measured on cost savings, they could not care less about the 1% with special needs
- out of the 100/year, the smart ones don't do heavy lifting on their laptops, but on servers or special use desktops (ex: Threadripper machines) that are very adequate for their needs. The less smart ones get what is called "engineering laptops" with more CPU cores and RAM and larger screens, but the thermal limits in the laptops are still there, so the problem is just partially solved at a high cost.
In the past I worked in an engineering department where the dept manager took care that everyone had equipment matching their needs. That was a great manager and this is how this should work, but in modern companies mid-level managers are mostly a bunch of politruks and I am saying this as a long-time IT manager working with many external parties.
The CFO/CTO is looking at the macro picture. You are a subset of that organization. If your engineering director wants more powerful laptops, it should be up to him or her to work through the CFO/CTO to do it.
Also some companies have a policy where the less the executives spend, the more money they get in bonuses. It's effective for management, but it sucks for you.
Edited to add:
Increased performance is a "soft" metric, in that it's hard to quantify. Costs are a "hard" metric, in that it's easy to quantify. Which do you think the CFO is going to look at when making a business decision?
Where I work now, we do issue developers better laptops than the usual we give out, however they are all the same make and model with no one offs.
It makes keeping track of equipment and inventory easier, and if ever someone needs a new one we just load up one with a pre-built image we made with all the programs and settings pre-installed, and its good to go with little hassle. My guess is other companies have similar reasons, except maybe they want a standard laptop model used by all employees who need one, regardless of role. Sometimes its because an IT department may have only a shoestring budget to work off of due to execs wanting to save money.
Most of the time, I don't need a huge amount of power. I'm not rebuilding the Linux core, every time I compile; usually an app.
For my server work, all I really need, is an FTP connection, a browser, and a text editor.
The reason that I prefer laptops, is that, every now and then, I need to take the show on the road, and it is very convenient to just yank my main device out of the dock, and drop it into a backpack, without worrying about syncing. I tend to do native Apple work, in Swift, using Xcode, so it is important to have a lot of local files. I can't really do the work remotely, on a cloud.
When I was still in my "day job," the company issued me a laptop (because I was a manager, and traveled a lot). I brought a laptop for my own work, because that was all done in "nights and weekends." I often threw my personal laptop in with my work laptop, when I traveled.
Nowadays, I have an M1Max 14-inch MacBook Pro. It is pretty much maxxed. Every bit as powerful as any desktop I've ever used. Xcode is still fairly klunky on it, because the code in Xcode is ... classic. I don't think a Mac Pro would be any real help.
But when I'm docked (which is most of the time), I'm running on an LG Ultrawide (49-inch, 5120 X 1440) monitor. Even the 16-inch can't hold a candle to that, so the 14-inch is better for me.
But that's me, and my workflow. YMMV.
Looking at benchmarks, it turns out that the M1 Pro is actually a full 8-9x faster than the 2015 model at multicore workloads (which most dev workflows will be): twice as fast single core, 4x more cores + 2 efficiency cores!
That sir is a super ultra-wide. I salute you!
Apple just started supporting the full resolution, natively, a couple of releases ago.
It's spoiled me rotten.
I guess it's something like cost vs average needs. If most people can do most things without too much difficulty then you're mostly good?