37signals’ Basecamp has become the poster child of such software. It’s too basic of a tool for real software development in our opinion. Our pick here is Fogcreek’s Fogbugz. Here are the main reasons:
1) Custom Task/Bug Organization - Fogbugz allows you to create lists of tasks/bugs and group them in an almost infinite number of ways, i.e. by area, priority, tags, milestone, assignee, and many other criteria. However, that’s not the magic. The magic is you can have multiple “views” into your tasks accordion to different criteria. Fogbugz calls these “Filters.” In essence, the tasks exist in the system and are tagged with various criteria. Then you can build Filters that sort, group and filter the tasks shown according to a configuration of all that criteria. And then you can build as many of these filters as you want. For example, you can see just all tasks for Project ABC with priority 5+ in the current milestone that are past due. You can then share these filters you create with other developers so you know you’re all looking at the same system.
2) Plugins - Fogbugz has a great plugin system where 3rd party developers can enhance it. One popular once is Kanban. Search in google images “Kanban chart”: http://www.google.com/search?q=kanban+chart&hl=en to see what it is. It’s basically a chart with several vertical columns, and then you move post-it notes that correspond to tasks across these columns from left to right as they get closer to true completion. So the Kanban plugin helps display your fogbugz tasks in a similar visual.
3) Integration with Mercurial - Fogbugz’s sister product (as mentioned in the Version Control tutorial) Kiln is deeply with Fogbugz. It allows you to associate actual committed code with completed (or near-completed) tasks. It also allows you to do code reviews. It’s pretty sick.
4) Evidence-based Scheduling - Fogbugz can produce pretty graphs that estimate when projects/tasks/milestones will be completed based on the measured efficiency of your developers and what tasks they’ve already completed. It takes a lot of discipline to use this properly, as you need to do things like estimate how long tasks will take and mark how long they ultimately take you, but if you can get your developers into a groove using this, you can get great estimates of when your milestones will be reached.
5) Wikis - Fogbugz has wikis that can be two-way linked between tasks. So you can produce documentation for your code or product and closely correlate it to your task.
6) Email Support System - It comes with an email support system that turns any emails into tasks in your system automatically, and your developers can do things like respond to bugs inside of fogbugz just like they would any other task, and the person that reported the bug (or complain) will get an email. And of course that thread can continue accordingly.
7) Forum System - It has a forum system that also interlinks with the bugtracker similar to the wiki system.
8) Snapshop plugins - There are some great plugins that allow testers to take screenshots of issues your app is having and automatically send the screenshot (with some notes and other tagged criteria) to the bugtracker at the core of Fogbugz.
9) Nested Tasks - Tasks can have sub-tasks for basically an infinite # of tiers (well, i think it’s 8 tiers). A lot of bug trackers only have 2 tiers of tasks, i.e. a group and a list of tasks in it. Fogbugz allows you to easily have child and parent tasks, and move tasks around between different parents.
10) Quick Notation - Fogbugz has a quick way to enter tasks one after another in a quick to do list. This is very powerful for just banging out your task list quickly.
The list goes on. We highly recommend it. Check out all the features here:
Now I’m going to end this article explaining the importance of bug-tracking and project management software in general. The importance is simple: one of the key skills required of a great developer is storing many to-dos in their head at a time. But the reality is it’s impossible to store them all. Project management software allows developers to focus on doing the actual work. They’ll inevitably always find sub-tasks they must remember. So help them make it so those tasks they have to remember are very few and at a very granular level for a clear single task. For product owners (i.e. the non-technical participants in the project), it will give you insight into the progress of your developers. It’s pretty self-explanatory. The biggest takeaway is just get Fogbugz and don’t spend 2 weeks researching all the bugtrackers like I and many startup guys have done. It is sort of a right of passage to study them all for any Web 2.0 guru, but really, just get to coding your app and take my word for it: Fogbugz is the shit!