Building Your Workspace


This post is going to be a multi-part series talking about the various aspects of building a workspace. We’ll go through everything from your operating system, and software of choice all the way up to your desk and ergonomics considerations.

A lot of programmers have different ideas about what the ideal workspace is, everything from what kind of desk (or even having a desk), the type of lighting, type of chair, and how many monitors one should have; and each of us will have our own radically different ideas for what those things should be. Ultimately in the case of the physical things you do to get your job done I think we can all agree that they should be comfortable, ergonomic, practical, and in terms of computing power and screen real estate sufficient to get the job done.

But this is really only half of the issue surrounding building your ideal workspace, when you enter into programming you also have to consider other things such as what operating system you should use, if you should use a laptop or desktop, what editor/browser/debugging tools you should use, your choice of version control and what application of version control you should use (should you be using a remote server), and what testing software do you need. A developer for example might have a lamp stack or access to one locally.

In this post we’ll look at a few common configurations and the pros and cons of each, of course everyone has there own particular habits, so these suggestions may not work for you. If not feel free to leave a comment and let me know what your workspace is like.

Operating System

This is probably one of the most hotly contested components of any workspace and each of the 3 major Operating Systems have there high points and low points. Below I will list the three biggest ones Microsoft Windows, Mac OS, and Finally Linux more specifically the popular Ubuntu distribution that is based on Debian.

Microsoft Windows

One of the most wildly used systems, windows is used by many organizations since it’s often little to no learning curve, well supported, and also has a ton of software that runs on it. I personally have a dedicated windows computer that I use extensively for coding at my workplace.

One of the biggest reasons to use Windows for your workspace is if your development is for a windows deployment. For example if you are a .NET developer, are writing an application for windows server, or are developing windows based desktop applications, having access to visual studio and the other related Microsoft components can be a huge time saver, plus for any compiled applications, being able to compile, test and distribute form your primary workstation is vital.

Aside from the excellent software available from Microsoft for developing on Windows, many great products also are developed for the platform such as the Adobe products, Microsoft Office, and many popular developer applications (notepad++ for example)

Although windows has some great benefits, it also has it’s share of drawbacks. Windows as a solution has always been a one size fits all OS and what this means is many of the tools you require as a developer will need to be downloaded and installed. Fortunately many of these is simply a matter of finding a good tool and running an installer, however some tools especially ones intended for development are not available for Windows, or are in beta stages and this may make setting up your environment more difficult.

In a nutshell

Windows is good if:
You are developing for a Windows based solution You’re most comfortable working in Windows You’re willing to put a little time and effort into finding tools You need something that is well supported * It’s what your workplace uses
Windows may not be the best choice if
You’re target platform isn’t windows You’re use to much lower access to your system * You require tools, compilers etc.. that aren’t windows based, or are only in early ports

It’s also worth noting that Windows, although well supported isn’t the only solution that has support available. Apple has dedicated plans intended to provide user support, and whole start-ups exist selling subscriptions for enterprise Linux support, and even personal support.

Mac OS

While Mac OS is technically an operating system, I would argue it’s more of a culture, and a solution. Mac OS only runs on the Mac line up of hardware (not including such things as [url]hackentosh[/url]) but it has also built up somewhat of a culture. The type of people who use it are generally not casual computer users, they tend to be very dedicated and feel strongly the Mac really is a superior experience. Mac has also found itself a strong home in the design industry. This was largely propagated by Adobe in the early days when there software ran solely on the Mac.

Mac’s do have some advantages when it comes to using it as a development platform, to start Mac has a lot of strong commitment from the design community, this means that if you plan on hiring a designer you are already going to have an easy time bringing them on board, and also working with them in a familer environment. Mac is also built on Unix, meaning when you open up a shell in Mac you can feel confident that much of the software that you would use on Linux (a unix-like os) will run and be compatible on the Unix based Mac.

Aside from having great support from and for the Graphics industry, Macs also have great software for developers such as brackets or Sublime Text.

Macs are also well known for there stability. When a piece of software crashes on the Mac, the system as a whole tends to be able to stand the blow and continue functioning. Meaning that you won’t lose work in the event of a system error. Being a Unix system Macs also have built in support for things like SSH making it easier to communicate with Unix and Linux servers.

One of my favourite things about the Mac is being able to store passwords in the terminal. Many people may not be able to appreciate this, but when using such applications as Git or ssh you are often required to enter in credentials, on many operating systems these credentials must be entered every single time you use them, and can not be saved by the system. Macs have a password management system known as a keychain, which can also save passwords entered into the terminal.

In a nutshell

Mac is good if
You are developing for a Windows based solution You’re most comfortable working in Windows You’re willing to put a little time and effort into finding tools You need something that is well supported * It’s what your workplace uses
Windows may not be the best choice is
You’re target platform isn’t windows You’re use to much lower access to your system * You require tools, compilers etc.. that aren’t windows based, or are only in early ports


Linux as a development platform can come in two flavours, some developers like to work completely from a terminal ether through another operating system or on the computer itself, and others like to work using a GUI and a traditional text editor. both of these work flows have there own advantages, and I’ll look at both of them here. The distribution I am going to talk about is Ubuntu, which is one of the most popular ones and is also free. Other popular distributions include Red Hat which is a business Enterprise linux platform, and Debian which is what Ubuntu was derived from.

Working from the console

One of the big advantages to working from the console in linux is you have quick and easy access to many of the most needed programming tools within a few keystrokes for example a c/c++ compiler can be invoked through the gcc command, and you can run a perl script right just by marking it executable and calling it by file name. Linux also has rich text editors that work from the command line such a VIM which lets you execute many shell commands right from the editor, and EMACS.

Benefits to working from the editor The console is really light weight, and works on very minimal system specs, and can work remotely Console programs are generally very easy to invoke once you learn the syntax * generally nothing needs to be installed as it generally comes with linux

The other side of linux programming is working in the GUI. Ubuntu linux comes with a fairly rich text editor known as GEdit which does basic text editing and syntax highlighting; However linux comes with a rich repository of software that’s easy to download and install and much of which is free.

In a nutshell

Linux is really geared towards people who program, one of it’s great advantages is that many of the software that you may require is often included in the default distribution. Linux is also one of the most popular operating systems for servers running some of the biggest companies in the world including Google, and Facebook.

Leave a Reply

Your email address will not be published. Required fields are marked *