Jobs · Education · California

Software Engineer - Test Systems & Automation

Ouster · San Francisco, CA · 2 wk ago
On-siteEducationFull-time

Key Responsibilities

  • Develop Hardware Abstraction Layers: Implement and scale Python-based software wrappers to cleanly separate test sequence logic from lower-level instrument drivers (e.g., power supplies, digital multimeters, spectrometers).
  • Apply Modular Design: Utilize modern software design patterns (e.g., Factory, Strategy, Wrapper) to ensure test code remains flexible, future-proofed, and easy to maintain as instrumentation evolves.
  • Maintain Code Quality: Write clean, readable, and type-hinted Python code. Actively participate in peer code reviews and maintain structured Git-based development workflows.
  • Data Pipelines & Station Reliability: Optimize Data Flow: Implement and debug high-volume data pipelines that package and stream local parametric test data securely into centralized manufacturing databases and execution systems.
  • Build Fault-Tolerant Code: Write defensive software routines, including intelligent retry logic, exception handling, and local data buffering to prevent station downtime during intermittent network or server disruptions.
  • Triage & Troubleshooting: Analyze test station execution logs to systematically diagnose whether a failure on the line stems from a software bug, instrument communication dropout, or a genuine product defect.
  • Automation & Test Rigor: Automate Test Sequences: Develop multi-instrument automated test workflows using concurrent or multi-threaded Python concepts to minimize station cycle times.
  • Software Validation: Write unit tests and implement software mocking frameworks to validate the stability of your test code before deploying updates to a live production line.

Required Skills & Qualifications

  • Education: Bachelor’s degree in Computer Science, Computer Engineering, Software Engineering, or a related technical discipline with a strong programming foundation.
  • Professional Experience: 3+ years of experience writing production-grade software (ideally Python) interacting with hardware or processing data streams.
  • Strong Python Foundation: Solid proficiency in core Python, including a clear understanding of decorators, higher-order functions, custom exceptions, and context managers.
  • Instrument Interfacing: Direct experience communicating with hardware instruments using standard protocols like SCPI, PyVISA, Serial (RS-232/485), TCP/IP sockets, or Modbus.
  • DevOps & Infrastructure: Solid day-to-day comfort operating in Linux/Unix environments, utilizing Git for version control, and working with Docker containers.
  • Data Competency: Practical experience writing and optimizing SQL queries (e.g., PostgreSQL, SQLite, or MariaDB) to handle high-frequency logging.

Preferred Qualifications

  • Familiarity with Test-Driven Development (TDD) or building software simulations/digital twins for hardware components.
  • Basic understanding of optical components, cameras, laser safety, or computer vision libraries (OpenCV).
  • Experience supporting manufacturing lines or hardware prototyping cycles in electronics, automotive, or robotics industries.

Similar jobs