The Perfect Development Environment
By Eric Bieller
09 August 2010 | Category: Uncategorized
Editor's Note: In his first article for Think Vitamin Eric Bieller argues that the "perfect" development environment goes beyond your text editor of choice. What's "perfect" for you, let us know in the comments. On a related note check out http://wherewedesign.com for some inspiring workspaces.
Developers will argue all day that a particular development setup is better than the next but we can all agree that having a development environment that is both comfortable and efficient is crucial for creating great software and meeting deadlines.
Here I will be covering, in detail, my ideal development environment. Some of it you will agree with, some of it you will disagree with, but hopefully this can help you refine your own development environment and question your current setup.
Work Setting
The setting you work in is hugely important to your overall success as a developer. Background noise, loud coworkers, office climate and more may all contribute to a poor work setting, hindering your concentration and performance.
Likewise, a quiet one person office can also be detrimental if you’re the type of developer who craves connections with other people during the day.
I have personally been through many different work scenarios over the years including the home office, crowded office and public place. I generally prefer the calmness of the home office but with it comes it’s own set of distractions.
Attention-craving pets can be quite frustrating when you are trying to get work done, then there’s working in the same space as your bed, TV or couch.
Finding motivation can also be tough when you are working in the same space that you relax in. I can usually overcome these distractions by creating a time distinction in my head where certain hours are set aside for work and the others for relaxation.
It slowly becomes easier to block out the distractions and focus on my work. So, despite the distractions, the work from home environment is ideal for me.
Desk & Chair

Ergonomically speaking, desk chairs are not equal. Each one has it’s positive and negative effects on your body. I personally prefer a chair with a firm back and a little lumbar support. Some chairs will recline back unless locked but often times the locked position still has a little give. This is a big issue for me since I prefer a chair that does not lean back at all.
It is also imperative that I have proper cushioning. Some cushions will flatten over time resulting in increased discomfort when working. If you are experiencing back or shoulder pain during or after working, you might consider trying out a Kneeling Chair. I haven’t used one of these myself but it seems like it could be a good solution.
Though it may seem trivial to some, the chair you use is an important piece of the puzzle leading to an overall comfortable working environment. I recommend experimenting with different types of chairs and finding the one that feels the best for you!
The desk you use is just as important as the chair. Having a desk that bangs your knees, doesn’t allow you to stretch out your legs or one that isn’t the right size for your setup can contribute to a poor working environment.
I personally enjoy a simple desk without all the cubby holes, drawers and cord hiders. A great technique for finding the right desk is to think about what bugs you about your current desk or desks that you have used in the past. This helped me realize that my ideal desk is one that isn’t even made for a computer, it is one that is plain and simple without all the frills.
I eventually ended up selling my larger, more awkward desk for a small dining room table that I felt would be a better fit for me.
Monitor Setup
I worked on a single monitor for quite a while. A friend eventually recommended that I add a second. I hadn’t really thought about it before but I figured I’d give it a try. I immediately noticed an increase in my productivity. I never realized how much time I wasted hiding and minimizing different windows.

After a while, I decided to add a third monitor. I have been using this type of setup for about a year now and I have been recommending it frequently. Though it may not be for everyone, this ended up being crucial to increasing my output as a freelancer.
There are some problems with the multiple monitor setup though. Lack of desk space can be a big issue for some. It can also be an expensive setup depending on the type of monitor you use. You can usually cut costs if you don’t mind working on different size monitors but some prefer working on monitors of the same type and size. My monitors are all slightly different proportions but it doesn’t really bug me.
Mouse & Keyboard
I generally like to keep my keyboard and mouse fairly simple. Fancy ergonomic keyboards never really worked for me. I am currently using a PS2 Compaq keyboard that was probably built in 1999. It is as basic as it gets with no media buttons or extra features, just the way I like it.
As for my mouse, I use a basic Microsoft Comfort Optical Mouse 3000. I have been using this mouse for years and it has become my all-time favorite. While it’s not the highest quality mouse, it is reliable and fits comfortably in my hand.
Minimizing Distractions
For the longest time I found myself constantly being distracted by RSS feeds, twitter pop-ups, emails, chat programs, etc.. As soon as I would gain my train of thought, Echofon would pop-up a new tweet, a client would respond to an email or I would receive a text message. Regaining my thought process after each of these distractions was time consuming.
It seems easy enough to just ignore these distractions during development but it isn’t as easy as you would think. It’s hard to overcome the feeling that you might be missing something important. But I slowly removed one distraction after another over the period of a week and noticed that my productivity steadily increased.
Once I saw the huge benefit of logging off of these networks (at least during crunch time), I never went back (although I sometimes make an exception for Gmail ;).
System Shortcuts & Project Management
I am both a PC and a Mac user but I generally do my development work on my PC. Regardless of which you prefer, it is highly beneficial to be familiar with your particular system setup in a way that lets you open, close and manage your programs as efficiently and quickly as possible. For me this means a few things:
I generally like to keep my desktop clean aside from a the default icons, a shortcut to my projects directory and a couple of program links. I feel like there are much better ways to access programs than a desktop icon so I generally don’t even bother.

My taskbar has all of my important programs grouped by type on the Quick Launch and also contains a link to my projects directory. You can generally do the same thing with pinned programs on both Windows 7 and the OSX dock but I have been using the Quick Launch bar for so long that it is quite comfortable for me.
![]()
I almost always recommend that developers and designers keep their projects under Tortoise SVN (Subversion). Even if you are a one person shop, SVN can help you manage revisions and code very efficiently. It can also serve as a sort of backup for your code at the very least.
There are tons of free solutions for SVN hosting that will work for the typical developer. I recommend using Beanstalk (Ed: we use Codebase, well worth a look!) to host SVN repositories as it offers a free account and is generally easy to use and beginner friendly.
All of my projects are located in my WAMP document root. Even if the project doesn’t require any custom coding or special server configuration it can still be helpful if you ever have the need to add dynamic functionality to the project at a later date.
Each project directory can be served up by WAMP but I also include a files & assets folder for all of my project assets. Here is my current directory structure for ftpmailer. This is a CakePHP project so it’s structure is generally different from a basic web project.

IDE & Other Programs
A couple of years ago I began testing out a ton of IDEs to find out which one works the best for me. My requirements for a good IDE were fairly simple:
- Customizable syntax highlighting
- On-the-fly error checking
- Customizable keyboard shortcuts to allow for deletion or cutting of a single line (among other things)
- Simple project management
- Clone view
- Stability
- Multiple language support (at least JavaScript, CSS, HTML, PHP)
- Universal find functions that allow you to search for text within entire project as well as specific file names
- Mac and PC versions
Most modern IDEs will have many of these features but it’s hard to find one that supports everything. A few of the ones I ended up testing out are NetBeans, Zend, Komodo, Notepad++, TextPad and PHPEclipse. I eventually settled on Komodo as it meets all of the requirements above and is both Mac and PC compatible.
Since I am a Mac and a PC user, this is very important. Komodo does come at a premium though at $295 for 1 user license.
Conclusion
So to recap, here is my ideal development environment:
- A work from home scenario with minimal distractions
- A padded chair with a straight back, lumbar support and no give in the locked position
- Three monitor setup
- A basic mouse and keyboard works the best for me
- To minimize distractions I like to log out of networks like twitter, gmail and chat programs, at least when I’m under a deadline
- All of my commonly used programs are on my Quick Launch for easier access
- Projects are kept under SVN to manage code revisions and backups
- Projects are kept in the WAMP document root so that dynamic code can be tested locally
- Komodo Edit is used as my IDE whether on PC or Mac
What is your ideal development environment? Do you have anything you would add to mine? Let me know in the comments section.
Follow @thinkvitamin on Twitter Please check out Treehouse
