Situation

You're tracking work in an issue tracking system, such as Redmine, FogBugz or Trello. While working on an issue, you want to save notes or supporting files on your computer.

Approach

Create one directory for each issue you're working on, named like this:

<lowercase area code><issue number>-<brief description>

Examples

gt1773-purchase-status
gt1816-threat-modelling
gt1822-stream-csv
gt1824-rake-add-schema
gt1835-incomplete-deletion
gt1841-fast-json
gt1843-search-bar-shortcut

Here, ‘gt’ indicates that these are related to cards on the GuidedTrack Trello board. The number is the Trello card number.

Rationale

It's a tiny moment of discipline that allows you to be sloppy the rest of the time. The discipline is that you have to create the directory. The sloppiness is that thereafter you don't have to think where to put a file – it's obvious – and how to name it – it doesn't matter, since the directory provides enough context.

Further advantages:

  • Keeping one workspace per issue makes task switching easier. Compare with the situation where you have one workspace for everything: Either you cause friction by mixing everything up. Or you have high switching costs because you have to clean up everytime.
  • When you want to look back, it's easy to find all the information related to a certain issue.
  • The brief description allows you to know what the directory is about without having to look up the number in the issue tracking system. I used to name the directories only with the issue number, but then I was faced with an ls output like 4725 4875 4878 4955 4985 and after two months I had no idea what this was about.
  • The area code makes the directory name prefix globally unique. Now you can type ‘gt1816’ into your desktop search tool and it produces the exactly right result.
  • The area code being lowercase makes it easy to type. Pedantic as I am, I used to use uppercase, but then I had to hold the Shift key while typing.

See also

Git branch naming scheme