No, I most definitively hate Jira (and also my manager). Jira is the only software I’ve had to use where 10+ second page load times are a regular everyday occurrence. On their cloud hosting, so it’s not like we could do anything to fix it other than filing tickets… which we were told to simultaneously keep doing so they can track it but also stop doing because it’s working as intended and we were wasting their time and abusing support.
JQL is absolute garbage, and it doesn’t even take hindsight; they took SQL but in an attempt to simplify it, they broke everything about it. Whether any particular functionality is a field or a function to run on some other field is a mystery. And if you’re using Jira Service Management, it gets infinitely worse; everything is bolted on in a terrible way.
Every interaction between their “Kanban board” and “ticket” system is confusing. They pull from the same database, except not quite, except they do. It’s a representation of data, but not the same representation the data is in. If you have any kind of custom workflow setup at all - which the blog both criticizes as bad and uses as a reason to explain why Jira is the only good option (???) - it will simply never do the right thing unless they map 1 to 1.
There are all kinds of perpetually missing features. Multiple assignees are a big one, there is simply no correct way to represent “John and Bob will spend some time together brainstorming about a new architecture” or simple things like pair programming, despite that being a fairly significant task that should somehow be accounted for in planning. You can half-ass it with custom fields or sub-tasks, but then the entire ecosystem of tooling built on the assignee field crumbles.
Likewise, you can’t assign issues to a “virtual” position of any kind, all you can do is leave them unassigned or make (and pay license costs for) a fake user. It’s not possible to represent concepts like “the first available person from the Ops team” or “whoever is currently managing the security team” unless you make it into a status and leave it unassigned, which causes a massive amount of issues when multiple teams led by different managers are working on one project or someone is temporarily or permanently unavailable for whatever reason (vacation/sick/etc). Planning software that cannot deal with people being unavailable is worthless.
Permissions are a complete mess. There’s all kinds of funny interactions between admin and project permissions, and some things are in what could have obviously never been the correct spot. How it ended up with project releases being an administrative permission speaks volumes about how poorly everything is designed. Happy tenth anniversary to the cloud ticket, the original server one has another decade on it. Twenty YEARS of the most basic feature imaginable not existing when the initial implementation was patently incorrect to begin with.
The number of people accepting email for some magic thing without in-between mechanisms is ridiculous. If it’s sent in an email you should 100% consider it to be stored in plaintext in multiple places. There is incredible amount of machinery between your
mail()
call and the end user reading that email, on both the sending and receiving end. For example, my spam filter (rspamd) will likely store a copy of it for a while, and that’s not unique to it.What’s in the database is not really relevant. Only the worst instance of storage counts.