Keep it simple stupid. KISS. I first heard of this in college in writing class. I dismissed it as dogma. Some thins you can't keep simple.
Most things you can and you should.
If something just starts to look overtly complex, you need to reconsider. Be willing to wipe the board clean and start over.
I was reminded of the KISS rule earlier this week when developing a prototype for an accessible validation component, where the errors are visually and programmatically associated with the form control.
My first iteration was complex, filled with ARIA roles and lots of hard coded attributes. And it still wasn't performing as I wanted to. I knew I had messed up somewhere and started over from the good old documentation on MDN.
And of course there was a much simpler solution. One that works well for users who rely on screen readers. And one that works well for users with no visual impairments. Bonus points as well. It can be properly tested in an end-to-end test and makes the UI simpler.
Lesson?
If you start slapping lots of ARIA on something in the hopes it will eventually work, stop and re-assess where you want to go. Chances are, you've lost sight of that goal a few ARIA roles ago.