Off Topic, Random but serious

Multiple monitors – a productivity tool? I think so…

Jeff Atwood (of Coding Horror) has posted about a study recently completed by the University of Utah which has researched the productivity gains by using various monitor configurations, including different sizes and multiple monitor set-ups. You can read his post here: http://www.codinghorror.com/blog/archives/001076.html

I too am a long time proponent of multiple monitor usage. Over the years I’ve had various configurations, my favourite being a centre 24 inch screen surrounded by to 20 inch screens… I found this to be a rather pleasant setup.

One thing that I think counts a lot toward a users enjoyment and productivity whilst using a multiple monitor rig is their previous experience of using such a set up. Most users who are “first timers” on a muti-monitor system have a rather difficult time coming to grips with some of basics like:

  • Windows pop up on the other monitor… user thinks computer is being dumb and re-opens/smash clicks icon
  • Where is the goddam mouse (I must admit this happens to me sometimes still)
  • Task bar isn’t where it’s supposed to be when working on a secondary display (see below for fix). Same for the clock and Start button.
  • Efficiently moving windows between screens (also see below for solution)

All these things are learned over time. In short I think it would be very difficult to reflect (in a University study for example) the gains made from switching from one to multiple screens – a user has to learn how to make the most out of the multiple set up before any real gains are to be reflected.

In my general experience I have found that most users will take a number of weeks to get really used to the extra screens, and even longer to take full advantage of them. If you where to study the any productivity gains, you would need to benchmark at the beginning and end of a lengthy period and take the following into account:

  • It’s a long test (weeks and months) so the user is going to get better at their work over time.
  • Testing has to be focused around general productivity – how do you measure gains made because the user isn’t concentrating so hard on window management (a pain in the bum for sure) – i.e. the user may be more relaxed because of less clutter, making them less stressed and more efficient.
  • People get gains from using a larger single display probably because they are used to using a single display to start with – perhaps re-test a group starting from smaller multiple displays and move to larger multiple displays… assuming they where already good at multiple displays to begin with (this group of subjects would be hard to find I imagine).

The other thing that I think is important to consider is perhaps MSFT didn’t build very good multiple monitor support into the OS – sure it is very simple to set up and use multiple monitors, but is it really the best experience. Maybe the test would be a lot different if the users had access to something like Ultramon…

Ultramon allows things like: drag a maximised window between screens without first restoring it, and it adds a task bar per screen, so you can see the apps that are running on a particular screen on the taskbar for that screen – brilliant! Ultramon is not free.

To summarise I don’t think it’s a fair judgement that users only improve when using multiple monitors by 44%. I also don’t think its fair to say that software developers only need one screen to “code” in… I always have a piece of Xml or some string from a watch in the other window. Also alternative monitors are great for all the little extras… we all have Skype, MSN, Email, Twitter etc to think about – there is a lot of communication going on, most of the time enough to take up an entire screen!

Visual Studio

PowerCommands for Visual Studio 2008

PowerCommands adds some great functionality to Visual Studio 2008 – I strongly recommend you install this. Navigate to http://code.msdn.microsoft.com/PowerCommands and click on the Releases tab to download. The Collapse Projects command is worth the download alone!

As a Readify colleague pointed out it’s very similar in functionality to CoolCommands for Visual Studio 2005 (http://geekswithblogs.net/brians/archive/2007/03/04/107922.aspx).

PowerCommands Feature List

(This is ripped from the PowerCommands MSDN site)

Collapse Projects
This command collapses a project or projects in the Solution Explorer starting from the root selected node. Collapsing a project can increase the readability of the solution. This command can be executed from three different places: solution, solution folders and project nodes respectively.

Copy Class
This command copies a selected class entire content to the clipboard, renaming the class. This command is normally followed by a Paste Class command, which renames the class to avoid a compilation error. It can be executed from a single project item or a project item with dependent sub items.

Paste Class
This command pastes a class entire content from the clipboard, renaming the class to avoid a compilation error. This command is normally preceded by a Copy Class command. It can be executed from a project or folder node.

Copy References
This command copies a reference or set of references to the clipboard. It can be executed from the references node, a single reference node or set of reference nodes.

Paste References
This command pastes a reference or set of references from the clipboard. It can be executed from different places depending on the type of project. For CSharp projects it can be executed from the references node. For Visual Basic and Website projects it can be executed from the project node.

Copy As Project Reference
This command copies a project as a project reference to the clipboard. It can be executed from a project node.

Edit Project File
This command opens the MSBuild project file for a selected project inside Visual Studio. It combines the existing Unload Project and Edit Project commands.

Open Containing Folder
This command opens a Windows Explorer window pointing to the physical path of a selected item. It can be executed from a project item node

Open Command Prompt
This command opens a Visual Studio command prompt pointing to the physical path of a selected item. It can be executed from four different places: solution, project, folder and project item nodes respectively.

Unload Projects
This command unloads all projects in a solution. This can be useful in MSBuild scenarios when multiple projects are being edited. This command can be executed from the solution node.

Reload Projects
This command reloads all unloaded projects in a solution. It can be executed from the solution node.

Remove and Sort Usings
This command removes and sort using statements for all classes given a project. It is useful, for example, in removing or organizing the using statements generated by a wizard. This command can be executed from a solution node or a single project node.
Note: The Remove and Sort Usings feature is only available for C# projects since the C# editor implements this feature as a command in the C# editor (which this command calls for each .cs file in the project).

Extract Constant
This command creates a constant definition statement for a selected text. Extracting a constant effectively names a literal value, which can improve readability. This command can be executed from the code editor by right-clicking selected text.

Clear Recent File List
This command clears the Visual Studio recent file list. The Clear Recent File List command brings up a Clear File dialog which allows any or all recent files to be selected.

Clear Recent Project List
This command clears the Visual Studio recent project list. The Clear Recent Project List command brings up a Clear File dialog which allows any or all recent projects to be selected.

Transform Templates
This command executes a custom tool with associated text templates items. It can be executed from a DSL project node or a DSL folder node.

Close All
This command closes all documents. It can be executed from a document tab.