Curated by Carsonified

Learn with Treehouse

Accessibility, CSS3, Design, Django, HTML & CSS, HTML5, JavaScript, jQuery, NoSQL, PHP, Responsive Web Design, Ruby, Ruby on Rails, Tools, UX, Version Control, WordPress, iOS and more

Article 43

The Perfect Development Environment

By

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

Other Posts You Might Find Interesting

  • Sorry - No Related Posts Found

Comments

  • Gareth

    I like that you detail what made you choose a specific chair, desk, even IDE; but I’m surprised you don’t specify what made you choose SVN over another source control system (you don’t say “use source control”, you say “use SVN” – was this an oversight?).

    I know there are plenty of things which bugged me enough about SVN which made me choose something else once I thought about it (like you with choosing your desk) – maybe your source control might be the next thing to come under the same scrutiny?

    Anyway I don’t want to make a huge point about it, the rest of the article definitely rings true and I have a similar kind of set up myself :)

  • http://www.ericbieller.com Eric Bieller

    Good point. I actually used to use CVS a long time ago but switched to SVN. Can’t remember what prompted the switch but for those of you who are unsure about which is better, here is a quick comparison of the two: http://www.pushok.com/soft_svn_vscvs.php.

    SVN has always met my needs so I generally recommend that without thinking.

    Thanks for the input!

  • http://www.datamouse.biz/ DataMouse

    I agree that, if working from home, having set times that you are in “work mode” helps to get past the distractions of day life. It also helps others around you (like the missus) understand that you are actually working – as it is a common misconception that being at home means that you’re having a bit of a skive.

    As for other working environment conditions for me, I like a little bit of noise (music, adverts, even traffic), but so much as I start singing along.

    Technology-wise, storing all web-based projects in my WAMP directory is a must.
    My fonts, patterns, textures and other resources are all arranged in alphabetical order – but I have also taken time to “tag” each one so that it’s easier to search for in my library too.

    Finally, all of my web projects start with a “template” folder, which includes a CSS stylesheet with reset, fonts and general layout (header, content, nav & footer) already coded. Likewise, the folder includes a index.php file, some JS files (belatedPNG, jQuery core etc) and an includes folder too. There’s even a default 1000px X 800px PSD file, complete with guides already applied waiting for me in the source folder.

    This means I can copy the template folder, rename it and open the PSD to start my design.
    Then I can slice into the img, css and html files/folders and code live on my WAMP server very easily.

    I definately recommend this to others!

    DataMouse

  • Mike

    Great article!!! I love the discussion on distractions in your work setting. My favorite part of the article has to be your grouping of important applications in your QuickLaunch. I love that StartCraft 2 is in there.. (it’s in mine too, don’t feel bad!). I just thought it comical and ironic that this article is about productivity and minimizing distractions and there is a game that will suck the life out of anyones productivity sitting on your task bar. Props!

    To geekify an Eric Draven quote “We can’t code all the time”.

  • http://enrique-ramirez.com Enrique Ramírez

    Nice tricks. :)

    One major flaw for me, though: Having Starcraft 2 on my work computer is a big, fat “NO”.

    That’s why I have 2 main computers: work and entertainment.

  • Pedro

    There are only two text editors Vim or Emacs. One you learn one of them you never go back.

  • http://www.ericbieller.com Eric Bieller

    Hah well I have a MacBook that I was playing Starcraft 2 on but it didn’t run it quite as well as on my PC. You’re right though, that can be a huge distraction but I can usually overcome ;)

  • http://www.twitter.com/darrelaustin Darrel

    Even better, get rid of the chair altogether and go with a stand-up desk. Chairs are evil and slowly killing us all:

    http://www.businessweek.com/magazine/content/10_19/b4177071221162.htm

  • http://www.ericbieller.com Eric Bieller

    Used them both.. not for me ;)

  • http://www.ericbieller.com Eric Bieller

    Yeah I keep everything on my Quick Launch. You’ll notice steam is down there for all of my other games. Problem is I don’t really have another PC that can run all my games so I’m stuck mixing the two :/ Thanks for the input!

  • http://www.ericbieller.com Eric Bieller

    Thanks for the input. Sounds like a great setup. I didn’t go into too much detail about my actual project structure since this I wanted this to appeal to all developers, not just us web developers. It is a good call though to have sort of a skeleton project to start all of your new projects form. One that already has the necessary index file, blank css and javascript files.

    I actually have a separate skeleton projects one for my static content sites, CakePHP projects, or WordPress integrations.

  • http://blog.davebouwman.com Dave Bouwman

    Great to see more people adopting the 3 monitor setup! At our company, 3 monitors is the default for a developer, and we custom build each workstation. We keep it pretty simple – PC + Desk + Chair < $3000. By building our own workstations we get waaaaay better systems, and still have $$ left for great chairs (Hermal Miller Mirra). We are building another new workstation tomorrow, and here's (more or less) the part list (http://blog.davebouwman.com/ultimate-developer-rig-2009-edition) only change is a primary SSD and a faster quad core CPU.

    When compared to the cost of an employee (or what you charge per year as a freelancer) good gear is a no-brainer, for some reasons many people/companies cut corners, and it has huge impacts on projects and staff morale. If you take your career seriously but your employer does not, it may be time to move on ;-)

    Cheers,

    Dave

  • Erno

    Good article, but I think that list needs CI (continuous integration) computer/server. Looks like you code PHP and I don’t know do you write tests, but I have in many projects automatic builds and tests and I think that kick ass. When you commit something soon you will get email if you broke something. I feel save when I develope project that I know all the time that everything is working and I don’t have to test by hand each change what I make.

  • http://www.kennethvr.be Kenneth van Rumste

    You’re talking about: “Lack of desk space can be a big issue for some”…

    Perhaps, you can put your screens a bit more to the end of your desk. On your picture, it looks like you are using only half of your desk space. Talking about lack of space….
    Be sure to put your whole arm on the desk, ergonomically that is much better then only your wrist… And it should be less exhausting…

  • http://lewiswebdesign.com Joshua

    I second this. I’ve found standing keeps me more alert and focused while working. I do sit to write or sketch but that’s largely because of the height of my desk, if it were taller I’d probably stand all of the time. (my monitors and keyboard/mouse are on platforms)

  • Alan

    If this is going to be your first article for this website, now would be a good time to learn that the possessive “its” does not contain an apostrophe. it’s = it is.

  • http://www.cs.toronto.edu/~mmior Michael Mior

    Just another comment on the use of SVN. I used SVN before, but now I can’t stand not using distributed version control. I find something like Mercurial makes things a whole lot easier. You can host repositories ANYWHERE, work offline, and it’s so much easier to manage commits.

    Even better, if you’re a TortoiseSVN fan, there’s TortoiseHg! (http://tortoisehg.bitbucket.org)

  • http://blog.nihed.com nihed

    foods and drinks are also important :)

  • http://www.ericbieller.com Eric Bieller

    Actually what I was referring to is a lack of space to fit your three monitors. I prefer to have my monitors close to my eyes, not pushed to the back of the desk, but this is just my personal preference. I also don’t care to have my whole arm on the desk. It might not be economical but it is comfortable for me. Thanks for the input though!

  • lucifurious

    Now that you’ve cut your teeth on SVN, try Git. You’ll never look back.

  • http://www.ericbieller.com Eric Bieller

    Haven’t really tried the standing approach. Seems like it would have it’s positives and negatives but I do hear it is becoming more popular.

  • http://www.dangermoose.co.uk flashmac

    Nice write up, although first thought is that if you really do have your desk set up like that (3 monitors), then you need a much bigger desk! Having your keyboard that close to the edge of your desk is no good for your wrists (even though your chair has arm support) and you can only just about fit your mouse mat.

    Nice chair though :)

  • http://www.ericbieller.com Eric Bieller

    Thanks for the input.. like I said this is what is comfortable to me. I hate having my monitors at the back of the desk and I prefer to not have my wrist on the desk when using my mouse.. It might not be ergonomical but that is what has always been comfortable to me, especially when gaming.

  • http://www.ericbieller.com Eric Bieller

    FYI I meant ergonomical in that last reply in case you didn’t know ;)

  • http://www.ericbieller.com Eric

    Thanks for letting me know but the comments section is hardly the place to point something like this out. Just an FYI.

  • http://www.ericbieller.com Eric

    Hmm never used CI. I’ll have to check it out!

  • Rob Boerman

    Hi Eric,

    Nice article.
    Myself I am a Mac user since last year and never want to switch back. Everything just feels so much more efficient. Anyhow, that’s just personal I guess.

    The one thing that is a default part of my development computer is a virtual machine. I like my development machine quick and snappy, using my machine as web server and database server and all dependencies as well quickly clogs things up. When developing I always have a (windows or Linux, depending on the job) virtual machine open (parallels desktop or virtualbox) of which the web root is a shared folder with my host machine. When I alter a file I can I mediately see it through my virtual web server (on a private ip). At the start of a new project I clone my template virtual machine and can immediately start working.

    Keep up the good articles

  • Lilly

    Adding to that…. and going to the bathroom! There was an article here last week about how important it is to do that. It’s amazing to me how often people “hold it” and then end up messing up their health. And frequent breaks. Definitely frequent breaks. I use the “Pomodoro technique” to force me to take a break sometimes while writing, but have not tried it yet while developing.

  • Lilly

    Sorry… The article was on Smashing Magazine about health issues for developers.

  • yinyang78

    Nice, thanks for sharing!

  • http://www.mittensoftware.com Jim Mitten

    I prefer two computers with two monitors each. One of the computers is a laptop. I use Multiplicity (a software KVM switch) to allow the keyboard and mouse sharing. This setup allows you to personally multi-task when you are running a process that taxes your computer and take your work off-site. If you setup the the monitors and laptop on a platform that is raised about 9″ off your desk you have room to stash your papers and desk accessories.

  • Alex Snowdon-Darling

    Hi,

    A continuation of Rob B’s comments. What is the perfect setup for development with virtual machines?

    I’ve recently started a new job and have a fab new PC to go with it. But what would be the ideal setup?
    I’m thinking about installing VirtualBox to run a number of OSes, as I’d like to keep the base PC clean:
    1 – Win 7 pro for actual development with VS 2010
    2 – Server 2008 R2 for SQL Server 2008
    3 – Win XP as test environment

    Over the years of trying out new software, un/installing, updating etc my PC usually gets a little slow over time… but setting up a number of VMs could help…

    What do you think??
    p.s. Love the article…

  • Markus Andersen

    Dear god, I would resign if I was forced to work standing up all day. I just can’t do it, I get back and leg problems and now I feel really old. Thanks, Bieller!

  • JC

    I agree that as a freelancer 3 monitor array can be “perfect”

    I’m not a Mac Person MySelf, But I DO however appreciate the effectiveness of a Large Display such as the Mac’s

    http://www.apple.com/imac/design.html

    It really doesn’t work for me since I just HAVE to have everything maximized… it’s the way my brain works… and that display Definetly is more distracting than helpful to me. BUT it could work for you.

    Some other techines vary in how do you Order your displays instead of having active monitors. I usually use 2 monitors (source code -> display) and use tools to have “n” instances of desktops (like in Linux)

    Great articles BTW!

  • http://lannenterprises.com Rob

    CI is nice with CruiseControl.Net, I use that with VisualSVN, NUnit and NCover – love them. I can show you some CI pointers to get set up quickly as well.

    (http://confluence.public.thoughtworks.org/display/CCNET/Download)
    (http://www.visualsvn.com/)

  • http://www.ericbieller.com Eric Bieller

    Thanks for sharing!

    Sounds like a cool solution. My setup used to be kinda similar when I had a separate box at my home that I used as my project web server. I ended up just moving the server back to my local machine though. Not too sure why. Perhaps I need a web based solution so I don’t actually have the box sitting at my house taking up space.. or maybe I just need a smaller box ;).. VM could work but I haven’t really tried it..

    I really think the solution for me is to build a new PC for gaming and just convert my current setup to my development environment only.

  • http://www.ericbieller.com Eric Bieller

    I think setting up VMs is a good idea. The main issue is keeping your work machine separate from machines meant for other tasks and I think it works for that.

    I prefer to just have a separate box for my gaming/entertainment and for development. My development box would likely have a dual boot Win7/WinXP for testing though.

  • http://www.flukywotsit.net wotsit

    Your article is interesting but I find portability a major factor so I would alter your setup or atleast augment it to have a external hard disk with most of your applications/or portable alternatives on it along with a checked out copy of your source code, and perhaps in the case of your php development setting up a ubuntu boot disk/drive with all the required apps installed ready. And I would have all developers using oversided laptops, so that they can work anywhere, even when traveling.

    I would also suggest for any company (single developer or otherwise) that having a server(s) that is used for svn, Continious intergration, file server, etc that is backed up nightly as essential, or if a individual is setting up multiple virtual machines that a virtual machine server is utilised so that there development machine is do not suffer any loss in speed.

    As for applications though you say you have one IDE installed I would install a couple and have notepad++ is essential. I would also ensure that additional addons are also isntalled unit testing frame works etc. oh and it might be a idea to discuss how you set stuff up in svn, I like to have a folder struckre that include SDK where all reference files are located (e.g. jquery, mootools, etc), that way anyone checking out can just build.

    and another thing I would highly recomend is tiddlywiki to hold notes regarding a project your working on, this would be in addition to the corporate wide wiki that would also have been setup.

    And the final bit of essential kit in my mind is easy access coca cola, irn bru and coffee (other soft drinks are avaliable.)

    Oh by the way did you debate with yourself over which keyboard go get qwerty devorkian?

    Cheers

    Ian

  • http://www.ericbieller.com Eric Bieller

    Interesting thoughts. Well since I am the sole developer on most of my projects, portability isn’t a major factor. Generally I just access the same project repo from my laptop if I need to work on the go.

    I will have to look into CI as I am not too familiar with it. My SVN setup is rather simple and meets my needs thus far.

    I really don’t see the need for having multiple IDEs installed, unless you are just using Notepad++ as a replacement for Notepad. Komodo has nearly everything I need so far anyways.

    I’m not much of a soda or coffee drinker so I didn’t really include anything like that in my article. It is nice to have snacks handy though or maybe some ice cold water!

    Thanks again for the input!

  • JJ

    I didn’t find the article as interesting as I had hoped from the title, but, oh well…

    Regarding ergonomic keyboards, I highly recommend the Kinesis freestyle (the Maxim is über-geek and pretty expensive). It’s almost like a normal keyboard, but it makes a *huge* difference in your wrists, arms, shoulders and neck.
    Right now I am typing on my laptop’s keyboard and I can feel the strain on my hands, which isn’t there when using the external keyboard.

    If you need to look at the keys when you type, it’s worth spending some time getting used to the keyboard and practicing.

    People look at it and think it’s weird. If you spend time on a keyboard professionally, there’s no question you need a good keyboard. Unfortunately, due to patents, you cannot find any alternatives to the Kinesis freestyle (yes, there are other so-call ergonomic keyboards, but some just aren’t so, and the other ones, well, have a different shape). And, although I like it, the quality of the materials and its thinness could be improved…

    PS: No, I don’t get paid by Kinesis ;-) Although they are fixing my keyboard for free even after the warranty expired :)

  • http://www.ericbieller.com Eric Bieller

    That’s unfortunate but thanks a lot for the input! I’ll have to take a look at the Kinesis..

  • http://www.ericbieller.com Eric Bieller

    That’s unfortunate but thanks a lot for the input! I’ll have to take a look at the Kinesis..

  • http://www.craneergo.com/ ergonomic laptop stand

    This laptop stand is something that is going to really help your productivity and your work while you are on your laptop. You will never find a better one, and even though it’s made by Apple, it will work for personal computers as well.

Badges for Treehouse

Treehouse

Learn iOS, Rails, CSS3, jQuery, Node.js, HTML5, UX and more in less than 8 minutes per day. New videos added regularly. Sign up today and get a free Web Design Toolkit.

Ads Via The Deck

Think Vitamin Radio
Episode #34: Amazon Fire and Responsive Roundtable

Check out our bi-weekly radio show. Covering the hot topics on the web.

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Download Podcast as mp3

Advisory Board

The Think Vitamin Advisory Board in place make sure that you receive the best content possible.