What was your "linux kernel developer" journey like?
Coming from a microcontroller background, there are pretty good roadmaps to become a microcontroller-based products developer, aka embedded software/hardware engineer. It basically goes like this: You take a microcontroller, learn its architecture, understand it's peripheral. Then you learn to program it in assembly and then in C/C++. Make a couple of projects and there you are - job ready!!!
However, I feel lost when I try to get into Linux. There are just so many layers to this. You can work on so many different abstractions. I am not even sure if I am asking in the correct subreddit. I want to know how the people who maintain the kernel and its component got into writing/maintaining code for the kernel. There is just so so so much to learn.
How did you start and more importantly, how did you make sure that whatever you're doing to learn the stuff is correct? What do I need to learn first, where do I begin with? I might sound naive, but I want to be one of those peoples who actively contribute to the kernel. And when I think about, I feel that it's already a well established code, what would I be able to contribute to it.
I started my career two years ago as an embedded software developer (c programming on microcontroller based products) and during my first live project, I added so many bugs. Simply because the code base was around 5000 lines of code and me being a beginner, did not have a good understanding of each of the modules. Also, I am highly average. But what I think is, how do kernel developers make sure that every code change does not break the system?
Even though I do not have any understanding of the kernel, I have a deep appreciation of it and the people who make it possible. And this inspires me to become one of those people who work on the kernel. How can I be one?
Thanks a lot for reading.