Key features
In the business of developing software, we usually work with many people concurrently and interactively. This context has peculiarities which make some tools more appropriate than others.
Some of the key features in this context are:
- Tasks are not static: Custom software development is more like driving on the highway than riding a train. Task definitions are more like the rails that keep you from going off the road than the rails that keep you exactly on track. As the software develops, clients get new ideas and requirements change.
- Deadlines: Again, guard rails. Being able to see what tasks are most urgent is helpful when working on many things for many bosses.
- Discussion is important: Each task begins as an intangible; then ideas and specifics develop and evolve. They are critiqued and reviewed. All mutations of the original idea should be tracked, archived, searchable and associated with related work items.
- Tasks relate: It’s not at all uncommon to be asked to do follow-up work for a task that was completed months earlier. All of the previous information about the task is still relevant and provides an excellent refresher while moving into the new phase. It is important to be able to relate new work items to the old/completed work items.
- SCM (source code/control management) integration: All the code we write is tracked through a system that tells us what has changed in each version of a file. Files are “checked in” or “committed” when they’re working properly, or when we want to save some work. It’s tremendously helpful to be able to include a task identifier for committed work that can later be searched on to see what code changes relate to a work item or feature.
- Status at a glance: From a management perspective this feature is critical. Who is working on what? Who is ahead of schedule, who’s behind? What deadlines are closest? Etc.
- Clients: Multiple clients have multiple projects, each of which involves multiple tasks. We need to be able to provide access to all projects at all levels.
- Notifications: In order to have running discussions related to tasks, it is necessary to be able to send/receive notifications when a comment is posted, a new task is created, etc. This needs to be configurable on a user-by user basis.
- Team structure: When working in a team it is helpful to be able to define different roles and responsibilities which can be integrated into a workflow. “Lead Developer” and “Manager” would be two key roles. It is not necessary for every person to have a role. Only certain key responsibilities need to be assignable through some sort of role structure.
- Triage: The task tracking system is a conduit for communication which allows you to see concretely the intangible element of progress on a project, one task at a time. The first step in measuring progress is defining the task. Certain team members are assigned the responsibility for “triaging” new tasks, making sure they are clearly defined and that expectations are properly calibrated on both the client and developer sides before work begins.
- Invoicing: The ability to generate descriptive invoices from timesheets is essential.
Types of information
Some pieces of information are like signposts, staying rooted in place and guiding traffic around them. A wiki is the right tool for this type of information.
Some are like particles of magical, formless, floating pixie dust. A task tracker is the right tool to track this type of information. The key notion here is that progress can be quantified.
Some are the anonymous and non-descript traffic around the signposts. This is typically activity like people asking questions about how a feature works or asking for help solving a particular problem, configuring a system etc. This is “front-office” activity. It is questions asked of support staff as opposed to requests for features of or assigning work to developers. A forum is the right tool for tracking this type of information.
The lifecycle of the system goes like this:
- A person asks a question in a forum.
- Discussion ensues.
- The discussion outlines a feature that should go into a subsequent release.
- Tasks are created and related to the forum discussion. Features are described. Timelines are defined.
- Work begins developing the feature.
- Discussions related to the development process are tracked using the task tracker.
- Releases are issued.
- Just before a release becomes final, the completed feature is documented in the wiki.
- The new feature is released.
- People ask questions in the forum
Wash … rinse … repeat. I’ve left out the whole QA process for the sake of brevity. You can probably get a feel for how that might work for you, given the tools and types of information I’ve described.
Comparing the systems.
Now that the context is defined, how might various tools meet your needs?
In our experience, we have found it rare that a system satisfies all of the needs just described. Some systems are better for companies which develop a single software product (i.e. no support for multiple clients or invoicing). Some systems integrate the magic triad; forum, task tracker and wiki. Other systems don’t. Some systems license by the user, and are therefore expensive. Some systems are easy to install and use. Other systems require a lot of maintenance. There are many factors to consider.
Two main types of task trackers
Task trackers usually fall into one of two categories; “todo list” style or “urgency/priority/severity/percent-complete” (UPSPC) style, for lack of better names.
Todo-list trackers are loosely structured. They are geared toward small-scale and less-complex projects. Some people would argue that their simplicity makes them even more powerful than more structured alternatives. This is an arguable contention when viewed in general, but when discussed in the context of a specific task, the choice usually becomes clear. They are not the right choice for projects involving multiple contributors or management assignments.
UPSPC trackers usually enable developers to prioritize tasks. If this sort of system is used, it is critical that users understand the difference between “urgency,” “priority,” and “severity.” Even when they are understood, tasks are often mis-categorized.
Our Faves
Instead of exhaustively evaluating every possible system, we will give you what we consider to be the best of each type of tracker.
Jira (UPSPC style)
Product home page:
Jira
Made by:
Atlassian
Pros
- Well engineered features, such as a killer work log which allows you to easily track time as a developer, and to monitor and manage time spent by the rest of the team. Atlassian even offers a hosted integrated platform, called Jira Studio, which combines their products as a hosted service. This is a powerhouse package.
- Free licensing to open-source projects. This makes it a popular tool for open source java projects (particularly those centered around the products from Codehaus it seems).
- Available either to download and install or as a hosted service.
- Structured sensibly. It is integrated nicely with Confluence (their wiki product) and Fisheye (their source control visualization product). It has great features and macros, customization capabilities, and all sorts of other things.
- It is fantastic for a company building software products for sale.
Cons:
- Doesn’t well support tracking work for multiple clients.
- Doesn’t integrate well with invoicing systems like QuickBooks, Freshbooks, or Blinksale.
- Expensive. Commercial licensing is done on a user and feature basis. It is written as a J2EE application, and therefore should have a dedicated box for hosting.
- It is not great for a company building software for other people. As already noted, it doesn’t have the ability to easily integrate the needs of multiple clients.
Basecamp (a todo-list style tracker)
This task tracker is really the combination of two pieces of the Basebamp suite, “Time,” and “Todos.” If you are familiar with Basecamp, you will know what I am talking about. If you are not, check out Basecamp to see for yourself, and maybe even sign up for a free evaluation.
Product Homepage:
Jira
Made by:
37signals
Pros:
Basecamp is chock-full of features. The task tracking is almost an afterthought. The way we use Basecamp focuses on the forum-like “Messages” area. We discuss and refine ideas until a project or task scope is understood. We then move forward, communicating using these messages, and recording our time with Basecamp time log entries.
- It just works!
- Tons of features
- Well integrated with other applications. Many high-quality applications on the web have integrated with Basecamp, such as Beanstalk, Freshbooks, Harvest, and SpringLoops, among others. Thanks to Basecamp’s integration API, we have options in terms of how to use the various tools that make us more productive and reliable.
- Flexible pricing
- A total collaboration solution
Cons:
- Customizability is limited because it’s a hosted service.
Put another way, Basecamp makes us a better company.
The Rest
There are a number of other systems which we’ve collectively evaluated over the years, but haven’t worked extensively with.
These include:
Conclusion
A task tracker is a core tool for a development team. It is important to find (or build) a tool that can be shaped to exactly fit your project and working style.
Take some time to experiment. See which features help most. Give yourself some time to see how well the tool fits
We are always looking for tools that can improve our productivity and communication. If you’ve used a tool that we didn’t mention, please tell us, and the world, about it.
Happy tasking.
In the category of “Many others” you’ll also find Intervals, web-based task tracking built on the latter styleyou mention (urgency/priority/severity/percent-complete).
The unique thing about Intervals is that it tracks your time spent on each task, and includes many of the ‘key features’ listed above.
http://www.myintervals.com
Thanks for the note John.
I watched some of the videos for Intervals. I felt so mellow afterwards. Everything seemed so easy.
I signed up for the free account and will spend some time with it.
A couple things I wonder about though.
1) How does it handle forum-like functionality?
2) Does it have a wiki-like feature-set as well?
One feature of Intervals that really stands out to me is the ability to figure out optimal rates, ratio of billable to unbillable time, and the other trending/charting features.
The only other tracker that I’ve seen with anything similar to that it FogBugz.
One other thing that I’d really like to see with Intervals (and one of the key features that has me using Basecamp right now) would be integration with external invoicing systems.
Quickbooks, FreshBooks and Blinksale are the most popular ones from my perspective. We’ve been using FreshBooks for a while now and are very happy. It would be a real pain to switch away from that, without, of course, an easy way to integrate.
If you’re ever interested in building in those integration features please give us a call. I’m sure we could help.
Thanks again.