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.
Top comments (22)
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.
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.
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.
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?
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.
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! ;)
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.
Using a Pentium Dual Core Processor 2 GB RAM with Linux 17.04 LXDE gets my job done !!!
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.