The best hardware setup for software engineers

When I'm writing software I usually have the following windows open, all at the same time:

  • 2 column layout VS Code (window = 2560 x 2160)
  • A fullscreen-equivalent browser with usable console to see what I'm working on (window = 1920 x 2160)
  • A large terminal window (window = 2560 x 1440)
  • Chat GPT (window = 2560 x 1440)
  • A full-screen browser with all the stuff I'm researching (window = 2560 x 2880)

I find tabbing between windows to be a great destroyer of productivity, so I've spent a good deal of time and money over the last few years iterating on a hardware setup that lets me see everything at once. Today, it looks like this:

Picture of my desk setup, with a 32 inch 4k screen in the middle and 2 16:18 ratio screens on either side. Laptop stowed beneath.
What my desk currently looks like. A 32" 4k screen flanked by 2x 16:18 ratio screens. Laptop stowed beneath.

I went through a number of iterations when it comes to monitors. For a long time I used dual 32" 4K IPS screens, but even that wasn't quite enough pixels. It's hard to physically fit more than 2 32" screens on a desk - they're too wide already, and it would not be ergonomic to mount them above each other.

About a year ago I discovered these 16:18 ratio screens and bought 2 of them as side screens around the central 32" 4k screen. They're 2560x2880, providing ~7m pixels each, compared to ~8m pixels on a 4k screen. Another way to look at it is two 1440p screens stacked on top of each other.

Aim for 20 million pixels

The classic 27" Apple Cinema Display @ 2560px x 1440px
The classic 27" Apple Cinema Display @ 2560px x 1440px

When I was a little younger, the most coveted monitor was the Apple Cinema Display. At 27" it was a good size, and at 1440p (2560px x 1440px) it had a lot of pixels for the time. They had excellent picture quality and went for a thousand dollars each.

I had 2 of these side by side, which filled my desk. Between them they gave me about 7 million pixels, with little prospect for adding more due to the physical constraints of a reasonable desk.

Each of those 16:18 side screens provide the same pixel count as those 2 Apple screens combined, effectively stacked one on top of the other. Splitting the 4k display into 4x 1080p windows yields a potential layout like this:

2560 x 1440
2560 x 1440
1920 x 1080
1920 x 1080
1920 x 1080
1920 x 1080
2560 x 1440
2560 x 1440
Each blue box represents one of those Apple Cinema displays worth of pixels

Each blue box represents a genuinely full-screen-equivalent window. The gray 1920x1080 windows are a little too small for my liking when it comes to software engineering; here's how I actually lay it out:

2560 x 2880
1280 x 2160
2560 x 2160
2560 x 1440
2560 x 1440
How I actually lay out my windows most of the time

The yellow box is a full-height browser window. It is 1/3rd the width of the 4k screen, which gives it a very pleasant 1280px width (this happens to line up with a tailwind breakpoint). At 2160px height, it's tall enough that I can have a 1000px tall dev tools console open at the same time as the content I'm working on, without compromising on either.

The green box is a double-height browser window, and excellent for reading developer documentation, GitHub issues and the like. Scanning through lots of text is far more efficient when you have 2880px of vertical height.

It's really flexible to have the side screens work like this, and throughout the day I will often switch between having a single double-height window (e.g. green box) and two 1440p windows stacked on top of each other (e.g. 2x blue boxes). The mac app Rectangle makes that trivial with a couple of keyboard shortcuts.

How it feels to use

Here's what it actually looks like when you have a single window on that 16:18 screen. Browsing documentation this way is a dream because you can see so much content at once, without compromising on hiding other windows behind it.

Screenshot of left screen
On the left screen I typically keep a full-height (2880px tall) browser window to reduce scrolling

Another huge benefit that the 3 monitor setup has over the 2 monitor is that you can now have a screen that is facing you directly, instead of 2 screens that are both on an angle. I probably spend 80% of the time looking at the content on the center screen, and while doing so I'm not having to turn my head to look at one screen or the other.

For the center screen I went with a 32" 4K IPS display. It cost the best part of a thousand dollars, but I spend thousands of hours a year using it and it's high quality enough that it doesn't hurt my eyes. I use Rectangle to manage the windows on the screen - the right 2/3s is for VS Code, the left 1/3 is dedicated to a browser window for whatever app I'm working on:

Screenshot of center screen
The center screen has a full size browser, dev tools and 2x tall code editors

Here, without switching windows, I have 2 full height, full width code editors, so I can see a hundred lines of one file while working on another, and a full-height browser window, which is 1280px wide and tall enough to have a genuinely usable dev tools console. The monitor is physically large enough that all of the text is comfortably legible.

The right hand screen is another 16:18 monitor, and I typically keep a half-height Chat GPT window open, and a half-height terminal window. Bear in mind that half-height here is still 2160px x 1440px, which is a full screen application on any monitor with less than 4k resolution, and we get 2 of them per side monitor:

Screenshot of right screen
The 16:18 ratio screens let me stack 2x 1440p windows on top of each other

Laptops and other hardware

Obviously, your computer needs to be powerful enough to drive these 20 million pixels without skipping a beat. Micro-context switches that happen when you have to wait a few seconds when you do something really add up and suck away your productivity.

I'm using a maxed-out MacBook Pro with an M2 Max CPU and 64Gb of RAM. It basically never gets in my way regardless of what I throw at it. They've released the M3 since then, and these things are only going to get more capable. I expect this machine will provide me with an excellent developer experience for several years before I replace it. The laptop form factor is useful; although I lose 70% of my pixels when I code on the couch, it is nice to be able to move around the house and work in different places.

I use a gray bluetooth Apple keyboard and a Logitech MX Master 3 mouse. The keyboard is laughably expensive, but it ties the room together with its matching color scheme. The mouse is excellent, and can be paired with 3 different devices, so I can switch between my laptop and my PC desktop machine pretty easily.

Desk and chair

If you're going to be at a desk many hours per day, it's a good idea to get a standing desk so that you're not sitting all day long. Ten years ago I bought a xdesk terra, which cost a couple of thousand and was pretty good, but then I moved house and had a little more space so upgraded to a 80" wide Uplift Desk. The Uplift also cost about $2k, but it's big and very stable and I expect it will also last me at least a decade.

I have a Herman Miller Aeron chair, which is also expensive but very comfortable. I've had it for 10 years and it's still in great condition. I've had a couple of cheaper chairs in the past, and they've been ok but not great. You don't need to spend a grand on a chair, but it's important to get one that you forget you're sitting on, otherwise it'll just be a distraction.

Creature Comforts

If your office is comfortable you will want to spend more time in it. Little things like adding Philips Hue light bars to the backs of the monitors and spending a little time setting up the colors and brightness can make a big difference to the ambience of the room. Airpod Pros are great for meetings, especially with the noise cancellation turned on.

Putting it all together

If I was starting from scratch, I'd buy the following, which happens to be my current setup:

ItemProductCost
Laptop14" MacBook Pro M3 Max, 64Gb RAM, 1Tb SSD$3,899
DeskUplift Desk V2 - 80" Walnut$2,000
ChairAeron (refurbished)$600
2x side screensLG 28MQ780-B 28 Inch SDQHD (2560 x 2880)$1,254
Center screen32" 4K IPS display$499
KeyboardApple Bluetooth keyboard$178
MouseLogitech MX Master 3$99
3x monitor mountEVEO Monitor Mount$180
Total:$8,709

With sales tax, cables and other paraphernalia, you're looking at about $10k for a top-of-the-line setup. This is a lot of money, but most of this will last several years, and the economics are heavily in your favor, as we'll discover in this final section.

How companies should think about this

A lot of companies will give their engineers a setup like this:

Image of a typical desk setup at a tech firm, with a laptop and a single external monitor
A fairly typical tech firm's desk setup

Here's how that looks in terms of pixels. I will generously assume that the monitors are 2560 x 1440, and am showing that right screen oriented in landscape mode:

2560 x 1440
2560 x 1440
This sucks. This is equivalent to just one of my side monitors

Those two blue boxes are the same size as the ones in the diagrams earlier, except instead of this being what you get per side screen, not counting the main screen, this is the whole ball game. Why would you do this to your engineers? That's only giving them a third of the pixels they could use to maximize their productivity.

A good engineer costs a lot of money - hundreds of thousands of dollars per year. Even more for senior folks. Given that the company employing them needs to make a profit, the average engineer probably needs to generate in the order of $1m per year in value to justify the expense to the company.

Therefore, for the typical engineer, an increase in productivity of 1% is worth about $10,000 per year. In other words, you could buy each of your engineers all of that $10,000 of brand new equipment on January 1st, have them smash it all to pieces on December 31st and do the same thing again the next year, and you'd still be ahead so long as they were 1% more productive.

I would conservatively estimate that a setup like this is at least 10% more productive than what usually gets served up. Given that you're going to spend a minimum of $5k even to kit out your engineer poorly, the marginal cost here is actually just a few thousand bucks, and most of it comes down to screen real estate.

Scaling engineering organizations and teams get less efficient as they get bigger, so equip your engineers with the best tools that exist and you'll get more done with fewer people.

Share Post:

What to Read Next

If you enjoyed learning about optimal hardware setups for software engineers, you might find the article Teams using Next.js and Vercel have an advantage insightful, as it explores how modern deployment practices can enhance productivity. Additionally, consider reading the post Introduction to Ext JS 4 for a look into how web development frameworks have evolved to improve speed and stability.