I never thought I’d say it, but I’ve put all my solo projects on issue tracking and version control. I used to think it was overkill, but after working enough projects these last few years I’ve definitely changed my mind!
I revisited a few projects last year that had been inactive for months. It was almost impossible to remember where I had left off or what I had been trying out previously. Sometimes I’d remember what I was doing but not why, other times vice versa. Having my projects now on issue tracking has saved me from this “project amnesia!”
I’m also finding that issue tracking enhances discipline in my coding. Before, I often used to just make improvements wherever and whenever I saw opportunities. That sort of development exposed projects to my perfectionist streaks, and I often had to trim my billable time afterwards because of all the “gold-plating.” Issue tracking has put me back on “the straight and narrow” — do what is required and no more. With large, complex enhancements, issue tracking’s also enabled me to organize development into logical phases/components, so that I could focus better when coding.
With a couple projects last year, I had major enhancements to implement across all the application tiers. It was a real headache working on a new feature over several sessions, only to have it break and not remember exactly what changes to drop. Worse yet, I’d make guesses at what to drop and end up dropping too much, sometimes breaking other features!
Version control was my aspirin. Now with my project version-controlled, there’s no more racking my brain about what changes broke what, because I can selectively roll-back changes to troubleshoot issues, or if need be, roll back a whole range of changes for a phase in case of a big failure.
What’s more, version control gives me tagging and branching, which I’ve come to LOVE! It’s very nice that I can create a development branch and develop a new feature without affecting the trunk. Before, I used to make a separate copy of the site, develop the new feature, then manually copy-n-paste my new feature back to the original site — NOT very reliable! Now, I develop a new feature in a branch while keeping it synchronized with trunk, then when the new feature is finished I just re-integrate the development branch back into trunk. Badda bing, badda boom!
Yep, I used to think issue tracking and version control were for the big development houses, but no more! They help me immensely with my projects, even the smallest ones.
Interested in giving them a try? I’m using Trac for issue-tracking, and Subversion for version control, and both are free and open-source.