Every specialisation is specialisation. It's just that more people are into (for example) web apps than OS development. If you spend some time in embedded dev land, things like that make sense. You just get better at thinking at hardware level / synchronising devices, etc.
I mean, they're still super clever, but people learn that stuff by reading about it and practicing. You could go that way too, it's not black magic.
I learned web dev first by using Geocities and Frontpage, then Dreamweaver. These days I actually get paid to write Javascript (something young me would've found unbelievable enough already), but to me that's still a huge difference from "real" programming, especially in C or assembly.
Web dev (at least the kind I do) is mostly still just declaring UI in a XML like syntax, then wrapping it up in some events and state management. It's not that different from, say, Visual Basic. At its core it's a bunch of event driven reactions and API calls based on UI clicks. Once upon time that was Perl or PHP or jQuery, now it's usually React, but the fundamental process of "declare UI, add event handlers, send to APIs" hasn't changed much IMO.
But an OS? Man, how do you work with memory access? Overflows? Garbage collection? Device drivers? Caching? Graphics pipelines? USB? Lightning? I don't even know where to start with any of that, and an OS is ALL of that and then some.
It's almost exactly the same, except the building blocks are much simpler (=more primitive) so you have to spend more time per useful thing you want to get the machine to do.
If you want to get a taste of what that means that is definitely 100% within your abilities, try to write a Brainfuck interpreter in JS, and a Brainfuck to JavaScript compiler (that yields a string that you can eval() to run the program).
Then try to write some simple Brainfuck programs, then try to write a Brainfuck interpreter in Brainfuck. At this point you won't yet know how to write an operating system, but you'll definitely know how it feels to write one.
Not sure why I'm getting such negative reactions. I've given these exercises to many developers, some of them very junior, and seen them complete them successfully. It's not that hard to do each step after the previous ones, and very rewarding to complete the entire thing.
It sounds doable, just painful! I'm not sure I'm masochistic enough. Like I could do that, or maybe go on a bike ride, or get some ice cream...
I think I have pretty underwhelming dreams relative to OS devs, lol. I feel a ping of reward when a web page loads without crashing, or a npm audit passes without red, or I finish a level in Mini Motorways.
Generally, my secret to a happy life is to aim low, and then be satisfied once I hit half that :)
I promise you it isn't. It's a fun challenge, and not too hard. Smaller and easier, say, than delivering a full eCommerce website end-to-end. I'm not an OS dev myself, I just love playing with technology of all kinds and picking up elegant ideas, and this is one kind :)
Not too much work, either. I once live coded a Brainfuck interpreter in 30 minutes for PyCon IL, and there aren't really any tricks involved, just work, so it should take the average dev that didn't just practice it maybe 2-4 hours: https://www.youtube.com/watch?v=F5P6Q7vs_-Y
> But an OS? Man, how do you work with memory access? Overflows? Garbage collection? Device drivers? Caching? Graphics pipelines? USB? Lightning?
You start much simpler. Grab some ESP32 or ARM development board and start with trivial things on them. Simple devices also have simple drivers - sure, trying to connect to an NVIDIA card is hard, but an 128x128 LCD display is trivial. Then you build more complex things on top of that. Same with PHP - you start with 'echo "hello world"' rather than full reactive page with many server routing endpoints.
Technologies become more complex as people accumulate experience.
Web only started in the 90s, and was intentionally designed to be simple (html and stuff). Even so, it's morphed into a very complex thing already. It doesn't feel like so because you (and to some extent, I too) have been witnessing its evolution as it happens, so it's all incremental, but I can imagine a total newbie coming into the field and feeling overwhelmed.
Like, try to explain things like CSRF tokens, Web Assembly, HTTP/3...