Software development projects nowadays are becoming more and more complex and aim to deliver products with lots of features. Managing such projects can be easier once you choose suitable issue tracking and project management tools.
There are many solutions available on the market: JIRA Software, aha.io, Basecamp or Trello. They can all support a wide range of software development projects. Obviously, each tool has its pros and cons but my personal favorite is JIRA Software created by Atlassian.
Unfortunately, choosing the right software is not enough. You also need to configure it properly for your project. To be honest, this is not an easy task, especially if you have just started working with this kind of tool. Most probably, many iterations will be required before your teammates find the usability of the tool acceptable.
Working with JIRA for some time I’ve learned how you can adjust it to improve processes and increase performance for certain actions. In this article, I would like to share a few ‘quick win’ ideas that are easy to implement.
In general, Quick Filters enable you to show specific issues from the backlog. You can use them to show only Bugs, for example. If you have a Scrum or Kanban project in JIRA, you can add custom Quick Filters to your board. Please remember that in order to create Quick Filters you need to have sufficient privileges and be familiar with JQL (JIRA Query Language).
Below you can find filters which can be helpful in your day-to-day work with a backlog.
In order to make the last filter work, you first need to add “refinement” label to chosen issues. Labels are really helpful if your backlog is extensive and you don’t want to miss anything.
JIRA allows building custom workflows and configuring them properly. The are lots of options here but I’m going to mention just two of them: Triggers and Post Functions.
Triggers are special events distinguished by JIRA, capable of triggering issue transitions from one state to another. Triggers can be integrated with development tools (GitHub, Bitbucket) and allow JIRA issues to be automatically updated after certain actions, so that developers don’t need to do it manually.
We can make JIRA recognize the following triggers:
- Pull request created
- Branch created
- Pull request merged
- Commit created
- Pull request reopened
- Pull request declined
Unfortunately, the last two options are supported only in Bitbucket.
First, I suggest to configure your workflow so that creating a branch or making the first commit triggers a transition of a particular issue from TO DO to IN PROGRESS status. This depends on the particular workflow of course; however, in my experience it usually works fine with most projects. With this configuration developers don’t need to use JIRA in order to manually move issues to IN PROGRESS status.
The same concept can be applied to other transitions in the workflow - for instance, you can create a trigger for the Pull Request Merged event. In this case the issue will move from IN PROGRESS to TESTING status.
Please note that all these configurations require JIRA integration with Github.
Post Functions let you perform certain actions automatically when a transition is completed between two statuses. Several options are available here but my experience proves that updating the issue field to a given value is the most frequently used one.
In my projects I use a post function to change the assignee from a developer or tester to the Product Owner once the issue has been moved to DONE. This indicates that the Team has delivered a User Story and the PO needs to accept it before closing.
You can create a similar post function to assign an issue to a particular tester once it is moved to TESTING status.
Scenarios like the above are the simplest and the most straightforward cases where post functions can be used.
I hope that these basic tips will help you use JIRA effectively in your daily work. There are many more advanced options of JIRA configuration. Just remember that enhancing and adjusting JIRA in a project is a long-term, iterative process.