(Original creator: eknochs)

I’ve been upgrading some PCs at home recently, and one of the topics we’ve been discussing around the family is what kind of monitor(s) would suit everyone’s needs.  It was logic to extend that study to what kind monitor / display arrangement suits developers.

I’ve come across this kind of discussion in various blogs, and one thing that has struck me is that there is little distinction between home and office requirements.  This is probably down to both the prevalence of contract workers, as well as a shift toward some portion of time working from home.  Indeed, with the availability of some interesting hardware devices, even travelling developers, i.e. laptop users, also have many options available to them (i.e. when not actually travelling).

So, the main choices facing developers are … how many screens do I need, and how big should they be?  It ends up being quite personal, though I’ll try to discuss some influencing factors.  It’s a good idea to have a “home” screen, i.e. where you want to be continually updated with emails or some web content.  You would typically arrange a few application windows to fit the screen.  Hopefully these windows’ co-ordinates can be saved by these applications.  Essentially this is the concept behind Windows 8 live tiles.

For actual development I’d suggest 2 screens, one for source code editing and the other for testing / troubleshooting.  You might justify extra screens if you need two different source code editors (e.g. for polyglot development), or if the deployment environment is complex and possibly deployed over additional servers.  Screen size could be driven by budget, aesthetics or just … how good is your eyesight!  If utilising the screens for gaming as well, then I’m told refresh rate is very important.

Assuming your set-up has one workstation controlling everything, all of your screens will be extending the desktop.  Windows 8 has useful new features to support extended desktops including extending the wallpaper and the taskbar.  At last, there is somewhere to see those well stitched panorama photos that you created when you were exploring your new camera’s features.  You can also choose completely different wallpaper on each screen.

If you are lucky enough to have a permanent workstation set up, then you have maximum hardware flexibility, and only your budget is a limiting factor.  The main advantage over laptop users is that you can make sure that all screens have the same resolution.  This is handy if you move windows around between screens as they will always maximise to the correct size.

Laptop users have to make some compromises as it’s assumed that at some time you will run some of those development applications that would normally exploit multiple screens, away from your normal environment, i.e. run them in one screen.  Sometimes you can borrow one foreign screen, but it won’t be the same as the home environment.  So here’s a tip that I’ve learnt from hard experience: always drag all windows back to the laptop screen before shutting the application down.  Disconnecting the extra screen whilst your program is still running has lead me down futile troubleshooting paths, even re-installing software, all because I though the program was broken / corrupted etc., when it was just waiting for input to a secondary window that was displaying where the second monitor used to be displaying that window.

1 Comment

  1. There is a point in this where the utility of the development interface comes into play. Where the development environment allows for drilling into the subroutine and keeps track of previous positions, exploring the function of a procedure and coming back to where one started is easy enough one can manage with one screen to do it on. Where this facility doesn't exist, one must therefore have at least one extra vdu as a 'reference' or lookup screen, allowing the current task to have focus whilst referencing the required extra subroutines. With Uniface, I find about 5 IDFs open at any one time is probably required, and balance these between two vdus.