Reducing development friction

Diomidis Spinellis gave an insightful list of ways to reduce software development friction in the Tools of the Trade podcast episode The Frictionless Development Environment Scorecard.

The first item on his list grabbed my attention:

Are my personal settings and preferences consistent on all the computers I’m using? Are they stored under version control? Can I install them on a new computer using a single command?

Listening to the podcast provoked me to finally sync my .emacs files on all my computers so that I now have the exact same file on all computers, maintained under version control. (Xah Lee gave me some sample code for creating the branching logic I needed for a few differences between Windows and Linux.)

Here is a small sample of questions from the podcast.

  • Are my files getting backed up? Is the backup tested, accessible, off site, in multiple media, with regularly retained copies?
  • Can I use the same editor for all my code and documentation editing tasks?
  • Can I get context-sensitive help and code completion?
  • Can I search recursively down a directory tree? Ignoring case? Only in a subset of files? With a regular expression?
  • Can I open a shell from the graphical file explorer and vice versa?
  • Can I quickly build the application I’m working on after a change? Can I test the application with a single command?
  • Can I automatically check my code for common or tricky errors? Are these checks run by default? Are they clean?
  • Does my application log its actions?
  • Is documentation for the tools and APIs I use readily available? Is it hyperlinked? Available offline?

The last question from the podcast summarizes the whole list:

Do I regularly evaluate my development environment to pinpoint and eliminate the sources of friction? Do I help my colleagues do the same?

4 thoughts on “Reducing development friction

  1. “Is the documentation for the tools and APIs I use readily available? Is it hyperlinked? Available offline?”

    I wish other language communities would learn from the Racket language developers to do this well. Sure, most docs have some hyperlinks, but with Racket every time a function is mentioned, or used in an example, you can click on it and be taken to its documentation.

  2. I keep my .emacs and whatever non-standard packages I need in a git repository. I should probably use git submodules to include whatever packages are themselves available under git source control, but I haven’t gotten around to that yet. When I recently set up a new xubuntu VM it took three steps to getting it the way I like: installing emacs, cloning the repository, and installing the slashed-zero variant of Droid Sans Mono.

    That made me happy.

  3. sure wish there was a transcript.
    especially with a huge list like this, audio is a poor format.

  4. I found the podcast in youtube, and looked at google’s transcription… I guess it might be better than nothing, but his accent really makes a mess of it.

Comments are closed.