gpieterz:
I agree in principle that too long a lost of skills is suspicious (although that does not stop them appearing in job ads!),
I would not say that it is "suspicious". It is entirely possible to have a long list of skills, it's just that they can't be practiced all at once by a single developer. Teams are required for complex software projects. A single developer would spend far too much time on revision. It can take hours, days, sometimes weeks to get back up to speed with complex skills that haven't been practiced for a while. These skills take a long time to learn, but are very quick to evaporate if not used regularly and often!
And then there are all the various complex components in a given project to consider. These components can't be developed sequentially because together they form an integrated system. Such a project must be coordinated and managed efficiently.
gpieterz:
There are cross platform frameworks that work well on Windows, Mac, Linux and Unix and mobile ones that work on the two major mobile platforms ...
I believe you that some work well. Unfortunately, "well" is not good enough. Complex projects require as near to perfect as you can possibly get. But it does sound great in theory, and I honestly wish there was such a system.
When I started programming apps and games, I tried my utmost to avoid Android Studio, Java, iOS, Swift, etc.. I tried my best to find a single system which I could use to produce apps for both Android and iOS. Like you, I thought that it would be much easier and a lot less work.
I considered Google's Flutter. This looked like the most developed system. I thought if anyone can do this, then Google can. But after more reading, I decided not to risk it because of previous bad experience in this area.
So I got into Android programming. My intention was to also learn Apple's equivalent system for iOS. However, it turns out that the Android system alone is so complex that it actually needs a specialist team in itself! Obviously then, the Apple system is going to be just as complex, and so I've decided to outsource the iOS apps. I will be able to use the same engineering and design specifications more or less with some adjustments, and the coding should be easy enough for a specialist Swift programmer.
Another thing, I would never entertain such a complex project from an indie developer or even a small team. I mean, just look at the output from the Python/Kivy team in the mobile games space. After all these years, Kivy still feels like a cult hobbyist project compared to the Android system.
And Flutter is still too experimental and immature. I'm fully convinced that I took the best possible route when I decided to go with Android Studio, along with Java (in which I have some experience over the years) and the Android framework, and to outsource the iOS work. I know I will be able to provide the best quality apps for my users.
gpieterz:
... so only really two skill sets required.
I assume you meant to say "two skills" rather than "two skill sets". Anyway, as I've already suggested above, there are literally dozens of skills required across software engineering and programming. Some of them take years to master. This would still be true if there was a single framework. In theory, engineering skills should be generic and applicable to many different programming languages and tools. It is different in the real world. There are a few differences which have been dictated by programming requirements specific to the operating systems and languages.
After reading your message, I did take another quick look around, and I checked on the progress of Google's Flutter. It seems that nothing much has changed. I'm in two minds about this project. One minute I can't see this ever happening to such an extent that the specialist skills for Android and iOS will become obsolete. But on the other hand, this is Google, and so the Google Flutter experiment will continue. But even for them, they will find it hard to keep up with Android and iOS continuing to develop. At best, it's going to take a long time for it to become mainstream and dominate. I don't have the time to wait around. In my opinion, the only way that there could be a single development system any time soon would be if Android and iOS were to merge, or form some kind of partnership to build such a system. Until then, I'll let young ones be the guinea pigs!
Another important point to note is that Android and iOS are two completely different technologies producing the same thing - a bit like, say, VHS and Betamax. I think that it would be so difficult to merge them into a system which performed as well as the original individual systems, that it would be better to let one of them die and the other to dominate - similar to how VHS eventually won out over Betamax.
And Flutter requires the user to learn Dart. Programming languages are obviously an integral part of the core of any software development system. This means that Android and iOS specialists would need to stop using their current respective languages. This is especially disadvantageous for Android developers who use Java because Java is so ubiquitous and is useful in many different areas. Java is so important that it replaced SmallTalk as the language used in the Open University's object-oriented degree modules. I doubt that Dart will ever compete with Java on this level because it is too specialised. This presents an extra obstacle for the development of a single framework.