Sorry to tell you this, but everything you describe is very normal/typical for 99% of "software" jobs.
Your options are essentially:
1) Get good at dealing with all the non-software stuff you are dealing with, the administrative nonsense, arguing with the UI people ("collaborating", "influencing", etc.), interviewing, hiring, and you become a "company man" / middle manager. You can write interesting code on the side as your hobby, or occasionally at work, but it won't be a focus.
2) Get a job in a situation where programming/software development is actually a core part of what makes the company money. You might find this at some high-frequency trading outfit, hedge fund, investment bank, FANG/MANGA/whatever its called these days - even there, 90% of the software jobs are non-core monkey patching as you describe, but there do at least have some openings where serious programming ability moves the needle for them.
The fastest way to leapfrog your career is move to a new challenge every 12-18 months. The moment you’re stagnant, leave. You can be in a challenging environment at one company, but this doesn’t sound like one of those companies. Their issues are likely systemic. You’re right about losing your skills.
The only thing we can’t make more of is time. If you’re not willing to risk another year hoping, it may be time to move on to the next challenge
The grass is always greener. If you have a good paying job, it isn't a great time to switch IMO. But what do I know? I'm working at a grocery store.
I've quit good paying jobs because of boredom. It was a mistake.
> my immediate boss knows that the situation is ideal
I am assuming "not".
Hard to advise in this situation where you are comfortable but not progressing. A decision to jump is one only you can make.
undefined
Honestly, this sounds to me like... "welcome to the real world of software development!" :-)
Not saying that every job is identical in every respect, but probably few jobs will ever fit your (or my) definition of perfect.
Sounds like there are some great opportunities here. If management is at least on board with the theory of doing better CI/CD, then there is probably opportunity for you to lead that! And also opportunity for you to work with management to figure out how to fund it! Customers often don't care about engineering improvements if they can't tell a difference in the end product, so you may have to be creative about how to sell this.
Likewise, customers don't care about programming. If they think about it at all, they'd probably be happy that most of your work is light customization, as that's less likely to cause them bugs. Understanding what makes customers want to hand over money in exchange for your work is very valuable. You may be able to eventually propose new products or feature that they want to pay for, and that you can write software for.
I feel like I'm missing context for your iOS maintenance mode question, but sure, "finished" iOS applications need to be maintained for new iOS devices and such.
If it's really what you want, you probably can find another job that's all (or mostly) coding, and on a team that's already using better practices.
But on the other hand, I think your job sounds like a great place to learn about what makes customers happy and how to push better engineering concepts from "suggestion" to "funded plan" to "finished".
As always, beware of career advice from random people on the internet!