How to Choose a Computer for Learning to Code in 2021

Photos of tech conferences and startup bullpens filled with gleaming, be-stickered Macbook Pros and shiny Apple monitors make it seem like a premium computer with all of the best accessories is necessary to do work at a tech company, and might be a financial barrier to entry for the tech industry. The reality couldn’t be further from the truth.

Why do tech companies have $3,000+ computers everywhere?

Simply put, it’s a perk for employees. Most of the work that programmers need to do on a daily basis requires little more than a text editor and a terminal. Of course, there are some more computationally demanding tasks and roles, but they are less common than many programmers would like you to believe. In a highly competitive job market where a large number of employers are competing for a small number of highly-valuable employees, providing excellent hardware to work with has become table stakes for most tech companies. In reality, far less is required to do good work, and far less still is required to learn to program.

What do I need?

The computer you already have is likely more than sufficient, with the caveat that if your computer is a smartphone or a tablet you’re going to have a harder time. A traditional laptop or desktop computer will be more effective for you. Operating system is less important than it used to be as well. When you’re just getting started anything will be fine. Certain types of software development require certain operating systems, such as building applications for iPhones or iPads which requires a Mac, or building Windows desktop applications which requires a PC. Unless you want to do one of these very specific types of development, avoid buying a new computer right out of the gate. Start with what you have. When you start hitting the limits of what it can do the rest of this article will be useful to you.

I don’t have a computer I can use. I need to buy something.

Start with something relatively inexpensive. Refurbished computers can be a good deal. This will save you a bit of money which you can use to invest in the resources needed to learn. The brand is less and less important these days as most manufacturers source their components from the same few companies.

Laptop or Desktop?

If you can only have one computer, a laptop is the clear choice. Being able to bring a computer to class, a meeting, or a job interview is enormously useful. Even being able to move around in your own home is useful. It allows work from a variety of places.

Desktops tend to be a bit less expensive for the same or better performance, but laptops are more than powerful enough these days and even older or budget tier machines are highly capable.

If you prefer working with a large monitor, external mouse and keyboard that can be done with laptops as well these days – most have sufficient ports to connect a large monitor, mouse and keyboard. Most programmers tend to have a main laptop they use for their work, and a station where they can plug it in when they would like a more ergonomic experience.

What operating system should I choose?

Your basic choices are Linux, Windows, or Mac OS X. If you want to build Mac desktop applications for iOS applications (for iPhone or iPad) you will need a Mac. Most other types of software development can be done on any type of computer. Here are some advantages and disadvantages of the different OSs to help you choose:

Linux Advantages:

  • Linux is built from the ground up with the command line in mind. This may make your job simpler when it comes to writing server software.
  • Linux can be lighter on system resources than other operating systems, allowing older hardware to continue working for longer.
  • You will likely eventually need to understand Linux for professional work, so using it on your personal computer can help the process along.

Linux Disadvantages

  • Only a small number of manufacturers sell laptops and desktops with Linux pre-installed, so you may need to buy a Windows machine and install a new operating system. This can be a pain.
  • The overall polish of the operating systems is lower than OSX or Windows when it comes to the UI and the available applications.
  • The ecosystem of available applications is smaller for Linux than for other operating systems, though for Programming-related tasks the software ecosystem is robust.

Mac OS 10 Advantages:

  • Easy to use
  • Unix-based operating system makes for a familiar command line
  • The hardware is top-notch
  • Heavily used by software engineers, so it’s generally well-supported
  • Allows development of iOS, iPad, and Mac native applications

Mac OS 10 Disadvantages:

  • The hardware is generally more expensive than other manufacturers
  • You won’t be able to develop Windows applications out of the box
  • Now that Apple is moving away from Intel chipsets to their own proprietary chips, it is no longer as straightforward to run multiple operating systems side-by-side on their hardware, though this is no longer as common a need as it used to be.

Windows Advantages:

  • A wide variety of manufacturers build Windows machines in a dizzying array of form-factors and price points.
  • Windows is the most widely-used operating system in the world for desktops and laptops.
  • If you want to build Windows applications or automation for the Microsoft Office Suite, this will be your most convenient option.
  • Some applications for scientific computing and other industry-specific programs only operate on Windows, so if you want to work with those programs, you will need to run Windows.

Windows Disadvantages:

  • Windows is the least-supported operating system for web development, but this will not stop you if you want to do web development using Windows. It will just mean a few more speedbumps on the way.
  • Windows does not have the best reputation for reliability, though recent Windows versions are far superior to how the system used to behave.
  • Anecdotally, Windows tends to reduce the expected lifetime of computers. OSX and Linux machines tend to have a much longer lifetime.
  • Viruses and malware are much more of a concern on Windows than they are on other platforms.

There are all these different specifications! What do they mean?

Processor Type, Speed and Number of Cores

The processor, or Central Processing Unit (CPU) is the “brain” of your computer. It is the hardware that drives the majority of what your computer does. There are a few main manufacturers of CPUs – Intel, AMD, and more recently Apple. They all make good stuff. There aren’t really “bad” CPUs anymore, just CPUs of different levels of speed and power suited for different uses.

Processor speed is measured in Gigahertz, which is a frequency – this represents the number of computations per second that the processor can make at once. It is frequently expressed as a base frequency and a burst frequency on more-recent hardware. Higher is typically better in these numbers.

The number of cores in a processor represents how many different things the processor can do at the same time. More cores is better, as it allows the computer to handle more tasks simultaneously. Processors for laptops in 2021 typically have between two and eight cores, with higher core counts being more expensive.

I would recommend, in 2021, picking up something with at least 4 cores and a base processor frequency of 1.8 Gigahertz or greater if you intend to do professional programming work on the machine and want to be able to use it for a number of years.

Memory/RAM

Random Access Memory (RAM) is the “working memory” of your computer. As applications run, they “allocate”, or use, portions of RAM to do the work they need to do to function. The more RAM available to your system, the more work it can do simultaneously, and the larger the programs it can run. More is generally better.

For professional computing in 2021 I would recommend a minimum of 16 gigabytes of RAM if you would like to continue using your computer for a number of years. Many laptops today ship with 8 gigabytes of RAM, but an upgrade to 16 will make a large difference as you start working on bigger programs.

Disk Space

Disk space or hard drive space is the “non-working” memory of a computer. This is the place where the computer stashes information when it’s not actively using it in files. More is better, up to a certain point. There are three different types of hard drive: spinning disk, Solid State Drive (SSD), and hybrid. You definitely want a SSD for your main (and probably only) drive. SSDs are much faster and typically are the default type of drive installed at this point. Spinning disks are exactly what they sound like: a spinning metal disk on which information is written with a magnetic stylus. They are older, cheaper technology. Go for a decent-sized SSD. At this point they’re not that much more expensive and they are much, much faster. I’d recommend a minimum of 256 gigabytes in size. If you plan on dealing with video or storing your photos on the computer, upgrade further to 512 GB or one terabyte.

Graphics Card

Graphics cards are specialty computing units, almost mini-computers inside your computer. They frequently have their own processor and RAM specifically designed for rendering vector graphics.

Graphics cards are not used in the vast majority of programming. If you’re going to be doing 3D game development or certain types of cryptography or some types of scientific computing they might matter to you, but they probably don’t. If you’re going to save money anywhere, this is the place to do it. None of my computers have dedicated graphics cards, just the on-chip graphics processor that comes with the CPU. Of course, my work is primarily web programming, database work, and the like. If you’re worried about your ability to play games on your laptop I would recommend you reconsider. Go buy an XBox or Playstation instead – a good graphics card can cost a similar amount to a refurbished game console, and if you don’t have games installed on your computer you won’t be tempted to procrastinate by playing them when you should be writing code.

How much should I spend?

As little as possible and as much as you are willing. Buying from a reputable source is a good idea as the computer will come with some form of warranty and you’ll be able to get some type of help if there’s an issue or two with the hardware. A computer with the specs I mention in this article will likely cost somewhere between $1,000 and $2,000 purchased new in 2021. If that seems steep (and it is steep) you can save money by buying refurbished. If that doesn’t get things down to your budget I would recommend compromising on processor and hard drive rather than RAM. For most programming RAM will be your limiting factor eventually. If you are handy with a screwdriver you can also see if the RAM can be upgraded later on the machine you buy. Frequently buying new RAM down the road is less expensive than paying for an upgrade from the manufacturer and depending on the computer it can be easy to install yourself. If you want to go this route make sure the RAM is in fact swappable – many new laptops have soldered RAM chips that can’t be upgraded or completely sealed cases that can’t be opened.

If you’re really hard up, frequently you can find used computers for sale on Cragislist – this can be a bit of a risk, but you may be able to get something with similar specs for much less money. Always ask to check the computer before you buy it and make sure it’s in working order. If you get something from a less-reputable source, always wipe the hard drive and reinstall the operating system from scratch before you use it to remove any potential viruses.


Get On Learning to Program in your Inbox

Processing…
Success! You're on the list.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s