At this point in my career I've changed jobs enough times that I'm starting to see certain patterns emerge. One of less good ones is how hardware (and sometimes software) is chosen for developers with little to no input from the devs themselves. Everybody works a little bit differently so it makes sense to provide some level of choice in what tools we use to do our work each day.
Although things are certainly better than they were years ago, when you'd get the same anemic Windows laptop as your non-engineering co-workers, we've still got plenty of room to improve. My last few employers have been content to toss me a decently configured MacBook Pro and call it a day. While MacOS is certainly a nice operating system, my personal preference is Linux for software development. Obviously, OS choice is highly subjective and comes down to what you're comfortable with.
Fortunately, where we're at now all three major OSes (Windows, MacOS, Linux) are perfectly serviceable for doing general development. Obviously, if you're working with a specialized stack or target you may have additional constraints to be considered. That said, give your devs as much choice as possible.
Most workplaces now opt for a laptop by default, which makes sense as the portability gives you a lot more flexibility. If you need raw power a desktop is always going to be king, but laptops are more than capable for a large percentage of devs. So for the purpose of this article, let's only consider laptops.
Here's the minimum spec I'd recommend:
These specs should cover you for most general development workloads, I would hope if you're in a more specialized environment you've already got equipment to match.
A word on laptop screens: 1080P is probably the most common resolution and a solid choice. A few laptops offer 1440P or 4K, but these aren't all they're cracked up to be: you'll need to adjust scaling to compensate for the small physical screen size and driving higher resolutions comes at the cost of battery life. Steer clear of 1366x768 screens though, there's no reason these should ever be chosen.
These are more portable (thinner and lighter) than "standard" laptops, which is achieved by soldering/glueing components. As a result you lose the ability to upgrade or service most components. Heat management can be an issue for some models. These typically max out at 16GB of RAM. 13"-14" screens are typical for this form factor. Prices range from $1000 up to $2500, with configurations fitting the above recommendations around $1600 - $2000.
These are heavier and larger than Ultrabooks, but are better at managing heat and usually allow for some upgrades down the road. Average screen size is a bit bigger around 14"-15" and RAM capacity tops out at 32GB. The price range is pretty wide on these, with some configurations even exceeding $3000. A reasonable configuration still hovers around $1600 - $1800.
The bottom line here is to supply ample screen real estate, the exact configuration is more personal preference than anything. For a minimum I'd recommend a pair of 1080P screens around 24" or a single 1440P screen at 27-32". If you want 4K I'd only recommend 32" and above, due to pixel density. In general, opt for an IPS panel as this technology has better color accuracy and viewing angles. You're only looking at $300-$400 for the minimum recommendation here.
As USB-C is starting to replace all other connectors on laptops, it's important to have enough ports to connect all of your peripherals. There are a lot of options in the space and compatibility becomes complicated once you've got video in the mix as well. I would recommend selecting a hub/dock that has Thunderbolt 3 support, as this is typically how video signals are carried. If you're using a laptop that charges via USB-C, some docks are able to provide power. Your best bet may be to check for the specific support for your laptop.
Chargers aren't that expensive and it's extremely convenient to have two. One can be kept in your bag when you're on the go and the other can be left hooked up to your permanent workstation. In the case you're using a dock that provides power, you won't need two.
Most laptops have a webcam built in which works fine, but the integrated microphone and speakers can be less than ideal. My recommendation would be to set a budget and let people choose what they want. There are several different kinds of headphones/headsets, so it's a very subjective choice. I know plenty of people who love in-ear headphones but I've not found a pair that stays comfortable after about an hour of use.
It's good to have these if you use a laptop stand or dock. These items are also going to heavily depend on personal preference. Unless you're really averse to cables, I tend to prefer wired keyboards and mice to eliminate another potential point of trouble. Annoyingly, USB3 has a known interference issue with 2.4GHz wireless devices.
In case you think this is a sales pitch, I want to assure you it's not. None of the links below are affiliate links and I have no relationship with either Dell or Lenovo. It just happens that these two companies make machines that tend to support both Linux and Windows well, while being accepted in larger enterprises. There's certainly other manufacturers out there that make great machines, so don't immediately rule them out just because I didn't include them here.
Dell is awesome, as they have several Developer Edition laptops that can be purchased with Ubuntu pre-installed (such as the one linked). Obviously Windows is still available if you prefer that environment.
Dell XPS 13 9380 - Developer Edition - $1,659.99
Estimated Total: $2,322.97 (before tax)
While there isn't any option to have Linux pre-installed on Lenovo laptops, there are a good number of models which are Ubuntu certified.
ThinkPad X1 Carbon 6th Gen $1883.27
Estimated Total: $2,397.25 (before tax)
Similar to the XPS 13 above, this model allows you to have Ubuntu pre-installed.
Dell Precision 5530 - $2,191.74
Estimated Total: $2,754.72 (before tax)
Lenovo ThinkPad X1 Extreme - $1,871.10
Estimated Total: $2,385.08 (before tax)
To repeat the refrain throughout the article: give developers choice. Computers in our profession are highly personal items which we spend a huge amount of time on. We should have a reasonable ability to choose what fits best with our personality and working style. I hope this is helpful to someone out there! Please feel free to leave comments and feedback.