Development machines — meaning the computers software developers use to write code — are like pizza: There's a virtually infinite number of ways to configure them, and everyone has different preferences about what makes the best development machine.
And yet, although you can find a wide variety of development machines out there, development machines today tend to look more similar than they did in the past. Thanks to shifts in technological trends, a few core platforms dominate modern development boxes, whereas in the past diversity was more common.
To prove the point, let's look at how development machines and their configurations have changed over time, and what today's developer computers typically look like.
What Is a Development Machine?
Before looking at development machine trends, let's define what a development machine is in more detail.
Again, a development machine — also known as a development box or developer computer — is a PC or laptop that software developers use to write software. Development machines are typically provisioned with the tools — such as IDEs, source code management software, and software testing suites — that developers require to write, manage, and test source code.
By setting up all of the tools necessary to code efficiently on a specific computer, a developer gains a go-to workstation for writing software.
Trends in Modern Development Machines
You'll still find a lot of variety among development machines in terms of which tools are installed. But changes in software technology mean that virtually all modern development machines are likely to include software like the following.
More Windows, less Linux
In the past, Linux was an obvious choice of operating system for development boxes, especially for developers building code that would be deployed on Linux servers. Running Linux was the only way to access native Linux tooling for testing software.
That's no longer the case. Thanks to Windows Subsystem for Linux (WSL), developers can now run Linux environments right in Windows. As a result, you're likely to find fewer development boxes out there powered by Linux. They might include Linux tooling via WSL, but Windows is the operating system.
In cases where developers do need to run a specific operating system to help build or test software, they can now often do that by setting up virtual machines to host whichever operating systems they need on top of their main operating system.
This means that, instead of having to install a specific operating system to your development box, you can simply set up VMs. For example, you might run the same Linux distribution as the systems you develop for, but you'd host the distribution inside a VM running on top of Windows.
The only common situation where development boxes can't benefit from virtualization is when developers are building software that requires access to physical hardware devices, which are difficult to manage through virtual machines. But most software today isn't subject to this limitation.
Docker, the software containerization framework, has become another common feature of modern development boxes. Virtually any developer who builds software that will be deployed to production using Docker will want to have Docker installed in order to test software using containers locally on the development box prior to deployment.
On top of this, Docker is a handy way to run additional software, such as web servers or databases, that developers might require in order to help create a test environment for their software.
Lightweight Kubernetes distributions — meaning Kubernetes distributions designed to run on a single computer instead of a cluster of servers — can also be a valuable part of a development box in some circumstances.
If you just want to test containerized applications quickly, you don't need a local Kubernetes cluster. But if you want to validate how apps behave within Kubernetes, having a lightweight Kubernetes distribution available on your development box is the simplest way to do that.
A caveat here is, if you are to run Kubernetes, you need at least one Linux operating system. (Kubernetes worker nodes can run Windows, but control plane nodes only support Linux.) But you can set that up using a VM if you want to run Kubernetes on top of a Windows-based development box — so here again, developers can stick with Windows if they wish.
Conclusion: The Changing Face of Development Boxes
We haven't touched on other types of software tools, like IDEs, that are important components of development boxes because those components haven't changed much over time. Developers have always used IDEs and similar tools.
But other technologies — like Docker, Kubernetes, and WSL — are newcomers to the typical development box. They're a reflection of how developer tooling needs have changed, and how certain platforms have come to play a central role in modern software development practices.
About the authorChristopher Tozzi is a technology analyst with subject matter expertise in cloud computing, application development, open source software, virtualization, containers and more. He also lectures at a major university in the Albany, New York, area. His book, “For Fun and Profit: A History of the Free and Open Source Software Revolution,” was published by MIT Press.