Thursday, May 31, 2012

JQL for Atlassian Summit 2012 Slides

Doing a simple search in JIRA for issues can work great for you, but there are some very powerful queries that you can write if you swap over to Advanced. You can also then share that JQL with your colleagues. Here I am sharing the JQL for all of the filters shown in my Summit 2012 Presentation, as well as a couple of extras that I wanted to share. I will continue to add more after the Summit.

Anything Assigned to Me Personally : Seems like overkill, but sometimes the plain old “Assigned to Me” got confused, and I lost some tickets. 
    • assignee = currentUser() AND status != Closed ORDER BY Rank ASC

    • project in (SEM, MOBILE, BRO, CTS, USE, PR, "Global Sites") AND resolution = Unresolved AND Flagged = Impediment

Impediments <by Team>

    • project = <projectName> AND resolution = Unresolved AND Flagged = Impediment

    • issuetype = Defect AND priority = Blocker AND resolution = Unresolved
Defects : <by team>
    • project = <projectName> AND issuetype = Defect
Current Sprint : <by team>
    • project = <projectName> AND issuetype in (Defect, "User Story ", Epic, Bug, "User Story") AND fixVersion in unreleasedVersions()
    • issuetype = Defect ORDER BY updated DESC, created DESC, key DESC
Open Defects : <By team>
    • project = SEM AND issuetype = Defect AND resolution = Unresolved ORDER BY priority DESC, cf[10001] ASC, key DESC
Defects In Progress
    • issuetype = Defect AND status in ("In Progress", "In Development", "In Testing", "Ready for Signoff", "Ready for Integration", Integrated)
Recently Resolved Defects
    • issuetype = Defect AND resolved >= -7d
Work In Progress
    • project in (SEM, MOBILE, BRO, CTS, "INT", "Usability Team", PR) AND issuetype in ("User Story ", Epic, "User Story") AND resolution = Unresolved AND fixVersion in unreleasedVersions()
Recently Resolved User Stories
    • project in (SEM, MOBILE, BRO, CTS, "INT", "Usability Team", PR) AND issuetype in ("User Story ", Epic, "User Story") AND resolved >= -7d
Assigned to someone out of sprint. This filter covers two really important issues. 1) working on things outside of the sprint. I try to remind our devs that if they are working on something that isn’t on the board, they aren’t giving their team full visibility into impediments to the sprint. For the most part this has stuck in their brains, but sometimes things slip in, or something is assigned to them by someone else, and they don’t even notice. That brings me to #2. If a ticket is assigned to someone chances are no one else will touch it. So I like to keep people aware of things left assigned to someone so we don’t lose issues to the black hole of bug hugging.
    • project in (SEM, MOBILE, BRO, CTS, DEF, "INT", "Usability Team", PR) AND assignee in membersOf("uShip Developers") AND resolution = Unresolved AND fixVersion = EMPTY ORDER BY assignee ASC, key DESC
Tickets in Progress but out of Sprint is another one along the same lines but with a bit of a twist. This generally means, either something was deprioritized and work that was in progress is now gone or that the ticket was just not updated to completed. Either way the tickets need to be updated to reflect the true status of the task.
    • project in (SEM, MOBILE, BRO, CTS, DEF, "INT", "Usability Team", PR) AND status in ("In Development", "In Testing", "Ready for Signoff", "Ready for Integration", Integrated) AND fixVersion = EMPTY ORDER BY assignee ASC, key DESC
Assignee Was! I’ll close it out with one of my new favorites. Assignee Was! And yes, that exclamation point is actually in the title of the filter. I got so excited when I found this little gem, that I had to let my excitement be known. I’m not sure there is a single person who likes logging hours, but in most companies they like to track their ROI, and hours is an important part of that equation. We all try to log our hours as we transition tickets, but some days are busy, then the week gets busy, and before you know it 3 weeks have gone by, and hours were not logged. Thank you JQL for allowing me to filter by “assignee was” and a time period. Now my team member who is sometimes lost in a sea of tickets for weeks can just pull up every issue that has been assigned to them at some point in the past few days, weeks or years if they are really insane. Checkout this post for more info.
    • assignee was currentUser() after startOfYear()

Friday, May 25, 2012

Flagging Impediments

JIRA with GreenHopper gives the ability to flag a ticket as an Impediment. Which allows for a great at a glance view of anything that is currently impeded from either the Task Board or Planning Board. But without digging in the ticket and looking at comments, we didn't have a quick way to view what the actual impediment was. So I fixed it...

I added a custom field to specify impediments and added it to the Edit Issues pages:

I also added it to the Cards on the Task Boards so it was easy to flag and explain:

Since the impediments are now specified, I could set up a filter to pull the tickets that are flagged as impediments. Using the "Filter Results" gadget, these are now displayed on each team's dashboard:

Wednesday, May 16, 2012

Delicious Easter Egg

Do you use column constraints in your task board? If you do, next time the capacity has been exceeded, open up the Column Constraints editor and scroll your mouse over the exceeded constraint row.  You will be rewarded with a foamy mug of beer!

UPDATE: It happens with a Capacity Shortfall as well!

Monday, May 14, 2012

Making the Burndowns Work!

JIRA has so many fun and amazing tools, but one in particular eluded me for some time: The Burndown! I was actually creating burndowns in Excel, because I just couldn’t make it work. I couldn't figure out why it would only track yesterday and today, but not the whole sprint. I was pulling my hair out, until the day that I added in a Start Date and End Date. Like magic, suddenly I had a Sprint Burndown.

The easiest way to enter this information is to add the version directly from the Planning Board.
Don't worry though if you already have an existing one, you can edit these dates from the Planning board as well. Just click on the word "None" next to "Start/End Date", and it will let you edit it.
Then, simply add a Start Date and End Date. Magic!