I don't think JIRA is fully capable of being truly awful without people adding most of the awfulness to it. A awfulness-vessel rather than awfully-complete, but it is certainly part of the torment nexus humanity is building for ourselves.
I like to think of it as a Torment Nexus SDK. Start with a punishing UI (the web UI work and become unresponsive frequently, always wait at least 1.5 s before responding to interactions, etc.), add infinitely customizable bureucratic rules on top, and then make people's jobs dependent on making the numbers go up in the correct manner.
The worst part is that every company with a tasks product works right towards Jira. Compare what GitHub issues were in 2014 to what they are today: https://github.com/features/issues
I'm 90% those features were among the top issues on github/github repo back when it used to be there. The joke was always about how barebones github issues were was a common thing troughout the 2010s. Once they added that whole "Projects" thing, the joke became how complicated it is.
It seems like bad engineering culture though. If it was well engineered, then there would be simple concepts as a basis, upon which the product builds higher level, more complex things, that those targeted users think they need. Then there would be one API that is for the simple concepts, that lets people simply have tasks and get things done, potentially building a simpler UI on top of that API. The product itself could have a simple mode or higher level concepts mode.
If you read other people's comments here though, this is not what Jira APIs look like. Instead you have cruft built upon cruft, ever increasing in complexity, and seemingly no engineer was allowed to look back and fix things, find good concepts to represent things on a lower level. Lets build more features, accumulating more cruft on top, instead of fixing a broken design.
Jira is popular and has good API wrappers for your favorite language. I'm surprised corporate programmers with the hacker spirit haven't automated most of the things they are asked to do in Jira with Python command line scripts or whatever.
If you can make Jira an order of magnitude easier to use for yourself than for the people pushing it, suddenly the script flips and Jira is something you push to protect yourself. I've used Jira to almost a malicious extent at times, and it's a great tool to cover your ass. If you ever get in trouble for something you just point out "this was all made clear in the hundreds of Jira updates I've written, you've been reading those, right?". What are they going to do? Ask you to use Jira less?
We have AI now. Hook it all together with a custom script and have the AI do all the Jira crap for you.
Quite a few have, the issue is that every Jira instance is a fractal shit snowflake of custom properties several layers deep through old failed migrations to new organization strategies.
And many times the API can do stuff that the UI doesn't allow, and everyone's relying on the UI to drive things, so you end up in weirdly broken corners because you didn't notice that you need custom_field_5537 to be paired with custom_field_442 or it doesn't appear on anyone else's dashboard. Also it claims custom_field_10995 is an integer type field, and returns as integers in the XML, but there's a pile of undocumented magic constant strings that you have to use instead when creating (but not updating!) a task or you get useless error messages. The web UI doesn't do this though (it's just integers in html and the request), and only 80% of the strings match the display text in the dropdown.
Automating Jira is the absolute worst programming experience I've ever had. I can completely believe that simpler setups exist and they're probably quite easy, but omfg.
Sadly it's still completely worth the effort. Highly recommended.
A dysfunctional organization will project its failures to everything it touches. I personally have not seen such mess, likely because working in regulated industries means there‘s usually some SOP or work instruction that is regularly updated, so the setup is driven by the compliance process. Nowadays, I opt in for Atlassian because it works fine out of the box, I avoid heavy customization (which would mean tool lock-in), and Claude can move the tickets itself anyway - no scripting required.
“ I personally have not seen such mess, likely because working in regulated industries means there‘s usually some SOP or work instruction that is regularly updated, so the setup is driven by the compliance process”
I work in medical devices and our Jira is a mess too. Seems a lot of people try to solve process problems by customizing Jira.
„Every organization thinks that they are unique, yet they all are doing the same thing“ (a quote I heard last time from an SAP consultant, which is probably a common knowledge or some named law).
This is the funniest thing about customization of enterprise products. They spent hundreds of years on user research and product development, so chances are high that their standard solution is sufficient for your problem, and you don‘t need anything else. Yet too many people are tripping on the hard problem of enterprise products: the custom fields, which they hardly even need.
Sounds… political. You have cross-functional teams interfacing via a tool. It would be reasonable to co-design this interface, so that all user goals are taken into account. When engineering owns the tool, do they approach the configuration of JIRA the same way as they build the product?
We approach tickets that match with our development strategy. A ticket is tied to and represents a branch of code. When that code is merged the ticket is done. It cannot be reopened, you open a new ticket and link it and there will be a new branch.
I know everything that is in our main branch by looking at jira.
Product mangers and executives often want a very different view or workflow and it is hard to bend jira to work for everyone. Jira would need to have things like parallel workflows on a ticket and that would just get confusing and complicated.
A colleague of mine said it even better, its like an old blanket filled with patches, small fixes and workarounds, so much that no one even remembers to how the patching was done ages ago!
The funny thing is that Atlassian themselves uses “custom fields” so it’s not even clear which are actually org-specific. The new JSM uses a lot of them, for example. It smells like things got so convoluted internally that even first party features are just velcro’d on top.
Yeah I had the exact same experience. What values does `custom_field_836` need when creating an issue? It seems to be required in the API but not in the UI, and feeding a value returned from an existing issue doesn't work!
It's the API equivalent of formatting a document in MS Word.
Simpler setup is perhaps - have a the pm-informed list of req of what your teams' needs and habits, and implement from scratch. Perhaps would take less than customizing JIRA. With history and all.
I just had a thought: is there some API so obscenely baroque and painful to use that even AIs would flatly refuse to work with them?
It would be an interesting exercise to keep feeding a coding agent ever crazier interface designs until it cracks.
“The base64 of the rot13 encrypted EBCDIC string has to be included in a JSON in the XML SOAP request, but both the JSON and XML escaping is manual and incorrect...”
"...but first split the string into chunks no bigger than 64 bytes and spread the request amongst HTTP headers instead of the POST body. Reassemble by trying every possible ordering until one passes the decoding steps."
>I just had a thought: is there some API so obscenely baroque and painful to use that even AIs would flatly refuse to work with them?
Copilot Studio. It's painful to try to set up any sort of logic within Copilot Studio. Worse if you're not on the most bleed-edging-new machine with overkill levels of ram. So I had a thought... why am I doing this when I have Claude with absolutely no quotas?
Turns out, there's just no way to drive it from Claude. It first started with the pac command line tool, but that's agonizingly broken. Tried to use Chrome next, but even it can't navigate that UI from the browser (neither could I, you'd click and sometimes the response occurs 10 seconds later). Copilot Studio is the quintessential Microsoft technology. Shortly after, Claude began experiencing what I can only call schizophrenic symptoms. It imagined that every time I queried it that there were embedded hacking attempts in my reply and that soon spread to every conversation I had with it even in new chats.
I’ve been trying for the last few weeks to get a really solid local model workflow going, and every single tool I use feels hostile af, whereas the stuff work pays for, it all “just works” together. It really irritates me.
> Quite a few have, the issue is that every Jira instance is a fractal shit snowflake of custom properties several layers deep through old failed migrations to new organization strategies.
This is key, Jira is fantastic so long as you have an angry commissar enforcing discipline, otherwise its a total free for all wasteland.
Yep, at a place I used to do work for I used their API to build a number of time saving things, all of which were tiny shell scripts.
Like adding a custom text field to each ticket with a human description of what a ticket did which someone would fill out along with a timestamp that got auto-filled out when a release shipped (deploy script). We'd release 1 ticket at a time as a line of work (many tickets per day). This combined with custom filters resulted in Jira providing us a human readable changelog for each board and the whole company. These messages were Slacked to the business so everyone had a pulse on what was going live. It was also a searchable audit log of all releases, tying back to a code change.
The deploy process also transitioned Jira tickets so a developer never had to do anything more than merge a ticket to main to have it get deployed and completed on Jira.
Lots of little scripts that automatically created tickets for routine tasks, etc..
It was super solid for years and I'm going to guess it's still running today. The naming conventions of the custom fields were lame but if your team is in control of setting up Jira, it wasn't hard to keep everything on the same page.
I started off not liking Jira and it had a lot of issues many years ago but it's actually not that bad nowadays once you set it up. I wouldn't choose it for my own company but as a developer and someone who has administrated it, used it as an end user and developed against it for internal tools, it mostly gets out of your way once it's configured and working.
> Hook it all together with a custom script and have the AI do all the Jira crap for you.
As if the bloat on Jira isn't big enough already. Adding more text will make it even slower since it will somehow automatically run everything over all that text all the time. If you need heating at your company, use Jira.
AI is the only way to reasonable interact with my employer's Jira board. The form for ticket creation had 206 fields across the tabs last time I checked. 10 are mandatory, including freetext that isn't really free, as the ticket goes to the shadow realm if you didn't match your team's valid values.
So it's a world where it's not just that one wants simple automation for ticket creation, but you might want to ask an LLM to update it. Dear Claude, I need to put a request with team X. I know John Doe works there. Please figure out what the hell their intake looks like, and what we have to fill out for the last few sprints and write it down, because I sure don't have time for this.
Our entire company is basically ran through Jira. Most processes rely on Jira and certain transitions fire of webhooks for automation.
One of the first things we did when we got access to AI was make a Jira MCP. I try not to touch Jira anymore. I get Claude to just create the Jira issues, write comments, create subtasks, link issues together, etc.
I used to dread having to investigate how to implement something and break it down into tasks because the more granular I broke things down, the more Jira issues I had to create to capture each task. Now I can just write everything up in a file and send an LLM to do all the Jira crap.
This sounds so dystopian. I mean of course it does, we are talking about Jira here, an Atlassian product. But what I mean is the constant plastering over. This is how Jira became so astonishingly bad in the first place. But imagine people plastering over these idiotic tools, Jira, Slack, Confluence with LLMs. And at some point in the future someone gets fed up with having to instruct the LLMs and writes their own tool on top of the LLM, that you use to use Jira. And the stack of crutches continues to grow endlessly, just because some suits have heard some pseudo wisdom at some point in their lives that rewrites are expensive. Well guess what's even more expensive than rewrites ... the mindset to never rewrite. This one will literally destroy the fucking planet with ever higher compute demand and requirement.
Our main problem is only that they are hijacking the prices incredibly.. Lately we had to cut the number of licences and users, since it was incredibly expensive.
I particularly like the hike between 10 users and 11, some startups begin with 5 people and when they reach more than 10 employees they are hit with the licence costs
> I'm surprised corporate programmers with the hacker spirit haven't automated most of the things they are asked to do in Jira with Python command line scripts or whatever.
Not a single of the many organisations that I worked for which used JIRA would give the credentials to do anything of this sort.
* "Corporate hackers" is a... not a very common thing. In the corporate world most programmers do what they are told to do and nothing more. Initiative is punishable.
* API wrappers aren't actually good. Not to mention that the API itself is very poor. JIRA has a tradition of arbitrary changing things, especially removing things, or not exposing the useful functionality. It's not a well-designed or well-executed product.
* AI is too immature and too non-deterministic to be useful for most of the things you want from a bug tracker. Also, for most companies, it's going to be too expensive to do it this way.
* QA is usually an afterthought, unless... we are talking about budget cuts and cutting corners, then it's left, right and center. Most companies see QA as a liability. They don't see it as producing value. They just have to pretend to have QA so that they can tell their customer they have it. When it comes to making QA do meaningful things, that require hiring good engineers, allocating development time, allocating compute resources... well, good luck with all that! Most QA I've seen, especially in international huge corporations was all for show, to produce appearance of work while following the same, mostly useless and mostly manual process.
I had a bunch of ideas about how QA can be made more efficient, both in terms of resource use and in terms of problem space it tries to address. Doing things like RCA automation or exploratory dynamic* testing... and after trying to see if any of such ideas would have any luck of becoming an actual successful product, I realized that nobody wants to improve QA. If a product made the "certification" (the ability to claim to have tested the product) cheaper, then it could be viable... but this is neither the direction I wanted to go, nor is it really all that feasible to improve a bug tracker in this direction.
----
* What I mean by exploratory testing is a sort of "fuzzing", however one that's more structured. Fuzzing, typically, is applied to the input, which then tries to explore all possible ways through the program under test. Exploratory testing is a test made up of modules that can be combined to produce longer tests. This addresses the problem of difficult to reach "corner" cases in the program, also the problem of reaching code paths that aren't directly (or at all) dependent on input.
I've worked for a few Fortune 50 companies, and they all had "shadow IT" that would crank out scripts and tools with no official sanction to work around the cumbersomeness of the official tools (or sometimes their complete lack). That's what corporate hackers are.
You know your company has made it when shadow IT has been merged into central IT after a tough political fight, and as they try to make the old shadow IT less responsive and more standard, a new wave of real shadow IT gets hired. That new, real shadow IT might even be paid more, because they are often hidden in CapEx somewhere, instead of having to go with HR standards for leveling and job descriptions. I've seen the biggest things come out of said shadow IT groups, precisely because their management is uninterested in the glacial procedures of real IT.
> I'm surprised corporate programmers with the hacker spirit haven't automated most of the things they are asked to do in Jira with Python command line scripts or whatever.
That's because corporate IT makes the tokens expire every 2 seconds so scripting becomes useless.
Seriously we have some tokens that expire every 1 hour.
I came back to a workplace, that still used JIRA. Obviously during the interview I was like oh JIRA yeah yeah yeah you still use that? I can use that.
Anyway yes, I can use JIRA. But it was a real shock to see the latest version of JIRA. It has a thousand papercuts, one of the worst is double clicking on text select stuff suddenly kicks fields into editor mode.
What I was remembering was JIRA Server 4.0, you can walk down memory lane here* - zoom in enough and you'll see each issue has a title, type, fix version, affects version, and so on, and then you end up going straight to the comments. Very straightforward.
About the double click into edit mode: Yes!! So much this! So annoying. Even basic text stuff they get wrong! But you know what a project manager told me ... They _like_ that, because they never use double click drag to select whole words ... ugh. Like always more proficient computer users are dragged down by the convenience for people barely able to use a computer.
> Obviously during the interview I was like oh JIRA yeah yeah yeah you still use that? I can use that.
Hold up, did I miss something? Fall into a time hole? Why are we talking about Jira like it’s Visicalc? Not currently working for an IT company, so maybe I missed something cataclysmic in the past two years…
You can find correlations with stock price and positive user perception that were held up in product.
It came with its share of paper cuts too, like going from 4.x to 6.x or literally anything challenging to the rickety boxes of OFBiz and wholly-different products skinned for looks-maxxing.
Those engineers dipped out a while back and took their $280 shares with them.
My day job doesn't require using Jira or similar tools any more, so from a perspective of genuine curiosity: what's the consensus among entire project teams (not just the nerds) for a better alternative?
The task tracking features you actually use, it’s fast, you don’t waste a billion years playing “who knows how to do this and has the permissions hell” that you would with Jira. The integrations work properly.
The layout and UX makes sense, and all the nontechnical people I’ve used it with liked it and had no issues with it.
Ekso - https://ekso.app with docs at https://ekso.dev. Docker installed with PostgreSQL or SQL Server, your choice of where to host it, with a Render install. 103 MCP Tools with manual or AI-assisted resource planning. Oh, and a CLI that effortlessly migrates projects from Jira.
Another vote for Linear. The absolute craft that has gone into building this product and company I truly believe is second to none. Once you start using Linear you start seeing how strong their design and UX influence is on so many other companies. This has certainly been the case for us.
Linear is quite seriously one of the best products (in any category) I’ve ever used.
They have a first class MCP server, and you can basically run a project from your agent. Implementing something, and you find out there's more to do later on in a separate issue? Agent creates the issue for you and off you go. It works very nicely, and also has a great UI but I mostly using it from my agent.
That version of JIRA could still easily be configured to be awful. That's the main problem with JIRA - the power to actually configure it to be sane is always reserved by a few people who don't want to bother, don't have time and don't care because they aren't really using it every day.
Well one of the problems anyway. It's also unimaginably slow, and has weird limitations like issues can't be parents of other issues.
The non-existence or non-availability of recursive features, like an issue being parent of an issue, or in Slack a thread being started inside a thread and so on, to me usually indicates, that the developers of the tool are afraid of recursion, and have never learned how to implement this easily in a database, used a programming language that easily deals with recursion, and don't know how to deal with it in other languages. They tend to think "it's too complicated". It's usually just a silly lazy excuse, but here we are, with tons of inflexible shitty tools.
Alternatively, it is a conscious decision to help prevent users from causing complicated situations.
Given a highly configurable system, users will find ways to (unintentionally) tie it into knots, so adding some guardrails can help reduce complexity demons down the line (both in the technical implementation and the user experience).
I guess I prefer to give people making things the benefit of the doubt.
You see, it's not the tool's fault. There is simply no one on this planet, who can set up the tool correctly... Surely we cannot hold the tool responsible for human incompetence. For whom it is built then, you ask? Well, that's an entirely different question, that shall not be discussed at this point.
Yeah the slowness is what always gets me. Like in essence a ticketing system isn't more than just a database of tickets and relations between tickets and states. And okay you can kinda make it explode by having tons of interconnected tickets and custom fields and plugins. But I will never understand how something that just works with simple textual data and attachments can be so unbearably slow.
1. All the checks it has to do to see if there are relations between tickets, states, triggers, actions, reports, etc.
2. Accessing separate subsets of data for each ticket from different locations and bringing it all together (epics, sprints, user lists, comments, reactions, linked issues, linked PRs and branches, etc)
3. The code is apparently a complete dumpster fire, from what I've heard from people at Atlassian.
I've always hated Gmail. I still do. But I switched jobs last year, and the new place uses Outlook instead. I struggle to find a word that adequately describes my disdain for Outlook; hate doesn't even begin to cover it. It struggles at the most basic of tasks: receiving and sending email. I'll get a notification on my phone about an email. I open the app and there's nothing. Pull down to refresh does nothing. It takes about 1-15 minutes to appear usually. Everything I do in Outlook is tedious as fuck.
Many moons ago, in like Office 2003 times, I used Outlook as well, and I don't remember it being this bad. How did it regress so badly?
Don't even get me started on Teams - I don't really know what problem that program is supposed to solve. Also our shared files are in OneDrive. But they're also in Teams. And they're also in Outlook for some reason. I had to transfer a bunch of computer backups (CloneZilla images) to OneDrive/Teams/Outlook. About 30 or so GB. It took forever, and my 6-core Ryzen laptop with Win11 was spinning its fans like mad the entire time. How? Why?
> I've always hated Gmail. I still do. But I switched jobs last year, and the new place uses Outlook instead. I struggle to find a word that adequately describes my disdain for Outlook; hate doesn't even begin to cover it. It struggles at the most basic of tasks: receiving and sending email. I'll get a notification on my phone about an email. I open the app and there's nothing. Pull down to refresh does nothing. It takes about 1-15 minutes to appear usually. Everything I do in Outlook is tedious as fuck.
The number of times at my last job I had to tell someone to re-send me an e-mail because Outlook search couldn't find anything with "GitLab Upgrade" in the subject line (let alone the twelve message thread it was part of) was staggering.
Also, my most hated functionality in Outlook: distribution groups (or whatever they call them). Instead of saying "devops@corp.com forwards to this list of people", you say "Devops is this group of people", so when you send an email to "Devops" it goes to all of those people. Sure, great.
Except that it means that you can't filter by that. Saying 'Devops' is just shorthand for saying "This guy, this guy, this guy, and this guy" explicitly. If you say "e-mails sent to Devops" Outlook interprets that as "e-mails with any of this group of people in the To or CC field", meaning that Outlook filters couldn't distinguish between "e-mails sent to me" and "e-mails sent to my team". Since I almost always had someone from my team CC'ed on e-mails I sent, it meant that my "e-mails sent to Devops" filter just matched every e-mail coming or going.
It ended up being that the alerting and monitoring e-mails we got I was only able to filter because the relevant tools put various headers into the e-mail (like X-Nagios-Alert or whatever) or they came from specific e-mail addresses (which was not always reliable but was often reliable enough).
But it remains unread until you open another email and read it ... and only then, not immediately but after like 1-2 seconds, the previous email gets marked as read ...
Sorry we're out of ammunition but I created "get more shotgun ammo" as part of the "supplies and buffs" epic and put it in the next sprint at one story point. This might result in DOOM-212 "Shoot Demons" getting bumped to next month but if you think it won't affect scope we can pull it in after all. LMK what you think as I'll need to get exec buy-in on this before we pull the trigger on this, literally and figuratively.
I don't think so. First, JIRA is not orchestration. Second, all workflow needs to do is associate some status with external information, and make it easy to manipulate those. You need triggers and rules, some thing like infinite counters, two stacks, a bidirectional tape, etc.
I love Jira automations. Whenever I start on a new team using Jira, I go in and set up automations that do things like auto-count the subtask story points to fill the parent task's story points, or automatically move tickets to backlog if they don't have fully refined properties (missing user assignment, missing story points, missing priority, missing description, etc). In one sprint the team has a more organized board. Dunno why they're not the defaults, but easy enough to fix with automations.
Why would tickets need to have a user assignment to be considered refined? It should be up to whomever picks it to work to get assigned to, not a part of the refinement.
Ah, of course, I haven't worked with non-Kanban boards in more than a decade where having a swimlane for the "Todo" items picked for next-in-line work is common, and in that lane there are no users assigned.
I think at least 60% companies that use Jira could do better with just Trello. I dont know how it is possible to create such a horrible mess with task manager and some reports. But it probably keeps the managers and POs bussy so :D
I'm sure Atlassian knows this as well. When you setup a basic Kanban board in Jira, it is basically a Trello board. It is offered as one of the default options.
I was actually surprised they offered such simple options. Of course the complexity is there, the moment you start wanting an extra column, you're in the rabbit hole.
Probably true, but Trello just had a major multi-day outage that prevented commenting on or moving cards, so I would be hard pressed to recommended it to anyone at this point.
This is true because Trello uses simplicity as a constraint, so users can't make quite as big a mess. They can still make a mess though and as a source of truth it still requires people to move things properly, so it isn't really any better. All project tracking applications suffer from the same ultimate root cause of problems: users.
Not surprising if you've worked with their automation flows in-depth before. What's surprising is how awful their automation flow tools are to work with. Feels like programming in assembly to accomplish what you want.
Honestly the best issue tracker I've used so far is Phabricator (now Phorge). It would be a bit weird to use it just for issues though, and tbh I'm not sure I would recommend it as a forge because it has approximately no CI support.
Any software that breeds a consultancy culture around it is a software that has become too complex and should probably be broken up into or replaced by smaller, more manageable parts.
I'm saying that as a former ACE-certified Atlassian Consultant from a Platinum Partner. I'm much happier now.
When would it be better to write software as Jira state transitions, instead of using python (with its large software ecosystem) or Rust or Go (type safety, etc)?
It can’t be because in order to administer Turing test the system has to be usable straight away. This system requires extensive training and specific knowledge and
steps for that.
Jira is the one product I feel needs to be AI native.
AI native in the sense that it papers over the pain points.
New JIRA admin? AI will set it up to do what you want (after all, Atlassian has a great training set as they can see which Cloud installs work well)
Need to set up a workflow? Bam, AI to do that.
Need to onboard a user or manage permissions? Again, have a chatbot to do it (as a time-to-time Jira standin Admin, changing permissions always needs doing in 2+ places and devolves into a "Can you see this yet?" round of questions)
Definitely, that's the issue with legacy tools and just plugging AI agents on top of existing API capabilities that were designed for human in the first place.
Retrofitting agent-safety onto APIs that predate agents is harder than it looks (guardrails, permissions scopes etc.)
Disclosure: I'm CTO of an ITSM product in this space (Siit), so I think about this a lot.