How to turn JIRA into a friend as a developer

Tips on how to create the perfectly tailored dashboard in JIRA

Gabi Suciu
Yonder TechBlog

--

Whether you are a team leader, manager, or developer you need to know what your team is working on. This article will cover an approach on how to use filters and JIRA widgets in a manner you might not have thought about.

As a developer, you may not exactly expect me to watch over my colleagues’ progress but I will let you in on a secret: it helps both you and your team to know when you can help.

Here’s the draft I started from. We’ll build the very same dashboard from scratch.

I will not be able to share how my current dashboard due to obvious reasons (such as exposing company data) but I can share a few tips leading to building my “home page” dashboard.

As you can see the draft looks pretty much like a dialogue so we’ll start answering the questions in an order that makes sense

Creating a new dashboard

Access your JIRA instance and click on the Dashboards menu on the top menu bar, click on the “Create dashboard” option, it should be the last option. You can name it however you want, and make sure the dashboard is private, we don’t want to give headaches to JIRA admins or managers.

Tip #1: The dashboard name

Projects usually have a key that prefixes all tasks. (eg.: MYC, EXV, etc.)
When creating the dashboard use that key when picking a name, then add the word “Dash” and your initials (in case you accidentally make it public).
eg.: “BPP Dash GS” — the name can be used as a browser bookmark

Jira dashboards have multiple layouts you can pick from, I chose the most practical option, the 2-column one, as it’s a better fit for more screen sizes. And I can view the information for both my computer, tablet, or browsers in different sizes.

I’m going to be starting from right to left as the right eye is the dominant one, I mostly blame Winamp, Yahoo! Messenger, and the old Windows widgets for this, but leaving jokes aside we can start answering the questions from the draft.

For the sake of practicality, we’re going to first answer the questions by defining the needs, building the filter queries, and only adding the implementation afterwards.

In this article we’ll make use of Jira Query Language or JQL for short, to build our desired filters on tasks.

What is my goal for this sprint?

Photo by Alexander Redl on Unsplash

In a sprint, I’d like to see the stories* that I need to work on. For this, we will use the sprint, project, and assignee values. Even if other tasks are assigned to me I only want my “main” tasks to be reflected in this widget.

The final JQL query should look similar to the snippet below:

sprint in openSprints() 
AND project = "PROJECT_KEY"
AND assignee = currentUser()
AND issuetype in (Bug, Story, Task, "Technical story")
AND status != Done

Note that the project filter requires a project key. That project key is the letters that usually prefix your tasks, eg.: BPP-3094

We will name this filter BPP Dash GS Current Sprint . The name is not relevant for any other reason than staying organised.

What is my focus right now?

Photo by Stefan Cosma on Unsplash

For this question to be answered I only need my assigned tasks at the moment.

Depending on our organisational needs we could create another filter, but we can also make use of the “Assigned to me” widget available in the widget gallery. The query below is similar to the “assigned to me” filter

assignee = currentUser() 
AND project = "PROJECT_KEY"
AND issuetype in (Bug, Story, Task, "Technical story")
AND status = "In progress"

Tip #2: The status might have variations
The above query might not work because of possible customisations, a case in which the best option would be to enumerate the possible options

status = “In progress” can be replaced with
status in (“In progress”, “in Progress”, “In Progress”, “in_progress”, “Doing”)
This can also be obtained by switching to the basic mode and selecting just the “In progress” option

A possible name for this filter could be BPP Dash GS My Focus.

What is my team doing and how can I help?

Photo by Hannah Busing on Unsplash

This is very similar to our first widget, with the assignee parameter modify, instead of selecting the current user we will type in our colleagues names and JIRA will provide their identifier. This widget is useful when you want to see your team’s progress. If something stays in progress too much you can ask the assigned colleague if they need help.

sprint in openSprints()
and project = EPC
and assignee in(... select your teammates, comma separated...)
and issuetype in (Bug, Story, Task, "Technical story")
and status != Done

A possible name for this filter could be BPP Dash GS My Team Sprint.

Are there tasks I might have forgotten about?

Since we’re all busy and everything is number one in our importance list there is a good chance some tasks with lower priority might get forgotten.

I Think I Forgot Something Meme — from Two and a Half Men TV series

This has happened to me before, and not just once. We’ll answer this question by selecting the current user’s tasks that are not done and are older than 30 days. This time we are not filling in the project because there is a chance tasks were assigned to us from different projects and if that’s an accident we can quickly react to those tasks as well.

assignee = currentUser()
AND status != Done
AND created <= -30d order by created ASC

A possible name for this filter could be BPP Dash GS Last Month… and since you made it until here I’ll throw in a bonus for the right side of your dashboard.

Bonus: ”I think I worked on this in the past”

Photo by Brett Jordan on Unsplash

I am willing to bet that at least once in your career a colleague asked you for help and you worked on something either similar or related to his problem, but surely forgot the task number.

For this filter, we’ll select all the tasks we’ve done in the last 180 days, but this time we’ll filter and order the tasks by the updated field so we only see what tasks were done in the last 180 days.

Here’s the JQL query:

assignee = currentUser()
AND status = Done
AND updated >= -180d
order by updated DESC

This filter could be named BPP Dash GS Previously Done Tasks. Up next we will build my favourite part of the dashboard.

Adding the filter widgets

Now that all the filters are in place it’s a good time to add in the widgets.

The first step is to navigate to the newly created dashboard and click the blue “edit” button on the top right corner, the page will refresh and new buttons will appear in the corner.

Click “Add gadget” and look for the “Filter results” widget, and the widget will appear first on the left side, select the filter and then configure the desired number of results, columns to display.

Tip #3: Save the planet… little by little 🌳
The auto refresh feature can be turned off for all widgets since the refresh will be done when the page loads.
Keep in mind that a tab might be left open for a whole day you will save energy for 32 db requests for each widget.️ ⚙️ ⚡

The “fast travel” widget

Photo by Isaac Smith on Unsplash

The “fast travel” widget is a fancy marketing-friendly name I came out with for using JIRA’s simplest widget, the Rich Text Gadget. This is a gadget that simply shows user-entered content in a rich text format.

I want to make this step simple for you, therefore instead of going through complex steps we will use a Word document… yes, you “heard” that right, we are going to use a rich text editor to build this page.

Please take a moment to think about your “real” bookmarks, and make a bullet list with the pages you access the most, group them however you feel more comfortable, colours and emojis are allowed, although colours won’t be copied since Jira’s rich text editor handles them differently. Since you will be seeing this widget daily feel free to also throw in a quote you like if it makes it more fun. The final document should look similar to the one below.

The document can be saved for future updates, if we decide to change it and keep the edit process fairly easy.

The next step is adding this to our Jira dashboard. While editing the dashboard click the “Add widget” button and a widget list panel located on the right-hand side will appear, search for “Rich Text Gadget” and then click the “Add” button. The widget configuration prompt will appear as the first widget on the left side, give the widget a name you like (I’m thinking Launchpad) then paste the previously created document content within the text area and press save, don’t worry about the weird looking style, CSS will take care of that for you.

Here is how the widget will look at the end of the process:

… pretty slick, right?

There’s another trick/challenge for the braver ones: using the table option from the Rich Text editor simple grids can be created, and multiple lists can be added, however, I find the simple version good enough for my current needs.

Since this article is about boosting efficiency and you made it until the end I’ll throw in another bonus in the TL;DR section :)

TL;DR: Key takeaways:

  • Get tasks from the current sprint sprint in openSprints()
  • Get tasks for the current user (assigned to me) assignee = currentUser()
  • Get tasks for the current user and another teammate (assigned to me) assignee in (currentUser(), …)
  • Get tasks created more than 30 days ago created <= -30d
  • Get tasks by type, specifying more than one type issuetype in (Bug, Story, Task, “Technical story”)
  • Select tasks from a specific project project = “PROJECT_KEY”
  • Create a Rich Text Block to tailor your daily navigation needs
  • Bonus Confluence Hotkey E: to edit the document
  • Bonus Confluence Hotker R: to read the document in “focused” mode (full-screen)

That’s it, you made it, thank you for your time and I hope this article helps you as much as it helped me when I did my first proper Jira dashboard. You can help me write more articles like this one by following me on Medium.

Sources:

--

--