Systems Software Engineer
The job description
Tech stack. C/C++, Rust, Linux internals, operating systems concepts, networking stacks, performance profiling, concurrency primitives, debugging with gdb/perf, kernel modules
About the role
You will build the low-level software that everything else in the stack depends on: operating system components, networking stacks, storage engines, and performance-critical libraries. Systems software engineers work close to the hardware, where understanding memory layout, cache behavior, and system call costs separates good code from great code. You will debug the problems nobody else can solve: race conditions, memory corruption, and performance cliffs, using specialized tools and reasoning that most engineers never need. This is engineering for people who want to understand how computers actually work, all the way down.
What you will achieve
- Build performant systems components including daemons, libraries, and drivers with careful attention to resource usage, latency, and correctness under concurrency
- Deliver measurable performance improvements through profiling-driven optimization: fewer allocations, better cache behavior, and smarter I/O patterns
- Debug the hardest system issues: data races, deadlocks, memory corruption, and subtle kernel interactions, with root causes documented clearly for the team
- Create robust networking or storage code handling real-world failure modes: partial writes, connection drops, and backpressure, all covered by tests
- Write systems code that others can maintain: clear abstractions, thorough comments explaining non-obvious decisions, and comprehensive test coverage
What you will bring
Must-haves
- 2 to 5 years writing systems software in C, C++, or Rust with production code running close to the operating system
- Strong understanding of operating systems: processes, threads, virtual memory, file systems, and system call interfaces
- Experience with concurrency: mutexes and locks, lock-free data structures, atomics, and the careful reasoning needed to get them right
- Proficiency with systems debugging tools: gdb, perf, strace, valgrind, or eBPF for understanding actual runtime behavior
- Knowledge of networking fundamentals: TCP/IP operation, sockets programming, and protocol implementation or deep debugging
- Careful memory management discipline: clear ownership, lifetime reasoning, and leak-free code verified with sanitizers and testing
- BS in Computer Science or equivalent experience
Nice-to-haves
- Experience with Linux kernel development: loadable modules, device drivers, or upstream subsystem contributions
- Familiarity with eBPF for observability, networking, or security applications in production
- Knowledge of storage systems internals: file systems, block I/O layers, or database engine architecture
- Experience with Rust for systems programming applying its ownership model to real production code
Google
Meta
Apple
Microsoft
Amazon
Oracle
Netflix
NVIDIA