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.
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.
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.
As a CTO I have declared that Jira is owned by engineering and it is our developers’ process.
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.
It's the API equivalent of formatting a document in MS Word.
If it was about the ticket system, it'd be solved already. But it isn't.
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."
[0] https://en.wikipedia.org/wiki/International_Obfuscated_C_Cod...
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.
This is key, Jira is fantastic so long as you have an angry commissar enforcing discipline, otherwise its a total free for all wasteland.
Couldn't have said it better
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.
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.
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.
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.
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.
It's amazing how far just a little bit of programming can
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.
that thing does not exists