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.