Senior Software Engineer

Senior Software Engineer

Location: San Diego, CA

Job Type: Full-Time

Salary: 146K – 155K

About the Role

We are a startup building complex, performance-critical software and hardware systems at the intersection of instrumentation, algorithms, and data. We are looking for a Senior Software Engineer who is equally comfortable writing low-level C/C++ for embedded targets and building higher-level Python applications that tie a system together.

You will write production code that spans from device-level firmware interfaces up through orchestration software that coordinates the electrical, fluidic, and mechanical subsystems of a complex instrument. This is a hands-on engineering role for someone who likes working close to the hardware, enjoys making messy real-world systems behave predictably, and takes pride in clean, well-tested code.

You will work closely with hardware, firmware, algorithm, and application engineers to take instrument subsystems from prototype to production.

What You’ll Do

Embedded & Application Software Development

• Write production-quality C/C++ for embedded targets and resource-constrained environments

• Build Python applications and services that orchestrate, monitor, and expose instrument behavior

• Develop and maintain device drivers, hardware abstraction layers, and communication interfaces (serial, USB, Ethernet, CAN, SPI, I2C)

• Bridge embedded subsystems and higher-level application logic through clean, well-defined interfaces

• Debug across the stack — from a misbehaving sensor or actuator up to an unhappy application thread

Multi-Component System Orchestration

• Design and implement the software that coordinates electrical, fluidic, and mechanical subsystems into a working instrument

• Build state machines and control loops that move the system through complex, multi-step protocols reliably

• Handle the realities of real-world hardware — timing, failure modes, recovery, calibration, interlocks, and safety

• Define interfaces and contracts between subsystem controllers, the orchestration layer, and the user-facing application

• Instrument the system so that when something goes wrong on a wet bench at 2am, the logs actually tell you why

Linux & Containerized Workflows

• Develop and deploy on Linux — both desktop and embedded

• Build and maintain Docker images and containerized workflows for development, testing, and deployment

• Manage build environments, dependencies, and reproducibility across developer machines and target hardware

• Debug system-level issues involving processes, devices, networking, and resource contention

Engineering Hygiene

• Write code that other engineers can read, extend, and trust — clear interfaces, sensible abstractions, useful tests

• Use git fluently for branching, review, bisecting, and clean history

• Participate in code review as a thoughtful reviewer and a graceful author

• Build small, sharp tools that make the team faster — not large frameworks that slow them down

What We’re Looking For

Required

• BS in Computer Science or Engineering with 5+ years or MS with 3+ years of professional software engineering experience building production systems

• Strong C/C++ skills, including comfort reading and debugging existing codebases

• 5+ years of Python experience and proven ability to design, build, and ship application-level software

• Hands-on experience with embedded development — talking to real hardware, working with constrained environments, and dealing with the failure modes that come with both

• Hands-on experience with application development — services, APIs, user-facing tools, or orchestration software

• Strong Linux skills: comfortable on the command line, debugging system behavior, and working with build toolchains

• Solid git fundamentals and good code hygiene — clear commits, readable diffs, useful tests, careful reviews

• Comfortable with Docker and containerized development and deployment workflows

Strongly Preferred

• Experience building multi-component orchestration software for systems that combine electrical, fluidic, and mechanical subsystems (instruments, lab automation, robotics, manufacturing equipment, or similar)

• Experience designing state machines or control software for multi-step physical protocols

• Comfort working alongside hardware, firmware, and mechanical engineers — and translating their constraints into software

• Experience with CI/CD pipelines and build systems (CMake, Make, or similar)

Nice-to-Have

• Background in scientific instrumentation, biosensor platforms, lab automation, or medical devices

• Experience with real-time or near-real-time control software

• Familiarity with common embedded interfaces and protocols (Modbus, CANopen, EtherCAT, gRPC, MQTT, etc.)

• Experience in regulated development environments (FDA, ISO, or similar)

What Success Looks Like

• Instrument subsystems behave predictably, recover gracefully, and are debuggable when they don’t

• The orchestration software is something other engineers want to build on — not something they work around

• Code you ship is reliable enough that the team trusts it, and clear enough that they can extend it without paging you

• Hardware, firmware, and application engineers can move faster because of the interfaces and tooling you build

• When a hard, cross-domain bug shows up, you are one of the people the team is glad to have on it

Why Join Us

• Work in a dynamic, collaborative environment where innovation and scientific rigor are deeply valued

• Join a seasoned, multidisciplinary team tackling high-impact problems at the intersection of science and engineering

• Competitive compensation and equity package, comprehensive benefits, and flexibility to support work-life integration

We are an equal opportunity employer. We thrive on diversity and collaboration.