Summary
Join Enfabrica, a company revolutionizing AI compute systems, as a highly collaborative Software Engineer. You will contribute to the growth of our Rust-based software stack running on an ARM-based embedded system, focusing on scalability, reliability, and security. This impactful role involves collaborating with hardware, firmware, and kernel developers to design and implement a distributed system for managing hardware resources. You will work at the user-space/kernel-space and hardware/software boundaries, leveraging your expertise in systems programming and distributed systems. Enfabrica offers a strong engineering team and significant investor support.
Requirements
- Be passionate about code quality, including documentation, testing, and performance
- Be a strong coder, easily and independently solve complex problems quickly using Rust
- Be comfortable designing and implementing at the user-space / kernel-space boundary
- Be comfortable operating at the hardware / software boundary
- Have some experience with PCIe device drivers
- Have experience with TCP/IP, RDMA and network control plane development
- Be familiar with open flow, stateful firewalls, packet forwarding and know what a TCAM and LPM tables are good for
- Have relevant experience working on distributed systems or control planes
- Be experienced with systems programming in a Linux environment, including a working knowledge of libc, the system call interface, memory maps, and virtual and physical addressing
- Have some Linux kernel development experience, such as modifying an existing kernel module, looking at the source code to understand a behavior, or creating a custom device driver
- Have experience writing significant programs in Rust, or have some equivalent experience in C++/C, and be excited about working in Rust
- Have some experience using git with a large code base
- Be comfortable using various programming languages and build systems, including Rust, C, C++, Makefiles, Shell scripts, Python, Bazel
- Have relevant experience developing software for embedded systems, preferably ARMv8, including: modifying existing C code for U-Boot and the Linux kernel; writing custom device drivers; generating software images; creating robust software update procedures; bringing up new hardware in the lab; reading board schematics and Verilog/SystemVerilog code
Responsibilities
- Create and grow the Rust based software stack
- Work with hardware engineers, firmware engineers, Linux kernel developers, and other domain experts
- Design and implement a distributed system for managing a unique set of hardware resources at the core of our product
Disclaimer: Please check that the job is real before you apply. Applying might take you to another website that we don't own. Please be aware that any actions taken during the application process are solely your responsibility, and we bear no responsibility for any outcomes.