loading...
Cover image for My beginner’s guide to choosing a laptop for programming

My beginner’s guide to choosing a laptop for programming

rupertsmithers profile image Rupert Smithers ・4 min read

Programming can be a lot of fun! No, seriously. That is a very creative and in many ways rewarding occupation. Under one very important condition: that is if you using top-notch tools. Lagging, glitches and other stuff like this can kill the mood and make your coding an extremely frustrating activity. I, for now, will leave out the software details and save coding editors for the next post. Today I am going to concentrate on the hard stuff, namely a laptop. Here is my advice on what to consider when choosing one. I will list the issues by importance, starting from the crucial and going down to optional.

First things first

Why laptop? Plain and simple – for mobility. Modern laptops are very powerful machines and they can deliver everything you need and even more all in a compact slick case. You do not have to be at your desk to work and that is awesome. Not only for freelancers but for all of us as well it is a great advantage.

Some programmers have a preconception about laptops that they are inferior to desktops. They were – in the early years of their existence, but now the niche of the light and compact toys for web-browsing and media entertainment is taken by tablets and smartphones, while laptops keep building up muscles and taking up the desktops living space.

There are only two reasons why you might want a big box under your desk, namely: the affordable price and the relatively easy hardware upgrades. Well, you can’t have it all at the same time and there is bound to be a trade-off.

The core issue

You do not really need the high-end CPU to do your programming. However, I would not recommend low-end processor either. The thing is, today software becomes greedier and greedier for resources. You will want to manage heavy programming works all the time, even with other stuff running. Whether you are developing an app, a website, or something else, you will have to deal with graphic and sound editors and all the additional applications. Therefore, it never hurts to have a top-notch CPU.

Enough room

You definitely must have a zippy and spacious SSD – 1 TB is recommended. I often hear people saying that 256 GB is enough today. After all, you can store and access your media via a cloud service of choice or your own NAS. That is all fine for media, however, our bulky files are not limited to tracks and clips. Again, you will never know what software you might need, and today, when a simple thing like antivirus program demands over 2 GB just to install itself, 1TB does not seem like a waste of money. Of course, a smaller SSD can also be manageable, but you will have to jump through the hoops to avoid issues with performance. Check out makemacfast for the complete list of speed problems you may encounter.

Back to our muttons

Did I say muttons? I meant RAM, really. Although many say that 8GB of RAM is a plenty, I would go for 16GB, just in case. For instance, I often have 2 or 3 virtual machines running, so it is always good to know there will be no lagging. Plus, as a hardcore gamer, I prefer to be ready for any upgrades and smashing new titles that might be released in a year or two (I know, I know, it’s not about programming, but still it is huge for most of us, right?) Games become greedier, just as well.

Furthermore, if you are going to multitask, work with big data, large images, vectors and such, you'll be kicking yourself for not getting 16GB. FYI, 8GB might be fine for Photoshop, but not nearly enough for Illustrator.

Getting pretty graphic

Luckily, integrated cards are getting better and better with each generation, so strictly speaking, you do not need that for coding per se. However (my favorite world), if you work with game development or do 3D modeling, you will need something superior, so consider a dedicated graphic card. It goes without saying for gamers, but that is another story, so do not get me started on this one.

Juicy bits

By which I mean battery, of course. Long battery life is not crucial, but it is recommendable. Remember why we opted for the laptop in the first place? That’s right, for mobility. With the limited battery capacity, your mobility is pretty limited as well. Of course, you can always set camp next to the power socket in Starbuck, but that is not always available. Plus, say goodbye to working and having fun out in the open and during the road trips.

All in all, you might think that you are saving, when you settle for smaller SSDs, integrated graphic card, and less RAM, but in fact, you may rob yourself in the long run. If you pack your machine with all the best today, you will survive without an upgrade much longer. As I already mentioned, upgrading laptops is not as trouble-free as messing with a big box. Therefore, for a mobile computer, it makes sense to stuff it full with the high-end components for a bigger lifespan.

Posted on by:

Discussion

pic
Editor guide
 

There are also some form factor constraints that might be less relevant to young people, but risk wrecking your body if you use your laptop for too many hours a day for too long. I am biologically predisposed to being physically weaker than the average computer scientist, so these are the factors I also consider when getting a new machine:

  • Keyboard spacing and key travel. Never buy a laptop with a keyboard that you haven't typed on -- go to the local Mac or Windows store to try out other models in the line of the laptop you're considering. Key travel is how far each key has to be pushed down to register a keystroke, and if you're used to typing hard, having key travel that's too short can get very uncomfortable.

  • Screen size. If your vision is perfect, an 11" high-res screen might let you fit 2 80-char columns of code side by side... but if not, or if you don't enjoy squinting at tiny things, err on the side of a large enough screen to hold at least 161 characters horizontally in a font that's comfortable for you.

  • Machine + charger weight. Laptops tempt you to carry them; needlessly heavy laptops will just make your life worse if you try to bring them to the local library when your home internet is on the fritz, or on a trip.

  • Number and type of ports. In my opinion, between the laptop and optionally its docking station, you need at LEAST one video out of the type that your TV or monitor at home takes as input (or an adapter), plus at least 3 USB ports. 1 for an external keyboard, 1 for an external mouse, and 1 or more for charging your phone or reading external media or whatever you happen to need. This is because sitting for many hours staring at a point right above your hands is just not something the human body is very good at -- you'll find yourself choosing between neck pain from staring downward, arm pain from awkwardly reaching up too high and typing, or perhaps both.

 

In my opinion 16GB is a must for all dev applications running simultaneously. Not "just in case", but indeed a "must have". I use 10+ GB all the time, when running IDE, git gui, music, calendar, mail, slack, web browser(s) and all the server/build things.

Then indeed 500 GB SSD is minimum, but I have never gotten near even with everything installed, few virtual machines stored and dozen of git repos cloned. I think 1 TB "recommended" is little exaggerated.

 

What's your sense of how the software used for developing software makes adequate use of multiple cores? It's easier to tell when an application is hogging memory, and my system is struggling. Where might I get a feel for the difference between cores and processing power?

 

I don't know that there is a consistent answer for this - it varies pretty wildly by tool and workflow.

As editors, neither ViM nor EMACS, for example, are multi-threaded, but more complex IDEs usually are (e.g., VisualStudio, Eclipse). For buildchains, it varies by the tool. GCC, for example, has been able to use multiple cores for concurrent compilation for a long time, but developers targeting Xilinx FPGAs have only been able to use multiple cores since the release of Vivado. I do think that many common devops-y tools benefit from multiple cores (VMs being the most obvious), generally.

 

Just a nitpick - VIM 8 and Neovim can use multiple cores using some new features. There are plugins which run tasks in the background for linting, auto-completion, etc.

Good to know! I didn't realize that had been added to ViM 8, and I'm not very familiar with Neovim, myself. Thanks for sharing =)

 

It's cute to see you asking questions when you already know the answers Mr. Founder :)

 

I don't think I really know the answer. These things are constantly moving and I'm not caught up on the current state of things. Sometimes the whole landscape can change without you noticing.

 

8gb ram gives me blue screen occasionally. 12gb works. I haven't noticed a difference with an SSD over platters. Both have died on me at least once. But it needs to be at least 256gb. I haven't kept up with processors, but I've found an i3 doesn't cut it, an i5 barely works, need an i7.

HPs have the best keyboard layout. My Dell doesn't have proper home/end keys. I do like that the Dell has separate click buttons from the touchpad.

Big issue for me is cooling. HP stays cool, Dell gets hot.

I usually have a browser with a dozen tabs open, 3 instances of visual studio and web server, databases running - along with the usual assortment of outlook, onenote, skype, etc.

 

Processor, RAM and storage demands will vary from developer to developer depending on the software stack their tasks demand.

IMHO, the two most important factors to choosing a laptop aren't mentioned in the article: (1) Keyboard feel and (2) screen.

I always tell folks who ask my advice about purchasing a new laptop to /never/ buy a computer without first getting one's hands physically on the hardware unless they're already familiar with the brand and model. Try out the keyboard and touchpad. Open a few windows, then arrange them in ways that mimic one's own workflow; check the screen's viewing angle; minimum and maximum brightness; etc.

Personally, I swear by Lenovo's T-series Thinkpad because it has a pointing stick and a matte display. Meanwhile, my wife doesn't like my laptop at all, and much prefers her MacBook Pro with its multitouch gestures and glossy screen. I write code and get eyestrain headaches, and she dabbles with digital photography. Different uses. Different priorities.

Choosing a laptop is a very personal decision. Arguably, the only advice that can probably apply to everyone is to spend somewhere between $500 and $2000. ...But, of course, there are always edge cases! ;)

 

The only part that I've found useful about this post was about RAM amount. 8gb is becoming barely enough with the oncoming JS-apps that love to suck that RAM.

Other than that, I couldn't get much useful info along all those lines. You didn't give any specific tips on which components should one look for, or even some laptops examples, and all of that without mentioning the most important thing: how much is one willing to spend.

You touch on the topic about desktops, but don't mention how much powerful one can be for the same money you'd pay for a laptop.

You forgot to mention how important a CPU is when you need to multi-task, and how laptop CPUs are pretty lame: even if you pay for a top-notch one, you won't get anything better than a quad-core CPU, something that's really common in desktops.

Storage is something really personal. Check your disk usage, try to clean some old, unnecessary stuff and check it again, that's usually how much you need (give or take a few spare GBs).

As far as graphics goes, that's only a matter if you work with CUDA or OpenCL related stuff, or if you plan on going the game dev route, as you said (but what does this have to do with programming anyway?). Although a desktop would be preferred in both cases, otherwise your workflow would be hindered heavily.

I don't think there is much to say about battery life, go for as much as you can, since a laptop is meant to be portable and you wouldn't want to look for a power outlet every 2 hours.

 

Igor, I didn't provide any concrete examples because I did not want to promote stuff (anyway, I am rather partial, what I prefer might not suit other professionals). What I wanted is to give some key points of what you should look for in a laptop and range these points by their importance.
As for desktops and their price/capacity ratio, there is a comparison laid out in the table available by the link (I did not want to go further into the topic since my post is about laptops).
I am sorry if this piece disappointed you and did not give you any new information. But as it says in the title, it is a beginner's guide, while you clearly have already seen some stuff ) Anyway, thanks for the feedback, I'll keep all that in mind working on the future posts.

 

I had 24 GB of RAM at some point in my laptop ...
That, plus a i7 CPU (though not extremely high-end one) and three drives: one full SSD, fairly large (128 GB), one hybrid (part 7200rpm HDD, part SSD) - 750 GB and one fat HDD (5400rpm .. for for pure storage, who cares?) - 2 TB.

As far as operating is concerned, this was a dream machine, and not extremely expensive (~1500 EUR).

You did not mention screens much : size and resolution and extendability (one extra monitor? two? 4k ?)

 

There's a lot of things to consider.

Personally I prefer a desktop setup with two monitors and a proper ergonomic keyboard, but I also do a lot of work on mini laptops.

Here's my checklist:

If your laptop has a fan, make sure it's not noisy. If you're going to work on a noisy startup, that's fine. If you're programming on your own, the fan noise of a laptop will really annoy you. And get worse over time.

The laptop keyboard quality and keyboard layout are super important. If you don't have dedicated page-up/down keys, your programming performance is going to take a hit. (Hint: if you buy a laptop with Japanese keyboard you get 3 extra keys you can re-purpose)

Your laptop screen should not double as a mirror.

Your laptop should have screws, so you can open it. Before you buy, check youtube videos of other people opening this laptop. In those you can check if the ram and SSD are user replacable. If they are, you can get started with a cheaper, smaller SSD and buy that larger one when you need it.

If you plan on carrying around your laptop a lot, you need to consider weight and stability. Consider buying a used quality model over a new cheaper one.
I swear on Panasonic Toughbooks, other people love Lenovo Thinkpads.

Lastly, if you're buying a Windows laptop, check if it runs Linux as well. More and more programming is moving to Linux, so if you're beginning now, I'd install both systems on the laptop.

 

Virtual machines on azure can be accessed via a laptop using hotel wifi, is important to note tesla lived in hotel rooms and was interested in tech.

The julia programming language is very interesting.

 

The most important things are the interfaces which connect you with said machine. On the input side, that's keyboard and touchpad or mouse, if you rather use one. The output is usually primarily the screen.

Keyboards shouldn't be under- or oversized, have mostly even keys (uneven layouts will screw with fast typing easily), have enough resistance so you can feel the key register your actuation and don't be too noisy. I consider keyboard lights a useless feature, but each to their own.

Touchpads and mice are even more a matter of choice, so I'll continue with the display. Apple's choice to deliver glare displays with all their notebooks is a problem for everyone who works in changing settings and cannot completely avoid exposure to sunlight. Otherwise, their screens are top notch. Lenovo's higher-end models now come with very nice 4k-Displays without the annoying glare. Other brands have a mix of everything.

Everything less important was already explained by this article.

 

Using a Pentium Dual Core Processor 2 GB RAM with Linux 17.04 LXDE gets my job done !!!

 

To me I go by this list:

  1. Ergonomics
  2. SSD, ram and CPU
  3. Screen size and GPU
  4. Battery life and other stuff

An SSD is a must in this day and age, but going for 1tb is nuts. Usually I have 256gb SSD and get rid of CDROM and put 1tb HDD. 16gb ram is standard for this age. For CPU I usually recommend upper tier i5 and above, depending on your usage. Screen size and GPU depend on what you do. I noticed that I have better posture on bigger screens but that might just be in my case.

Battery life is another thing and depends on how much drives you have, how big is your screen, etc.

As a developer, graphic designer, 3d designer and occasional video editor, an i7 and good GPU is a must have in my case. But since this is my job and I make money from it I don't mind spending money on something that will help me get job done quicker.

Laptop will never replace desktop PC. Big difference are performance and thermals. After only 10-15 mins of rendering video and 3d models, my CPU/GPU get to hot for little fan to cool and thermal throttling happens that drastically decrises performance. Also price and upgrades are another issue laptop flops over desktop.

Every person has its own preference/needs and it will not match my opinion. I'm just here to give some hints to others that are in dillema and have similar needs as I have.

 

Personally I prefer to use a laptop as a dumb terminal for remoting into my desktop workstation.

This lets me get away with an older machine with sub-par specs since all it needs to do is VPN and RDP. It also means I don't have to sacrifice the infrastructure on my local network (I've got like ten TB of assorted NAS hardware, and my development VMs run on a dedicated server).

 

Your advice in nutshell: "get top of the line everything" ;)

 

MacBook Pro 15"

I don't see why anyone would "need" 1TB of disk though.

 

In one word, buy the best laptop you find :)

 

That is if you need all that stuff and your budget allows you - why not? However, if you are not going to work with graphics, you could cut the costs by going for an integrated card and not-so-fancy screen. Alternatively, you might go for a smaller SSD capacity, if you know you aren't doing to use too many software titles.
Best is best, but it's up to you to decide what is redundant depending on what you are going to do with your machine. That was my point (at least, as I tried to deliver it).
Thanks for the comment!)

 

Examples with comparisons would have been great here.