I was going to add this as a reply to a comment downthread but I think it's too important to bury. The fundamental rule of career progression in the technology industry is to position yourself as a domain expert in something more specific than "programming" . It's very difficult to "own" "programming" in a way where you can use scarcity to drive integer multiple increases of the median salary. It is not as difficult…
I second this. I'm currently on a team that has a couple senior engineers, but neither of them are true experts of what our team does (iOS). One has decades of web dev experience while the other has decades of Java service experience. Our team badly needs an iOS expert to make the tough decisions and lead architecture.
Mobile app development is becoming quite clear cut, one only needs to read the docs and know the APIs.