I couple of months ago I was jobhunting. Since my resume is still out there I'm getting an average to two phone calls and four e-mailed messsages per day inquiring if I'm still on the market.
Most of these are calling for Linux kernel developers. However I've found that the term seems to be over-used; or at least that it covers a somewhat more vague range of skill sets then one would expect of a requirement that sounds so specific.
In my case I've written one device driver (a trivial little watchdog driver for a Quanta motherboard), occasionally helped with a few others (mostly MTD/flash ROM), done a few minor patches to init.c
and wrangled lots and lots of patches from one tree into another.
I don't consider myself to be a kernel developer.
These days the vast majority of the recruiters who are calling me have just about zero technical acumen ... they are apparently doing simple key word searches and blindly calling anyone whose resume matches >n of their req's keys.
However, it feels like the term: "kernel developer" (which in modern recruiting parlance seems to be synonymous with "Linux kernel developer") can mean any of the following:
- Someone whose primary job responsibilities would be to develop and maintain a set of kernel patches (probably out-of-tree) for some proprietary hardware, or specialized application. (Probably what most of us, as engineers would think the phrase would mean)
- Someone whose primary responsibilities would be focused on merging patches from the community and possibly other sources into an "in-house" or distribution-specific code base (which most of us would likely describe as a configuration manager)
- Someone who's going to develop new network protocols, new filesystems, new security features (or LSM modules), new instrumentation, etc. (Isn't the community already doing that all the time?)
- Someone who knows C sans C++ and the difference between a system call and a library function
- Someone who knows how to rebuild a kernel and change some settings
- Someone who knwos how to use the
sysctl
command
So my questions:
- What does "kernel developer" really mean?
- How could we, as a community, promote a clear standard for what the term means?
- What would you consider the minimum requirements for putting "kernel developer" on your own resume?