As a busy software agency working on multiple projects at once, we have lots of lists of things to take care of at any given time. Each project has it’s own requirements, enhancements, and (sometimes unfortunately) bugs that we need to track to completion. Building custom software for mid-sized businesses necessitates that these items be managed properly, and sticky notes just isn’t quite good enough.
Over the years we’ve experimented with many different task trackers. Some are better known than others, and we’ve even built our own task trackers. The list of trackers tried is pretty exhaustive, including:
- Team Foundation Server (TFS)
- Pivotal Tracker
- Several home-grown creations
Within the past year we moved all of our source code into GitHub. As a bonus to providing source repositories, GitHub also includes an issue tracker. At first we used it for bugs only. We quickly discovered that GitHub allows you to close an issue at the time you commit code to the repository. Not only does that simplify life, it gives you two-way traceability, from task to code and from code to task, without any real additional effort. That’s a powerful feature for understanding why code is changing, or to determine what changed due to an issue. Some organizations - those with CMMI status – require this level of traceability.
Once we got familiar enough with GitHub Issues for bugs, it was natural to enter other work items as well. Requirements can just as easily be entered, as can operational tasks, test cases, and various to-to items. Issues can be grouped into Milestones and milestones can have due dates.
GitHub Issues isn’t the most powerful tracker out there, but what we’ve learned is that the features we initially desire out of a tracker are not the features that we actually use. We’ve always wanted a super flexible tracker that’s completely customizable and notifies you of every little thing. But the reality is that once we set these systems up, it’s just too much. We don’t want notifications of every little thing, and we don’t want to spend any more time than absolutely necessary in our tracker. When we sit down to do work we already generally know what needs to be done, and we just need a tracker to ensure we don’t forgot. Most trackers allow sophisticated tracking and customizations, and if you invest enough time and training into learning the tool then it can do cartwheels for you. But we don’t want to invest time and energy into tracking tasks; we’d rather spend our time actually implementing value for our clients. What we really want is a "just in time" tracker...one that provides just enough sophistication to get the job done, and provides little else.
GitHub Issues give us just enough ability to track tasks, assign them to team members, and group tasks in meaningful ways. Although you may think you want or need a lot of customization from your tracker, chances are you really don’t.
We now use GitHub Issues exclusively for all of our projects.