I think one of the most important things with creating new computer systems is the names for things. The thing that prompted me to write this is that I've just opened a directory called "datafiles". That name was decided long ago, before I came along. I'm not quite happy with it because it's too general. Most of the files in the whole directory tree are datafiles, not just those in this directory. The trouble is that to change the name I would have to change a whole lot of things - not just programs and macros, but procedures as well. And people would struggle for months and years to come to remember where what they wanted had moved to. Several years ago Blackbaud did a major change to Raiser's Edge moving the interface to a more Windows 95 style away from a Windows 3.1 style of interface. One of the things they did was to move the setting up of usernames and passwords from the "configuration" section to the "administration" section. I still have to pause for a second or two to work out where I'm going when I want to add a user.
When I worked for Logica many years ago I worked on a project which had a number of subsystems, and each of those had further sub-subsystems. The subsystems had three letter abbreviations and the sub-subsystems a further three letters. So, for example, IOSHAN was the HANdler part of the Input Output Subsystem.
The next project I worked on used the same idea and we thought carefully about the names before we started. And of course variable and routine names followed this convention.
In the rush to get going it's easy to stop and not name things carefully, but it reduces frustration if you think about it from the start.