2 years ago
by thashepherd Report
personal software engineering
Many times have I started a project thinking that "this will be a low-key, agile effort" and made a certain amount of progress. Nearly all of the time, I end up making changes that "break my build" - whether that means my program doesn't run or my mod makes the game crash to desktop. Inevitably, I wish that I had followed one or more of these tips.
- Back up your work. The easiest way to do that is often to mirror your project's folder structure on the cloud. Since I'm a Windows user, I've had success setting my "My Documents" directory to the same directory as my Google Drive folder. It's best to back up your files such that the default save directory of most of your tools is backed up automatically.
- Version your work. To technology professionals, a synonym would be "source control". The three most common source control mechanisms are SVN, Git, and Mercurial; you will also need to select a client like TortoiseSVN. My personal tool is Github; bonus points if your source control solution is cloud-based. What source control does is save a record of all the changes you make to your project. If the changes you make are text files, it will show you the alterations you make line-by-line. If you add or modify files of other types, source control will track that as well.
- Commit working builds. There are two halves to this; one is that you should commit as often as possible while you are being productive. The other half is that you should only commit after ensuring that your change works. This means that no matter what, restoring to a previous version of your project will restore you to a working version.
- Save releases. Ensure that you branch your project after each release, or identify the commit the release is based on, or otherwise store the exact project in the form it is released in. This is invaluable for troubleshooting for your users, and even remembering what to put in your changelog (which should be easy to construct if you follow the tip above).
- Scope releases. Before you start work, list exactly what features you want to include in the next release of your project. This will give you a target to work towards and a list of features to promise to your fans.
- Use a planning tool. My personal choice is Trello. Planning tools allow you to better manage the implementation of your project. Since most mods are personal unpaid efforts, we're not really talking about scheduling or estimation here. Instead, they give you a place to spec out features, leave notes, and create task lists.
These tips, especially the last, might sound excessively "stuffy" or unnecessary. All I wish to say is that I have wished I followed them far to often, and not needed them far too little, not to suggest them.