Ask HN: Why aren't there workstation recommendations for software engineers?

11 points by digitalsanctum ↗ HN
I'm in the market for a new workstation and as I shop around there are recommendations based on the type of work. For example, I've seen configurations for content creators, streamers, ML/AI, etc. but nothing specific for plain old software engineering. I'm also not aware of any sources that specialize in reviewing hardware within the context of software engineering.

Why isn't software engineering included in the list of recommended configurations?

23 comments

[ 3.9 ms ] story [ 67.0 ms ] thread
Most of the time it's not compute or memory intensive so any computer will do. The most important thing then is too have a good chair, keyboard and mouse!
I'd argue that both compute and memory as well as disk speed is necessary to maximize productivity. I do agree that ergonomics is also crucial and I'd add glasses that block blue light to your list.
> ... is necessary to maximize productivity

Most people here are arguing that any computer in 2021 basically covers the average needs of most developers, and therefore are un-differenciated.

You don't seem to agree, clearly, so you need to provide more information into "maximize productivity". Productivity is ill-defined metric and different for everyone. What do you want to improve? What metrics should be tracked? Disk speed isn't a requirement if you only open small text files that can be cached by the OS (unless you also have little ram), so you need to have better defined metrics as to why and what the tolerance is.

To answer the question about what i think the ideal workstation is... - mid-range SSD with at least 512gb storage - if job requires lots of storage infrequently (eg. storing large disk images or VMs) then some external storage (NAS or portable usb) is ideal. - Mid-range intel chip (i5+) or top range ARM (apple m1). - Great screen (4k for desktop), at least "retina" (can't see pixels at typical distance) for laptop. - 16gb ram unless you actually have requirements that use more (VMs on devices, compiling really large projects like linux kernel or firefox, etc). - If laptop, long battery to not be tied to outlet - Keyboard you enjoy using, its different for everyone. Same with mouse/trackpad. I use trackpad on desktop often, not everyone likes it. - OS that is not windows. - Graphics card can be whatever is built-in unless you do ML stuff on-device (i don't do ML stuff so idk if on-device is even desirable). - Top-tier wifi/NIC - Wifi 6 ideally, certainly 5ghz, or gigabit eth - 1+ usb ports for peripherals, but tbh i never use anything except to charge phone or occasionally use a SD card for a raspberry pi OS image. - Laptop should support a charger that charges faster than it uses power

TLDR just get a generic "business class" device, eg. thinkpad/macbook or $700 desktop prebuilt

Software engineering is too broad of a category to make specific recommendations. You've already noted that there are specific recommendations for AI/ML. Anyway, all you need is a decent processor and alot of memory for most use cases.
Doesnt it overlap with gaming?
Not really.

Unless you're doing AI/ML, you don't need an RTX 3090 and can probably get by with Intel's on-board GPU. A decade-old GPU can run vim/VSCode/PyCharm/whatever and a web browser just fine.

gaming pcs are well made, quiet, made for long hours. Just swap the graphics card.
If by workstation you mean desktop, then system builders that aren't gaming PC companies exist. Consulting and building for business workloads is Puget System's whole business. If you're in the United States or Canada, you should give them a call.

If by workstation you mean a laptop, then you have to work with in the compromises set by the form factor. Light, Powerful, Cool, Cheap. Pick two. The best you can do is look up benchmarks for certain parts, set a minimum performance requirement for your needs, and go from there. Maybe if you gave us an idea of the programs you normally use, the more power-hungry applications you might use every now and then, as well as your budget, you can get a recommendation.

Thanks for the reply. I should have mentioned this to start but I'm planning on building my own system. I still look at what other system builders like Puget Systems use in terms of motherboards, etc. in combination with [1] PCPartPicker.com and hardware review sites.

[1] https://pcpartpicker.com

Old servers make killer workstations, so perhaps base your specs around that. They often support far more memory and better CPU options than anything else.

Having said that, my 2nd programming workstation is an older gaming laptop (an Acer Nitro) - core i7, 32gb of memory, two SSDs. It's not quite the monster that my main machine is (a truly ancient HPE deskside server with dual xeons and 96Gb of memory) but it's pretty darn fast. The server is faster though, especially if you have 3 IDE's running (debugging an IOT project) and a couple of VMs to mimic your deployment scenario.

Because hardware has already reached the level where run of the mill front-end/back-end software development can be done comfortably on just about anything. Even run of the mill NUC-style office PCs from Dell/HP/etc. have up to 8 physical cores and 32 GB of RAM and they can be found dirt cheap off-lease.

Sure, true workstations get up to a couple dozen cores and a few TB of RAM but what would the average developer do with it that warrants that kind of money?

Maybe five years ago I bought a used Dell workstation with a 8c16t Xeon and 32GB ECC RAM. It was a couple of years out of date at the time, but I paid €200 for it. They had dual-CPU versions for maybe €100 more, but I figured I didn't need that. To build a desktop PC with even remotely similar specs would have been well over €1000. It came with a not very good GPU, but that and the SSD were easily upgraded.

For what I did at the time - and probably even now - it was well over powered. At one point I ran 10 instances of our Selenium test suite at once (trying to debug random failures) and it didn't even bat an eyelid.

You need a good physical environment, with control of distractions, a monitor large enough to display the things you're working on in enough detail, a few pads of paper for sketching things out, and a computer fast enough to compile in less than a second.

Back in 1986 this was a 10 Mhz 286 with 4 mb of RAM and 30 Mb of hard drive, running MS-DOS, and a 17" Trinitron Monitor, with a lot of floppy disks, an Epson Dot Matrix Printer, a desk, telephone, and office with a door. Your IDE of choice was probably Turbo Pascal.

Now it can be a laptop and headphones on a beach, or you can go more traditional. As long as your compiler still gives you sub-second feedback, you should be good.

Software development doesn't have one set of needs. Many development workflows don't require much hardware at all. You could use a raspberry pi and be fine. Some require absurd single core performance. Others absurd multi-core performance. Some demand lots of RAM, others don't. Some are very GPU-intense, others just need a display output.

It all depends on what you are doing.

There are too many developers who take a sort of perverse pride in running a potato with a 12" laptop screen for any reasonable consensus on a "software engineer" configuration to emerge.
HP Z workstations are good. It's a shame they're not available w/ AMD CPUs though
At work a simple workstation is not enough we use remote development clusters. Is that an answer?
Not entirely sure what the question here. Because I dont see how a workstation, or a Desktop PC for software programming is any different to a "decent" computer.

You need lots of Core, ECC Memory ( if you need it ), and a fast / reliable SSD.

For example, if your software stack works on MacBook Pro, the M1 Max is currently a very capable laptop that offers near the best compute performance you can get.

So the simple answer is, any decent computer will do.

I made a spreadsheet of specs of what I "want.", what I "need", and what I was "looking at", and what I "already had." There are also things we DON'T WANT, ie. touchbar: no.

condition: new/used/very old

type: laptop/mini

*Vendor: costco/apple.com/garage sale brand: dell/apple

model, id, serial #, hardware-UUID

price

RAM, type, Speed

boot rom: none/open

*OS: windows10/macos version: Home/Pro/version

*Cpu: open-core/intel/amd/Power version: i7/i9/Celeron/G4 L1d-cache,L1i,L3 speed: 1.2 GHz,2.4 GHz,1.42 GHz base, max-turbo-freq,min-freq,lithography bus-speed cores, threads

4K-Support: max-res-(HDMI 1.4)

*Graphics: graphics-model graphics-memory

*Display: display-resolution monitor-size HDMI

*network: 10 GB Fibre/1 GB Ethernet/100 MBps wireless

*Storage: disk-type: SSD,HD disk-size: 2 TB,74.53 GB

*USB3 USB2 USB-C Thunderbolt3

web-camera headset-jack line-in-jack keyboard

*Extraneous: Built-in-microphone SD-card-reader DVD/CD: none Bluetooth: no FireWire Dialup/Fax-Modem touchscreen: no touchbar: no touch-ID: no

You try developing deep learning - neural networks models on an OK consumer Desktop !!!!!!!! My PCIe3 Core I 9 based system with a NVIDIA 1080 TI with 16 GB of RAM on the GPU and with 16 GB of RAM takes Days to train models with only 180K training samples. So I am pricing Motherboards, and GPU's that are PCIe4 When I developed Database software that computing power was not needed. Now that I am doing deep learning with 12 bit per pixel medical images I have SSD's32 GB of MainBoard RAM, and preferably a 16 GB GPU JUST FOR THE DEEP LEARNING and use the mainboard or another GPU for the display so x570 mainboards are my goto mother boards
Just get a mid-level gaming PC and you will be ready to tackle almost any development workflow. Some basic specs to ensure:

1. AMD Ryzen 5 (3rd gen)

2. 32GB RAM

3. NVMe SSD from WD/Samsung

4. 1440p/4k monitor with 144Hz refresh rate

5. Decent gaming mouse/keyboard

6. Entry level GPU (RTX 3060ti)

That's all it takes. This setup will run circles around any laptop you can get, when it comes to stuff like compiling, VS code, browsing stack overflow, etc. Also you can game on it during the weekends.