|
I can speak only for kernel development part of question. Assuming your question is about Linux kernel - 1. You must have good systems understanding, and I assume you already know basic computer organization/architecture. Read Robert Love's Linux Kernel Development to begin with. 2. Start dabbling with small device drivers. Use Linux Driver Development, or other such books. 3. Pick a small subsystem within Linux (say, a specific driver, or filesystem, or PCI, etc) and start reading it's mailing list like a religion. Initially, it wont make sense but keep pushing - whatever you don't understand, read about it, find it's code, ask questions (usually on IRC, avoid mailing list for asking introductory questions). There are many resources these days about kernel in general and not necessarily Linux kernel. You can read/use those. Best way, as with any other field, is to get involved - either by getting into a kernel dev team or taking up a small project. Be aware that unlike other domains, in kernel development, significant time is spent in learning/understanding underlying system (hardware, system architecture, etc) and amount of code written in comparison to learning, is very less. Also, a decade ago, kernel team was considered as elite team in company. These days they are just sustenance team in most companies (exception may be Intel, AMD, 1 or 2 teams in Google/FB/Apple and few other companies). Also, I feel being kernel domain reduces your scope in corporate world (it's a separate topic). However, kernel devs are still quite paid well due to shortage of expertise in this domain. For Security analyst, just like kernel dev, one needs to understand system very well. Having good grasp of system, underlying architecture in hardware or in memory, does help significantly but I dont think kernel development background is necessary. |