jira gets a lot of flak on the internet. certainly, some of it deserved but i think that really a lot of it is developers projecting dysfunctions in their managerial culture onto the tool.
my team has used target process, trello and jira in the past in both distributed and on-site settings and, of the three, my opinion is that jira is actually the best of them. the features that i find most useful are:
organization by epics and stories.
our current model is that we create epics to contain user stories. this allows us to keep the stories smallish and aggregate stories that represent a larger feature set.
since you can attach documents to cards, we use the epic as a place to hold the common documentation for the feature set: umls, client’s xls files (there’s always at least one. sigh.), spec documents, links to confluence pages etc. this allows us to keep user story cards small and clean but still be able to easily find all that doco.
note that you can always promote a user story to an epic. feature creep is a reality and it is not uncommon for a nice, small user story to grow and grow; being able to promote it to an epic is very nice.
tying version control branches to stories.
this is a bit controversial, but we like to tie git feature branches to the user story ids and have one feature branch per story. we use git flow to manage feature branches.
for instance, if a user story is assigned the id FOO-231, then an associated git flow feature branch is created called feature/FOO-231. when the git flow branch is ‘finished’ then the associated card is moved to the kanban ‘done’ column. since we use bitbucket as well, this means that everything ties together quite nicely.
certainly there are risks using this model and there will be no shortage of people on the internet who will say doing this is a Bad Idea, but it’s worked very well for us so far. ultimately, it means i can look at a diff in bitbucket and easily find the associated story and up to that stories epic where all the associated documentation resides. i like that a lot.
since we sometimes juggle a half-dozen projects at once i often have in progress cards on a lot of different kanbans. i use a simple custom dashboard that aggregates my in-progress cards into a list. it allows sorting by priority and by custom fields. so, for instance, i have a custom field on cards that differentiates whether or not the card is for ‘billable work’ or not and then, on my dashboard, i can push all the billable cards to the top if i so desire.
jira’s time logging is dead simple. if you do work-for-hire or bill clients by the hour, this is a killer feature. it was, in fact, one of the main reasons we abandoned trello.
you can also, apparently, set it up so that if you use bitbucket, you can format your time-spent data in your commit message and have it automatically appear on your card; however, i’ve never been able to get it work. ymmv.
ultimately, i think the key to success with jira is to use it to augment the way you want to organize your team instead of letting it dictate to you the One True Way.
hope that helps!