Boost Productivity with the Right Dev Environment

 Software Development can be hard on its own, but when your own development environment doesn’t work for you it makes it even harder.

In the last year or so, I’ve really come to appreciate the environment I develop in, and I’ve been able to tailor my environment to make me more productive. In this article, I’ll share with you techniques you can use to get more out of your development environment.

First, I want to talk about what composes your development environment. If you ask a software developer, they’ll say its your computer, OS, text editors, CLIs (command-line interfaces), build tools, and other programs you use when developing. However, if you were to ask someone outside of the technology field, they might say it’s the composition of your physical surroundings and atmosphere. I say that it’s both: your development environment consists of everything physically around you and virtually contained in your computer or the internet that affects the rate at which you can develop software.

So what can we do to tame this wild beast?

Find a Proper Workspace

Find a workspace where you can concentrate on your work. A proper workspace should be somewhere where you can’t easily be distracted. However, there are other factors that make up a proper workspace too, and they change with each and every one of us.

Take the following into consideration when choosing your workspace:

  • Is it too noisy? Some people might be able to be productive in the middle of a coffee shop during rush hour. However, I would wager that they could be more productive in a personal office free of distraction.
  • Is it comfortable? You’re not going to get much work done if you’re not comfortable. I’m not saying you should only work in bed—obviously, that wouldn’t be the best. But you should be comfortable enough. If you’re someone who prefers a standing desk, get a standing desk. If you need proper back support, invest in a good chair. If you’re struggling to get comfortable, it’s only going to slow down your development.
  • Is there enough desk space? In this day and age, do we really need desk space? I could probably survive propping my computer up on a few stilts in front of me. But I do like having my mouse, mouse pad, monitors, wrist rest, and coffee laid out in front of me. Especially the coffee. Make sure you have the space to support all these little things that you use when coding.
  • Do I have enough monitor space? I’m the kind of person that hates working on a tiny screen. If I’m on my laptop, this is usually the case. It can be remedied, however, by having one or more external monitors in your workspace. Make sure you invest in the proper amount of monitors that help you.

If you have taken these into consideration and ruled that none of them are hindering you, then odds are you’ve got a pretty good workspace already.

Choose the Right Computer

Your computer is one of the most important aspects of your development environment. Consider hardware requirements like RAM, CPU speed, screen size, touch screens, trackpads, USB ports, etc. when deciding on a computer.

You’ll also want to choose the proper operating system for your computer. I’m hoping to avoid an OS “holy war,” so I’m going to keep this short and sweet: choose the operating system that best suits your typical development needs. If you’re a windows app developer, you’re going to want to be working on windows. If you’re an iOS and Android app developer, you’ll probably want to be working on a Mac. If your projects are running on Linux servers, it might just be easier to just develop on a Linux computer.

These are just examples, I’m not claiming that if you do X you should always work on Y OS. All I ask is that you ask yourself if development would be easier if you were using another operating system.

Choose the Right Text Editor or IDE

Another sore topic for many: Text Editor vs. IDE. In my opinion, this has to be decided on a project-to-project basis. Just cause you’re a Sublime Text wizard doesn’t mean it’s going to make building a Windows Forms UI any easier. Go with what works best for your projects, and don’t be afraid to change it up and try other text editors. I’ve gone from Sublime Text, to Visual Studio, to VS Code, to Atom, and back to Sublime Text Editor. I go with what I can best utilize to fulfill my needs at a specific point in time.

However, when comparing different text editors and IDEs, there are two features that I absolutely need in order to consider switching to a new text editor or IDE:

  • Organize different files side-by-side: I absolutely need this feature in my text editor or IDE now. Yes, in most cases, you can solve this by opening the same editor in a different window and putting the windows side-by-side, but that’s a much longer process. I like to be able to hit a hotkey and instantly move a file into a new column to the right of the old one.
  • Search within a folder: Visual Studio was the first product I used that had a good “search in folder” function. Sublime Text also has an awesome search feature. This feature alone literally saves me hours and hours of work.

There are tons of other features packed into editors and IDEs like Sublime Text, Atom, and Visual Studio. The point is, try out a few, pick the one that makes your life easier, and don’t be afraid to keep trying others out every so often.

Optimize Your Desktop Windows

One of the most annoying things when developing is when you have a million different programs running, each with their own window on your desktop, and you have to search through them to find the one you want. This doesn’t have to be the case anymore. Many modern operating systems now let you create separate “desktops,” allowing you to group together and organize program windows. In MacOS, this concept is called “spaces.” In Windows, this is called “desktops.”

This is how I organize my programs into different desktops/spaces:

  • The first desktop is typically 1-2 browser windows with tabs for Jira or Trello, my work email, Slack, and project wiki pages.
  • On the second desktop, I usually tile 4 windows for the most common project folders I open, running git commands, and building/running programs. I usually also have the latest dev build of the program running on this desktop.
  • The third window I reserve for coding. This usually consists of half the space being taken up by my editor, and the other half being a browser for google searches (a developer's best friend). I should note here that if I’m using my laptop alone I usually split this into two different desktops to maximize screen space while coding.
  • Any other tools or reference material I need usually gets put after the other desktops. If you reference something enough, put it on its own desktop. Then you can switch to it faster and save time.

By organizing programs into separate desktops, you can eliminate wasteful time spent shuffling through windows. This modern OS feature allows you to simply use a keyboard shortcut to switch to the desktop to the left or right of the current one.

Create a Lint-Build-Test-Run Pipeline

When I start a new project, the first thing I do is setup a pipeline so that all I have to do is execute one command and the rest is taken care of. It’s imperative to lint and test your code in order to write higher quality code. In order to save time, I suggest setting up a tool to do all the linting, building, testing, and executing at once (. Ideally, this tool would also watch your source files and re-run when changes are observed. This can save minutes every hour, which adds up to a hell of a lot of time over the course of a year.

Build The Development Environment That Works Best For You

These are a few issues that I consider when making decisions on my development environment. Everything from the room you’re in, the people around you, the computer you’re working on, and the tools you use can either increase or decrease your rate of development. Software development is difficult enough, so make sure your development environment is working for you and not against you.

Have your own ideas to improve your dev environment? Comment them below.