Sometimes new developers ask me, “So, what’s the best laptop for a programmer?” It’s an important question. As a “software crafts(wo)?man”, your computer isn’t just your tool belt - it’s your pickup truck, miter saw, lathe, awl, bulldozer - all rolled into one. You need a reliable and performant machine that empowers you while staying out of your way as much as possible. It’s an important question, but the answer no doubt reminds you of a certain brand of adult diaper - It depends...
Assess your real needs
At this point I usually push back for more information to make sure they aren’t missing an optimal solution by prematurely limiting their options: Are you sure you want a laptop? The question is a little like, “What is the best light-duty pickup truck for pulling a mobile home?” Just like the best truck for pulling a mobile home is not a pickup truck, the best machine for a software developer is not a laptop at all - it’s a desktop workstation.
Assuming you really do want a laptop, what is the best laptop for a software engineer? Again, consider your circumstances.
How often are you really coding on the road?
If you only travel occasionally and live in an area with decent internet, you could get a something like a budget Chromebook and remote into your stationary supercomputer. This is a doubly good idea if your travel takes you through high crime areas.
What type of software are you writing?
Small apps and web widgets don’t require much horsepower to develop, so your options open up significantly. You might be tempted to spring for the swanky Dell XPS 13. It’s a solid and super portable dual core laptop, but make sure that a 13.3” screen with near 4K resolution is big enough for you. My advice would be to look into other less expensive offerings from Dell, HP, and Lenovo and compare them to the “Mobile Workstation Checklist” below, minus the “quad-core” requirement.
If you’re writing enterprise level behemoths, spring for the best mobile workstation you can find (or better yet, convince the company to buy it for you!). In the enterprise, you could be working on a silly toy app one day, and a monstrous million line monolith the next. The HP ZBook is an excellent mobile workstation, and you can often find them used on eBay. High-end gaming laptops are another choice, but the graphics cards are overkill for most programming projects, and their styling tends to look a little too juvenile for certain programming pedigrees.
Let’s assume that you travel enough to make a portable workstation worthwhile. What should you look for? This checklist should get you started.
- Good keyboard
- Standard keyboard layout; no weird key placement, like when they switch the “Ctrl” and “Fn” keys.
- Backlit keyboard, for those manic mornings and long lonely nights.
- Good feel. Fast and easy to type on (i.e. **not **the ridiculous Microsoft Touch Cover 2 keyboard).
- Intel Processor
- Sorry AMD, but it’s a bummer when you’re battling a nasty bug and everyone else on the team tells you, “Works on my machine.”
- Quad core processor is a must (But certainly don’t limit yourself to a quad-core if laptops come out with higher core counts).
- For a software engineer, the more cores, the better. More cores means you can build multiple projects simultaneously and leverage tools like continuous testing and code analysis without sending your computer on a lunch break every few minutes.
- Most laptops don’t have 4 physical cores in the processor, no doubt due to those heat and power issues mentioned earlier. Some assume that an Intel Core i7 will always have 4 cores. This isn’t true. Look at the processor model number; if it ends with a “U”, it’s a dual core. Generally, for Intel’s mobile CPUs, you want the model number to end with “Q”. When in doubt, check out Intel ARK.
- But what about hyper-threading? Well, as one guy said, the only thing hyper-threading is good for is looking at pictures of cats. Some developers actually turn hyper-threading off in the BIOS.
- PCIe SSD (Solid State Drive)
- If you’re still using a hard disk with spinning plates, an SSD will make a massive difference in your computer’s performance. Never get a computer with an HDD as its primary disk drive.
- Capacity at least 256GB, but preferably 512GB or more. Developer tools are often quite large. Consider a mobile workstation that supports two SSDs, perhaps an ultra-fast PCIe SSD for the boot drive, and a less performant but higher capacity SATA III SSD as the secondary drive.
- Tip: Remember to test your software on a machine with an HDD to see how it handles the slow IO. Not everyone has an SSD (yet).
- Support for 32GB RAM or more.
- RAM is relatively inexpensive, so the computer doesn’t need to come with the RAM maxed out; you can buy it later. Just make sure that the maximum capacity is 32GB or more.
- This is a huge knock against the MacBook Pro’s credibility, with its measly 16GB memory cap.
- Decent screen resolution. Ideally 2k or even 4k. All of our tools require a lot of screen real estate, and less alt-tabbing means less context switching for your brain. Keep as much as possible on-screen.
- Decent screen size. You really don’t want to look at a 12” screen with 4k resolution. Go for a 15” or 17” laptop screen.
- Screen with matte finish. You do not want a glossy screen. It increases eye strain. In fact, a glossy screen is a red flag for a junk low-end laptop geared to the least-common-denominator computer user.
- This is another knock against the venerable MacBook Pro, which always comes with a glossy screen. (facepalm)
- DisplayPort or Thunderbolt is preferable to HDMI, and is typically found on higher-end laptops anyway. DP does everything HDMI does, and allows daisy chaining monitors. You can always get a DP to HDMI adapter if you need to.
- Good camera for video conferencing. You don’t want to look like you’re calling your client from 1996.
So where do you find this mythical mobile creature? First let’s see how popular development machines stack up against our checklist.
Popular Option #1: MacBook Pro
A great many developers go for a high-end MacBook Pro. They’ll set you back around $3000, but they’re solid, they’ve got quad cores, lots of people have them so the support is good. You can run Mac OS X and Windows natively. Plus you can usually resell it after a year or two and recoup a good bit of the value. You could even buy one used yourself, although due to their popularity, you’ll pay more for a used MacBook Pro than you would for other brands.
However, there are some downsides to the MacBook Pro:
- It’s limited to 16GB RAM
- Seriously? Is this Apple’s version of “640K ought to be enough for anybody”?
- Glossy screen. Yuck.
- My eyes are burning just thinking about it.
- Performance is lagging behind the competition.
- We had high hopes for the 2016 Apple MacBook Pro event, but the only thing that came out of it was a plaque reading, “On this site in 2016, nothing happened.”
Popular Option #2: Surface Book i7
If you’re in a Microsoft shop, you might consider a Surface Pro or a Surface Book. They’re popular, fairly performant, and typically less expensive than a MacBook Pro.
However, there are some serious downsides to developing on a Microsoft Surface:
- Also limited to 16GB RAM
- Glossy screen.
- No quad-core option! This is a deal breaker for many.
Because of the CPU limitations alone, I would recommend against using a Surface Pro or a Surface Book for serious development.
Popular Option #3: Dell XPS 15
Look at the specs of a high-end Dell XPS 15 and it’s easy to see why a number of developers are choosing it over other options like the MacBook Pro. It pretty much nails all of the bullet points on our Mobile Workstation Checklist. It’s available with quad-core, 32GB RAM, and 4K matte screen options, and it just looks cool.
As with the other popular options, there are some downsides to the Dell XPS 15:
- Many users have complained about quality issues.
- For me, this is the biggest mark against this notebook.
- It’s quad-core i7 isn’t the most powerful CPU out there. It’s great for battery life, but not raw performance.
Less Popular Option: Find a hidden gem, used.
If you don’t have $3,000 to land on a new “devtop”, consider buying used. You might find a machine comparable to or even better than a MacBook Pro for $1000-1500. But you’ll need a little patience and some Google-Fu.
The biggest risk here is often the lack of a warranty, unless the original buyer paid for an extended warrantee and it’s still in effect. So you have to decide whether the risk is worth the potential savings.
Personally, this is the route I’ve found most effective. So far I’ve only had good experiences buying used laptops on eBay and elsewhere. If you do your homework on both the hardware and the seller you’ll usually be just fine.
In the next article in this series, I’ll give you some handy heuristics for finding a lightning-fast laptop that sets you apart from the crowd.
Let me know if I missed anything important in the Mobile Workstation Checklist.