Code Aesthetics

Programming, agility, technical stuff ...

The Productive Developer

This post lists useful tools and habits for developers in order to become more productive. It is based on my experience and some information I extracted from the book "The Productive Programmer". I try to keep the list short and because I am a .NET guy it will be coined a little bit more to the .NET platform. Still most of the information will be useful for other developers too.

The command line is where we come from ...

  • Typing things and using keyboard shortcuts is faster than using the mouse, because you can keep your hands on the keyboard. Therefore: Learn your shortcuts!
  • Have a decent command line at hand. The *nix guys have their bash and other consoles to use.  I really like GUAKE which integrates the shell right into your desktop environment. By hitting F12 it comes down like the in-game console of a FPS (such as Quake for example), another F12 and it is gone again. For windows I have found something similar: Windows Quake Console. I configured it to use Windows Powershell.

IDE

Visual Studio 2010 supports extensions, use them! Most useful extensions and add-ins:

  • Productivity Tools
  • VS Commands
  • Power Commands
  • DevExpress Tools
  • Nuget Package Manager
  • Test-Driven .NET

Clipboard

How often do you find yourself copying over some stuff from one program to the other. While copy pasting code in general might be considered as a code smell, you might want to copy other things than code from one document to the other. The regular clipboard is highly ineffective especially if you need to copy more than one passage but not all. Normally you end up switching between the documents, pressing CTRL+C and CTRL+V. A better way of doing it is to install a multi-clipboard utility such as Ditto. You can first copy all the passages from the source document and go to the target document and insert the content where you need it.

Libraries

Use existing frameworks and libraries where it makes sense. Do not reinvent the wheel. Do no use a framework just for the sake of using a new technology.

Communication Channels

  • Try to maximize the focus and minimize all possible sources of disturbance. Put your instant messengers to "Do not disturb".
  • Try to check E-Mails at specific times ( e.g. in the morning + after lunch)
  • Get some noise reduction head phones if you work in a loud office :)
  • Less disturbance means that it is easier to get into the "Flow" and hence more productivity
  • Be responsive on those few communication channels you have left

Multi-Tasking

Multi-Tasking is a myth. I would actually call it "Rapid Task-Switching". Minimizing those switches most certainly results in a productivity gain: "Stop starting, start finishing".

This list is rather incomplete, I will update it from time to time ...

Johannes Täuber

I am a software architect and agility advocate. I am interested in all technologies out there and like to discuss options. My platform of choice is the .NET framework.