Guest Post By: Juan Silva
Senior Software Developer at Leapshot Labs
Software development processes and workflows can be very different depending on several factors such as the size of the team, the kind of software being developed (web, desktop, mobile etc.), the programming language and even the business domain that the software addresses. However, regardless of the workflow and requirements of the project, all software development projects have one thing in common: The code written will have bugs!.
Developing software that addresses real life problems is usually complex to implement and even the best programmers will write code that initially will have issues. This is a normal process, and there is no way to avoid it. The best thing you can do is to address it properly, and for that, you must use a system that allows you to keep track, and catalog, reminds you of any issues related to the code.
Using an issue tracking system gives structure to the process to follow up with anything that is wrong with your software or anything that has to be improved about it. Having this structured central repository of all the pending items to be addressed is key to be efficient, thorough, and effective in the entire software development process.
Bug (or issue) tracking systems come in many sizes and flavours. Choosing the right one is a task that requires careful consideration so that it will fulfill the needs of your development team. In general we could divide them in two categories: Robust and Lightweight.
Robust systems will usually include a full suite of features, including advanced reporting, project management, time tracking, performance evaluation, and other add ons. These kind of systems fit well for larger development teams with a complex organizational hierarchy. In these cases data must be aggregated and presented with different levels of granularity and the system must support the individual needs and the different roles of the people involved: developers, designers, QA testers, project leaders, managers etc. All such extra functionality usually means that the learning curve to become proficient with the system is fairly steep. Also, those kind of systems are normally commercial products that come with a price tag higher than what small teams or individual developers can afford.
For the individual developer and the small team, lightweight systems work better. The ease of use and the lack of overhead related to advanced features allow the user to be up and running in a short period of time. Plus, it is easier to find open source or cost effective solutions in this category. However, because of the slim properties of systems in this category, it is often difficult to find one that actually does enough and does it right.
This guide is meant to help you in choosing the right lightweight bug tracking tool. The following sections outline the features that you should be looking for. These features are, in our experience, the ones that will allow your small team to operate with a reliable system that strikes a perfect balance between feature completeness, ease of use, and a low learning curve.
It is not strange that the first feature you should look for in a lightweight bug tracking system is simplicity. This is hard to evaluate, but in general: if you can understand the way the user interface is organized and perform all the basic tasks in the system without the need to refer to the “help” section or the manual, then the system is simple.
Ease of use
A system should be simple (easy to understand in concept), but should also be easy to use. This means that the number of clicks and the number of “views” that you have to go through to perform a task should not be too high. All the common tasks should be at hand and navigation across the site should be fast and fluid. You will be working with the system on a daily basis, so look for functionality details that facilitate your daily work; such as (auto completion of entry field, remembering settings, and last entries, system recommendations and suggestions etc.)
Although the majority of the “issues” tracked on the system are probably going to be “bugs”. You will probably want to track other related issues such as “to do” lists or other tasks, feature requests, QA issues etc. Make sure that the system is flexible enough to track such other kinds of issues. Look for the ability to “tag” the issues, classify them by some criteria or set priorities on them.
Even in small teams, there will be more than one developer and being aware of the things that other developers are doing is key in order to collaborate in an effective way. Look for systems that provide some way to notify other developers about changes that happen in the lifecycle of the issues being tracked. Notifications can take any form, from email, to screen displays, pop-up windows or even sms integration. In order to avoid overloading of information, the system should also provide a way to select the kind and frequency of notifications that you want to receive.
Unless you are totally working in a bubble, you will need to communicate at some point with your peers. You can always email, call or talk directly to your fellow programmers. However it is important for your bug tracking system to support communication in the context of the issue being discussed. This has the additional advantage of having a recorded trail of communication that can be accessed at any time in the future; even by third parties who were not initially involved in the discussion.
So you are looking for a lightweight system right? This implies that the application should be fast. Page loads should happen in fractions of a second and use of AJAX and other techniques that refresh the page and accurately reflect the state of your application should be preferred.
Since most bug tracking systems are web-based tools, security is an important aspect that you should consider when choosing yours. Make sure that permissions are handled properly, in such a way that nobody can have access to information that is private or is not meant for them. If the system is distributed as Software as a Service (SaaS), then the hosting infrastructure is also important. Look for any security measures that the provider has taken such as encryption or use of ssl certificates.
So which one to choose?
The above features should be used as a guideline when choosing your bug tracking tool. Depending on your particular needs you may give more or less importance to each one of those or you may add others. Just keep in mind that you should not be the one adapting to the workflow given by the system, but the system should be flexible and adjust to your development process, while staying light and support your agile development.
What is next?
If you decide that you like the idea of using a lightweight and versatile bug tracking system I encourage you to try Bushido at bushidotickets.com. Bushido is a bug tracking system that is delivered as Software as a Service, which can get you up and running without any installation hassles. It is under current active development and is geared towards independent developers who wish to collaborate in a distributed environment with an unlimited number of peers. And the best of all: it’s free to use!. Paid plans are optionally available for those who require heavier usage of the service resources.
Happy bug tracking!