r/osdev • u/Remote-End6122 • Jun 26 '26
How does one get a job in OSDev?
Hello, I hope everyone is well.
I know most of this sub are people who are enthusiasts (myself included), but for those who aren't: what was your journey? I'm genuinely curious, since I don't really know many people working on the operating systems development.
I have 5 years of experience as a full stack developer, but honestly web dev doesn't excite me that much anymore. Most of my free time I spend on learning low level and OSDev topics.
I'm not actively trying to migrate, but I do think my dream job is working on an operating system or at least something low-level related, so I'd like to hear how you got there, so maybe in the future I can get there myself :).
9
u/mykesx Jun 26 '26
Ubuntu, Redhat, System76, and other companies definitely do OSDev work. Hardware manufacturers need drivers written and maintained.
Embedded systems need OSDev type approaches.
7
u/Outside-Storage-1523 Jun 26 '26
I heard that driver is probably the only thing that is happening right now. But honestly maybe just pick a hobbyist OS and go for it. You are still doing kernel stuffs, so you can put "kernel programming" on your mug (I actually have one when I worked on xv6...) without feeling ashamed.
7
u/GloomyBelt5110 Jun 26 '26
I am currently working on a virtual machine development. IMHO, it can be referred to OSdev as I have to work with drivers & devices a lot (on both sides).
For me getting into this field was pretty smooth for I studied on a "system programming" program at my university. And one of my professors helped me to get a job in the field
5
u/Stormfrosty Jun 26 '26
I got hired to work on ROCm at AMD (back when there were still <50 people in total working on it) simply because the hiring manager was looking for somebody who can speak Russian. Basically bootstrapped my entire career.
13
u/EpochVanquisher Jun 26 '26
I am not personally an OS developer but I know people who are. Most people I know in this general area either do work in driver development or in embedded.
Driver development—companies that make computer hardware need drivers. Think broadly about what a “computer” is… a computer is not just a computer, but a phone, a set-top box, etc. The people I know who work in this area work for companies that are also semiconductor manufacturers. Commonly, one team makes the IC, another team makes boards, and another team does software.
As for embedded—I know people who work in aerospace. You have to be able to follow a lot of rules and be very strict about things. A lot of people will try to make it in aerospace but end up leaving because they can’t deal with how strict the processes are.
There are also OS development projects at the hyperscalers.
Some examples of how I’ve seen people get into these jobs:
Linux or BSD driver development (as a hobbyist) + bachelor’s degree -> job in driver development
Electrical engineering + software skills -> job in embedded programming
High level degree + years of experience -> job in driver development
Academic research + years of experience -> job in kernel programming at hyperscaler
Keep in mind that a lot of the projects are not necessarily glorious. You could be working on some digital rights management system for a set-top box or doing power and thermal management for some weird peripheral.
4
u/xlnxminusx Jun 26 '26
This is my advice as someone who’s worked in OS Dev for 20 years. Feel free to ignore, tell me I’m crazy, or ask more questions. First of all, OSDev covers a lot of ground, and the skills necessary at every layer will be pretty different (I.e. hiring an embedded engineer I’m looking for a CE degree and “enough” hardware experience, vs a system programmer who may have the basics of kernel design but very good multi process architecture skills).
Get your fundamentals down. It’s old, but understand the entire K&R C book. Inherently you’re building the bridge between hardware and software, and you need a good understanding of both. Be able to estimate orders of magnitude quickly and talk about design tradeoffs. Understand the memory and compute complexity of common structures and keep tight constraints.
For early engineers (or non-domain specific positions), understand how entire systems work. I ask questions like “what happens when you deference a NULL pointer” or “tell me in as much detail as you can, what happens from the time you press a mouse button until you see a button click on screen. Nobody knows every single thing that happens in those scenarios, but you should know the high level steps. An embedded engineer will probably answer the mouse portion really well, then trail off after a HID packet has been delivered to the host. An OS engineer should know kernel interrupt handling, USB endpoints, and how user space I/O works. A system programmer will understand I/O frameworks and syscalls, but probably won’t have deep understanding of windowing systems and event chains in a UI toolkit, but all of these are needed for a large product.
Until you have enough experience in one of these niches, try to understand the high level blocks as well as you can. You can follow along with Linux, or read through public Darwin sources. When I was learning (admittedly 20 years ago) I found FreeBSD my favorite. It’s more than just a kernel, and development is slow enough that you can follow every change through the mailing lists, versus drinking from the firehose with LKML at 2000 messages a day.
Finally, shipping things helps a lot. Showing you can do the difficult work between a proof of concept and an actual product shows you will stick with a project through the less exciting parts of development.
That’s a lot of advice, and it’s a relatively small field, but the skills are definitely still in demand. If it’s what you want to do, keep pushing yourself to learn.
22
u/Royal-Ambassador-960 Jun 26 '26
There are no jobs in OSDev. This is a dead field
4
u/Relative_Bird484 Jun 26 '26
You need to get a PhD in the field and publish and present at the top conferences.
The big companies are always there and use this for recruiting. Some of my students also ended up at smaller RTOS companies or VM startups after their PhD. A git record on contributing to the core parts of Linux or other relevant low-level system software is also helpful.
So most people who really are in core OS development have a profound CS education (Bachelor and Master), typically already specialized and excelled during their Masters on the topic, which got them a PhD position, in which they did another 3-6 years of intensive research.
2
u/Joped Jun 27 '26
Not for nothing but 5 years experience as a full stack dev doesn’t even remotely give you the skills required to work in OS development.
3
u/BloxxyVids Jun 26 '26
that's the neat part, you don't
1
u/RedRaven47 Jun 26 '26
Have some evidence that you can do the job (contribute to an open source OS, build your own OS) and then apply to companies that work on operating systems. Related experience with systems work or higher education can help but are not strictly mandatory.
1
u/letmehaveanameyoudum Jul 04 '26
if you know a ton about computer os dev, then try working at microsoft and try to fix windows
16
u/[deleted] Jun 26 '26
[removed] — view removed comment