I have spent a good part of my life doing things like device control, and direct, native, user interface. These can get mui hairy.
It's difficult to talk to a lot of folks about these, as everyone is focused on "the Big Picture," to quote Peter O'Toole.
Device control, in particular, has a lot of aspects that are unique, and not particularly applicable to many other disciplines. With the advent of some of the new communication techs, like Bluetooth, and advanced serial buses (like USB and Thunderbolt), we're starting to see a bit of cross-pollination with communications (another discipline that many software developers never need to worry about).
UI has always been best served (not exclusive, but best), as native. This means that each platform tends to have a specific framework.
Learning frameworks, SDKs, and APIs has always (for me) been the most time-consuming part of adapting to a platform or system.
But that's just me. YMMV.