In my department, mobile is the bottleneck for every PM's ambitions and the only speciality where recruiting never even approaches headcount/budget. It's possible that the low end contract labor market is flooded or something, but iOS and Android devs who can pass a whiteboard are worth their weight in gold.
I understand that the bootcamps and proliferation of web-teaching schools have made web dev seem like the easy thing, and I agree that what I do is less complex than these $800k-earning data engineers, but web development in 2019 is no joke. The same goes for iOS/Android.
The types of things these companies are trying to build are not just "slap it together in a week and done" type projects and it takes experience to architect and engineer them effectively. Your average bootcamp grad is not able to do it yet.
iOS/Android/Web development forms the 3 primary portals to a company's clients, and as long as that's true, the value of such skillsets will remain high.
I don't care if it's games, web front end, back end, databases, machine learning, mobile, embedded literally doesn't matter, if you think you can brush off any of them like that, you haven't built something substantial with them.
Are there varying levels of difficulty across niches? Sure, but one person can slap a few python libraries together in an afternoon and call it AI/machine learning, and a 3-5 person team can also spend 6 months building a monster, fined tuned native iOS application.
There's challenges everywhere, it's a matter of finding them.
Certain careers DO have levels of challenge, as well as other barriers to entry, that increase the value of workers. You could not argue to me that flipping burgers at McDonalds is hard. Within the domain of computer science, you simply cannot argue to me that generic CRUD web/ios/android is hard.
I'm merely stating that the domain itself, is not by default, a high enough barrier to entry to merit any kind of above average salary. Of course if you're a much higher performer, with a much deeper knowledge base within that domain, then your pay will likely reflect that.
If you want to make above average salaries you're going to have to specialize. Find something that is both challenging (to reduce barrier to entry) and niche (to demand a higher salary). In other words - specialize. Staying as a generic web/ios/android dev is only going to guarantee that your salary becomes more and more diluted by the avalanche of developers entering the field. The barrier to entry is just too low.