Game engine programmer here. I came up on DOS and Windows, and for a long time that's what I was comfortable with, and everything else I presumed to be alien. Once I'd worked on things that were both cross-platform and low-level, the idea that different hardware platforms and OSes were different went out the window somewhat. It was literally enlightening. In the old days, we had to be mercenaries. SNES is popular now? Port the code to that. PC getting big? Port to that. Later on, it was more like you had to be on everything. The last proprietary engine I worked on would compile with large subsets of features intact on Windows, MacOS, PS2 through 4, XBOX 1 through One, iOS, and Android. Probably more than that! Someone in the company was always adding a new backend, and I was frequently surprised to learn we ran on something I didn't even know we ran on. To a user, these platforms are totally different from each other, right? They aren't. It's all putting data in buffers, pushing parameters on the stack, and jumping. More importantly, the backends were tiny compared to the game engine.
This perspective makes it supremely frustrating anytime I try to get a 'normal' programming job, and run into the 'but do you have .NET4, ASP.NET Core, and JS6??' mentality.