Productivity Tips & Tricks

October 26, 2008 18:05
By and large, software development is about making people more productive. Take away all this red tape stuff, all paperwork, improve communication, automate everything that can be automated, accelerate everything that can be accelerated and ameliorate everything that can be ameliorated.

And developers are they guys doing all that.

So what?

The cobbler's children go barefoot!

Obviously it's not like developers don't have productivity tools - there are plenty. The home truth is that only a fraction of people use them, and even those who use do not utilize  all the horsepower. So below are some well-known ideas, along with the ones your humble correspondent considers as a cream of day-to-day productivity tricks.

Visual Studio cream.

Let alone code snippets as well as the snippets you've created yourlself, shortcuts and macros
[1]. And let alone conditional breakpoints, breaking on specific exceptions, using $exception in a watch window and creating object ids [2].  Most likely, you know all the above things - but just in case there's something you need to revisit, it's in the footnotes.

And now The Cream: Go To File feature. As simple as it seems. You hit Ctrl+/ and type in "of" (that is, a shortcut for "open file" but you can use either) followed by the name of any file in the solution.

This feature is a killer timesaver, as soon as you don't have to go through Solution Explorer to pick up the file you need. If you have Resharper installed, it distinguishes between going to a file and going to a type, but the rest is pretty much the same, probably with a little bit nicer eye candy.

Just map those two Resharper actions to Ctrl+G,T and Ctrl+G,F and enjoy the productivity boost. Separation of files and types helps if you want to find a type and thus don't want the dropdown to show, say, resx files that are named like the type you need. 

TFS cream.

Let alone customizing the diff/merge tools [3], let alone the "get latest on checkout" thing [4] and let alone deleting the files locally while letting the TFS know you've done that [5].

And now The Cream: bissubscribe. A command line tool that allows you to get notified about events that happen on the TFS side of things. It brings extreme power in terms of awareness: something that should never, ever, be underestimated. Say, you can configure it to receive an email every time someone submits a changeset in a particlular part of the codebase:

    /eventType CheckinEvent 
    /deliveryType EmailHtml
    /server http://tfsserver:port
    /filter "'Artifacts/Artifact[starts-with(@ServerItem, "$/Foo/Trunk/Source")]' <> null" 
    /tag trunk-checkins

In the example above the email is sent if anything has been checked in to your Trunk. This may be practical if the team is rather small and you want to keep tabs on what areas other people are working at the moment. Alternatively, you may want to receive an email when someone submits a checkin that is violating a policy (say, a checkin that is not attached to a work item). Or, you can set up a notification if a new work item has been assigned to you.

Collaboration cream.  

This is a tough one, since collaboration standards differ and different  tools are used in different organizations. It starts with innocent conversations and emails and (as the organization grows) ends up with heavy-footed document management and gobbledygook.

However, if you are just starting this relay race and happen to use Skype as a primary collaboration tool, it's a decent choice. No matter whether the team is distributed across different rooms or across different continents, collaboration within such a team becomes an issue. Emails are too slow and, to be honest, you often don't really need  them - instead, you need instant messaging. And there is a cool feature in Skype that allows you to add people to a chat... nothing that exciting so far, eh? And now The Cream: bookmark the chat so that you can get on with those guys at any time in the future.   

And what about you?

Do you have any specific tricks (even mentioned here) that you consider as a cream of your productivity? Can you think about something that makes you extremely, flabbergastingly efficient? Any tools or, conversely, pen and paper? Feel free to share them here!



[1] - There are completion snippets for "prop", "foreach", etc and surrounding ones for "try-catch", etc - and please don't forget Resharper has its own Templates, and it's somewhat easier to introduce new snippets with Resharper, rather than alter XML in Visual Studio. Next, shortcuts are quick commenting and uncommenting as per Ctrl+K,C and Ctrl+K,U as well as quick "go to definition" stuff as per F12 and so on and so forth. Next, VS macros is an extremely great feature I already mentioned in this blog, although a lot of that functionality can be done with Resharper templates.

[2] - Conditional breakpoints allows you to break on a certain condition only, $exception is a hidden variable that contains current exception details, and creating object ids allows you to easily track different instances of the same type.

[3] - The original slightly ascetic diff/merge tool can be substituted with something more usable (Araxis Merge, anyone?). 

[4] - You can teach Visual Studio to get latest version when you do a check-out (you have to use TFS 2008 or later - and before cursing MS for that, please note that this feature is not that easy as it looks like).

[5] - In order to delete source controlled files locally, please don't just hit "delete". Instead, it's better to get their first revision:  in this case TFS will know that you're not keeping the files anymore. 


Comments are closed