
Software Engineer
- San Diego, CA
- $85,150-153,925 per year
- Permanent
- Full-time
- Collaborate with an integrated government/industry/academia team to identify software requirements and evaluate design approaches for solving technical problems.
- Architect, design, and implement maintainable, robust, and performant software, build, and test processes.
- Integrate, test, and verify software implementations on target hardware platforms.
- Creatively recognize performance gaps and suggest possible improvements.
- Participate in activities to secure and harden Linux systems according to Department of Defense (DoD) standards.
- Operate autonomous systems in the lab, or at sea, to accomplish the above.
- Post Mission Analysis (PMA) for autonomous systems including validation of control laws, characterization of navigation performance, and modification of behaviors.
- Communicate regularly across the engineering team to coordinate development efforts, anticipate design changes, prioritize feature implementations and bug fixes, and solicit team feedback.
- U.S. Citizen with ability to obtain minimum SECRET security clearance; active clearance preferred
- Bachelor’s or higher degree in Electrical Engineering, Computer Engineering, Computer Science, Physics, or Mathematics (with a software background), or other STEM fields
- 1+ years of experience in one or more of the following areas:
- Linux application development, embedded and user facing, using tools such as: x64 and/or ARM environments
- Virtual machines
- VS Code, or similar, Integrated development environments (IDEs)
- Valgrind, or similar, memory debuggers
- CMake, or similar, software build tools
- Cross compilation
- Unit testing and/or regression testing
- Subversion (SVN) and/or Git repositories
- Continuous integration (CI) / Continuous deployment (CD) pipelines
- Linux system hardening and security best practices:
- Defense Information Systems Agency (DISA) Security Technical Implementation Guides (STIG)
- Public Key Infrastructure (PKI) for SSH or similar frameworks
- Linux Unified Key Setup (LUKS) disk encryption
- Proficiency in one or more of the following languages:
- C; C++, Python, Java
- Hardware in the loop testing using instruments such as power supplies, multi-meters, etc.
- Familiarity with or ability to read, understand, and interpret complex technical documents such as Software Requirements
- Proficiency with basic office software (Outlook, Word, Excel, PowerPoint, Visio, Teams, SharePoint).
- Able to lift objects up to 40 pounds.
- Able to travel domestically or internationally, estimated at 1-2 weeks per trip up to 4 times per year.
- Experience with Agile and Scrum project management practices.
- Working knowledge of low-level communication protocols (SPI, I2C, RS-232, CAN, Ethernet, etc.).
- Experience with Real-time Operating System (RTOS) or bare-metal microcontroller firmware development using tools such as:
- Microchip MPLAB X IDE, or similar
- Microchip In-Circuit Debugger/Programmer (ICD5), Segger J-Link JTAG Debugger/Programmer, or similar
- Laboratory instruments such as power supplies, multi-meters, oscilloscopes, logical analyzers, electronic loads, and the like
- Altium Printed Circuit Board (PCB) design software, or similar
- Experience with other Linux environment tools such as:
- OpenCV computer vision algorithms
- Nvidia Compute Unified Device Architecture (CUDA) platform
- Bash scripting
- Octave, MatLab, or similar software packages for data analysis
- Experience with Navy standard platforms for autonomous vehicles such as:
- OpenAUV framework
- PCX framework
- Data Distribution Service (DDS) middleware
- Experience with Raspberry Pi, or similar, low power embedded computers.
- Familiarity with basic oceanographic instruments like depth sensors, altimeters, long or short baseline systems, doppler velocity logs, altitude & heading reference systems (AHRS), and similar.
- Experience with small boat operations and at-sea testing.