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?