Jira makes a lot of bad design decisions. Virtually everything it does has no undo. Different issue types behave almost, but not quite, the same, and have far too many different fields that end up meaning almost but not quite the same thing, so denormalisation and inconsistency are rampant. It's a micromanagement-first system: everything you want to do has to be explicitly enabled by a manager, and if you want to do something a manager didn't think of, too bad. And its performance is awful.
> It's a micromanagement-first system: everything you want to do has to be explicitly enabled by a manager, and if you want to do something a manager didn't think of, too bad.
We don't have anything even resembling to this in our company, and we use Jira. Again: Jira is a relatively good tool for storing information that's related to a certain piece of work. If you don't think that the context for any work should be documented, then don't do it, but we have learned it the hard way that code changes without business and technical context are not great, because in 5 years you might have a completely different set of people working on the codebase and they sometimes need to ask why this code was ever created. This is the context we store in Jira, and we could store it on a wiki, in Asana, etc. but Jira works just as well and again: it has brilliant integrations to everything.
Yeah, performance is not great but it's getting better nowadays. There are faster tools out there, but we considered integrations to be more important (YMMV ofc.).
I've worked in 6 or 7 companies that used Jira across a variety of different industries, and Jira was terrible in all of them; one of them was a previously excellent company that made a switch to using Jira, and that distinctly coincided with the company becoming worse to work with in many ways.
> Again, Java or Javascript are also a good example: I am relatively sure that crappy Java code is much more common than crappy Clojure or Haskell code. Does it mean Haskell is 'better' than Java
All else being equal, yes. You can make an argument that Haskell etc. attract better programmers because they're hard to learn, but it's hard to make a corresponding argument about Jira; how much time and effort does it take to not use something?
> We don't have anything even resembling to this in our company, and we use Jira. Again: Jira is a relatively good tool for storing information that's related to a certain piece of work.
Well, a) I'm pretty sure that's not how most companies use it, and b) I don't think it's very well suited to that either. Its IDs are the worst of both worlds (not a simple number but not actually informative either) and its search function is awful, so it's vastly inferior to using a wiki (a real one, not Confluence).
> Yeah, performance is not great but it's getting better nowadays. There are faster tools out there, but we considered integrations to be more important (YMMV ofc.).
Most places I've worked disabled most integrations due to performance problems, so I may be missing some of your experiences, but I don't understand what and how you're integrating if you're only using it as a store of information.
Now the good part is that you don't actually have to use all those customizations if your company doesn't 'need' that much process. Whether you have a Todo-In progress-Done workflow or Backlog-Ready for Dev-In Progress-Code review-Ready for QA-In QA-In Regression-Ready to merge-Merged to integration branch-In Integration Testing-Ready for master-Merged to master-Released to Prod workflow is up to you!
Yes, the tool was called "Jira".
That's actually better than my experience of the "simple workflow action" approach, where the fields you need to change aren't available, because you clicked the wrong action at the wrong time or did the wrong thing three actions back. And since there's no way to undo an action or return to the previous screen, you're stuffed. If you're lucky you might be able to find a manager who's able to do some other transition or define a new transition to fix your problem. More likely you have to throw that task away and recreate it from scratch. Oh, and there's no way to close the copy that's in the wrong state, so it's in your to-do list forever now.
> Now the good part is that you don't actually have to use all those customizations if your company doesn't 'need' that much process. Whether you have a Todo-In progress-Done workflow or Backlog-Ready for Dev-In Progress-Code review-Ready for QA-In QA-In Regression-Ready to merge-Merged to integration branch-In Integration Testing-Ready for master-Merged to master-Released to Prod workflow is up to you!
You need customization to have any workflow available at all - that was what I said about hoping a manager thought of what you were trying to do first. You want to put your In progress thing back to Todo? To bad, you can't. Accidentally marked something as Ready for QA when it isn't? Tough, no undo. Etc.
Jiras standard workflow is literraly Todo-In progress-Done and you can transition from any state to any state and edit any fields you want at any time.
Don't blame the tool. You said you needed an axe to chop wood to stay warm. Is it the axe's fault if you go kill your neighbor with it?
We use Jira and we have none of the problems you describe. We also have it integrated with a bunch of other tools we use and it gives us a really good overview of where we are at with things, looking up the Why behind a code change etc.
FWIW we do use a more elaborate workflow but it works well and parts of it are so that you can see if something it out with customers or not and those transitions are automated and done by our deployment scripts.
There may be predefined transitions between all the predefined states. But as soon as you add a new state you do not get any transitions to/from it except those you explicitly define. Any custom step that you define will not be undoable unless you explicitly define a way to undo it, and Jira will give you no help at all in ensuring that your undo transition actually undoes.
> Don't blame the tool. You said you needed an axe to chop wood to stay warm. Is it the axe's fault if you go kill your neighbor with it?
If the axe keeps slipping in people's hands and they keep chopping off their fingers, that's a problem with the axe. Even if there's one guy who doesn't have that problem and thinks everyone else must've been holding it wrong, it's still a badly designed axe.
> We use Jira and we have none of the problems you describe. We also have it integrated with a bunch of other tools we use and it gives us a really good overview of where we are at with things, looking up the Why behind a code change etc.
Who maintains your Jira workflows, and what's the process for making changes to them? I guarantee you're doing something unusual, because like I said, I've seen Jira in five or six companies and it was bad in all of them. (Blind guess: at your company the people who are actually using it are empowered to make changes to the workflows, which is very much not the default and not what Jira's permissioning system guides you towards).
I don't envy you and I feel for you. It does not have to be that way but you also can't blame Atlassian for letting those sorts of companies, which let's face it are larger companies with more licenses bought, buy Jira and catering to them. However, Atlassian has kept things very very simple and open enough that you don't have to be a victim of that.
> Who maintains your Jira workflows, and what's the process for making changes to them? I guarantee you're doing something unusual, because like I said, I've seen Jira in five or six companies and it was bad in all of them. (Blind guess: at your company the people who are actually using it are empowered to make changes to the workflows, which is very much not the default and not what Jira's permissioning system guides you towards).
I do have to give you this, Jira is not great for empowering people to make their own changes to workflows and such, so you _are_ entirely at the mercy of your company. They are sort of changing some of this with at least Jira Cloud and the new issue view (which I hate with a vengeance for the most part) in that you can both "pin" fields yourself on a per project basis (which is bad, because in our case I want the same ones pinned in all projects, as they all share the same issue types and workflows but there's a project per product we have) and you can move fields between the left and right context (or removed from screen) without having to be a Jira admin. It's still lacking in many ways though. Just so you know, I'm not saying Jira is the best tool ever out there and everything is perfect about it. I'm just saying that your company misusing it doesn't mean that the tool isn't valuable and doesn't have some great features. Did you know that Jira since not too long ago allows story points to have floating point values now, because so many people requested it? That is absolute utter BS and not in line with any agile methodology I've ever come across. But I guess this is where I have to refer back to Money, Money, Money ... :)
FWIW I've been both at companies where other people were Jira admins and to get something changed you had to go through someone else and where I was the admin. Sometimes the changes requested were denied. In other cases, even within a large (10k+ employees) companies, we just had our own Jira for the project and I was actually (one of the few) Jira admin(s). At my current company I am not but most things are actually configured just as they should be. If you want something changed, you ask for it and it's usually not a problem and the stuff they're putting in is not crazy.
Would you rather have a centrally managed IBM Remedy? :)
P.S.: And just on the axe, I think it depends. Is it a standard axe with a hickory handle? By default that definitely doesn't slip. Oh you say you oiled it so much that it slips all the time now? Not the axe's fault!
Ideally I'd like to be able to revert to the state as of a specific point in history - JIRA has an "activity log" that shows that it keeps all the history of transitions, but unlike say a wiki I can't just click on one of them and say "reset it to this version". Obviously that doesn't solve everything if your transitions have done something non-idempotent in external systems, but it would cover a lot of cases.
TBH all I really need is a way to undo the last action, for the case of "oh shit I didn't mean to click that" or "oh shit my mouse slipped and I dragged it to the wrong column" - or worse still, because the column I was dragging it to changed midflight because of JIRA's ridiculous performance issues. Again obviously that could go wrong if there's an external integration involved, but I'm ok with enabling confirmation for transitions that are going to make a change to an external system (I might even be ok with enabling it for every transition if I didn't have to drag a card through five different states one by one and wait 30s for the UI to unfreeze each time). But being able to irreversibly screw an issue up just by dropping it in the wrong place is not cool. (My current company has one of the less bad Jira setups I've used, but I still have a task that I can't see on my open issues view because I accidentally dragged it into some kind of fixed/resolved/closed state, and even though it's now back in the right state, its Resolution isn't Unresolved and there's no way to put it back to that).
> Would you rather have a centrally managed IBM Remedy? :)
I've not used that. I've had a much better time using Trello, Trac, or even (going back a few years now) Bugzilla to fill the same role. Yes, they don't do as much as JIRA, but I really think that's actually a downside. More concretely I think capturing requirements/planning/roadmaps and tracking the status of work in progress are actually separate things that should be done separately, and the fact that JIRA tries to do both is part of what makes it so complex and slow.
I am not sure about it at all.
> attract better programmers because they're hard to learn
This also biases demographic toward people who care more about proving they can do hard code then those who want to produce maintainable software. That does not lead to better code.
For example, there is no reason why each transition in the workflow couldn't simply have a corresponding counter-transition: "Start development" / "Abort development"; "Move to test" / "Return to development" (not the same as "Test failed"); "Test OK" / "Test again"; "Close" / "Reopen". And the excessive fields almost certainly can be removed from the form, so you could reduce the entire thing to Title + Description + State + Assigned To.
You are right that most companies don't do this. That's because in most companies the management decides how Jira should be configured... and their preference is for "more data" because it gives them the illusion of control, and they don't really care how much extra paperwork this means for the developers.
Well, we could perhaps blame Jira for having the wrong defaults. But even where Jira has the right defaults, the management often decides to override them.
For example, Jira allows to split tasks to subtasks, but by default this functionality is disabled, and the documentation argues strongly against it. (The recommended way to use Jira is that the tasks are atomic, and you have a database of tasks. To relate tasks to each other, use links or tags or epics; all of them optional.) Yet, most managers insist that tasks must be divided to subtasks. And then you get the usual "one subtask per each task" or "analysis, development, and testing are subtasks, instead of steps in workflow", because that's how the management wanted it.
Then underlying reason is that developers and managers have different needs. Developers need a database of bugs, and a short list of tasks to be done. Managers want as much information as possible (no matter whether the information makes sense or not, because they don't understand half of it anyway), plus time tracking (to push people to work faster), plus something that would reduce their need to plan and check how the plan progresses... and if they can outsource all this work to developers, that makes their own work more convenient. Which is why the Jira is configured the way it usually is. But the same thing will happen with any other tool... and if the tool would not allow such abuse, then the management would not allow the tool.
There isn't, but you have to manually maintain them, and inevitably they get out of sync.
> But the same thing will happen with any other tool... and if the tool would not allow such abuse, then the management would not allow the tool.
Bad management insists on tools that let them manage badly, of which Jira is the prime example. It's not a bad tool in the sense of being badly coded, and on some level I can't blame Atlassian for making a tool that micromanagers love - I'm sure there's a huge market for that. But precisely because it's designed to give bad managers what they want first and foremost, it's a red flag in a working environment.
I've never seen that with other less flexible bug tracking tools.
Yes, this. Jira is cancer:
> Any problem gets solved with "more JIRA " which stops working when the remaining problems are caused by too much JIRA. And yet they keep trying, because it gives "control". JIRA is a like metastatic tumour that will grow until it kills the host.
For us, it's primarily a documentation tool. It has great integrations. If someone makes a complex pull request, the text that tells me what it does is the Jira issue. Yes, it could be the PR description, but Jira is much easier to link to, search, etc. 2 years later when someone looks at the git commit, they can go to Jira and read through the whole context, who created it, who commented on it, etc.
Just use the damn thing to solve problems you actually have.
Jira, Java, Windows, JavaScript, Kubernetes, etc. can be used in various ways, and because most people aren't excellent at what they do, flexible tools will result in lot of crappy output just because so many people can use them.
If Jira/etc. destroys your project then it's absolutely your fault.