Job Description Software Developer (FPGA/Systems) We are seeking a highly skilled Software Developer to join our Hardware Engineering team. This role sits at the intersection of hardware and software, acting as a critical link between custom FPGA-based systems and our internal trading platform. You will design and build ultra-low-latency solutions, including high-performance APIs, kernel drivers, and diagnostic tooling, to support and enhance automated trading capabilities.
The successful candidate will be a self-starter, have strong sense of ownership and be driven to provide technical and intellectual solutions to business problems. Responsibilities: Designing, developing, and maintaining high-performance APIs in C++ to integrate FPGA hardware with internal trading systems Developing and optimizing Linux kernel drivers with a focus on PCIe communication, DMA transfers, interrupt handling, and memory management to achieve ultra low-latency Partnering with FPGA engineers to support unit testing, lab bring-up, and validation of SystemVerilog/Verilog designs using software-driven test frameworks Building and maintaining diagnostic tools and automation utilities in Python and C++ for FPGA configuration, monitoring, deployment, and troubleshooting Conduct in-depth analysis of trading system performance using host logs, packet captures (PCAPs), and custom telemetry data to identify bottlenecks and optimize throughput and latency Implementing, tuning, and optimizing TCP/UDP/IP stacks and Ethernet-based communication for high frequency trading (HFT) environments Skills and Experience: 5-7+ years of relevant experience Experience in an HFT or proprietary trading environment preferred Expert level proficiency in C++ 14/17 for systems programming; strong Python skills for automation and tooling Advanced understanding of TCP/IP, UDP, Ethernet protocols, and the OSI model within low-latency systems Strong knowledge of PCIe protocols and DMA engine architecture Deep understanding of the Linux kernel, including driver development, kernel internals, interrupt handling, and kernel-bypass techniques Experience with low-level system design concepts such as cache coherency, NUMA architectures, and memory-mapped I/O Familiarity with SystemVerilog or Verilog, including the ability to read and interpret RTL Experience with network capture and analysis tools (e.g., Wireshark, Corvil) and hardware debugging tools Exposure to FPGA development toolchains such as Xilinx Vivado or Intel Quartus Ability to work in a collaborative environment Excellent written and verbal communication skills