I am in the progress of moving on to a new software development job. There are openings for both low-level control software and high-level application software. To me, both opportunities are exciting.
Working on embedded/control software technically means programming the operating system for a specific hardware. But this might mean I will be an expert for only that hardware's API and if I move on in the future, I would have to throw away that knowledge.
Working on application software, in my understanding, means software that can scale, so I will be developing my design skills as well. Moreover, libraries tend to be reused compared to hardware APIs so what I learn might be of use in the future.
But that's my narrow view of the world. I do not have enough experience to see a bigger picture. Is there anything else I should be aware of in choosing between these two software development flavors?