Software Engineer III
Job Description
Oceaneering Technologies (OTECH) builds software that supports underwater systems used by the U.S. Navy and other DoD customers. In this onsite role in Chesapeake, VA, you will contribute to hands-on systems software work across Linux-based distributed and embedded environments, participating across the full software development lifecycle.
As a Software Engineer III, you will help shape software architecture, support requirements and testing activities, and collaborate closely with engineering leads, program managers, and external customers. The position also includes mentorship of junior team members and may involve demanding scheduling throughout the year.
Core Responsibilities
- Use working knowledge of the software lifecycle to develop and begin leading software efforts.
- Implement decisions related to designing and maintaining software architecture.
- Interface with other engineering leads, program managers, and external customers.
- Contribute to creation, maintenance, and acceptance of project CDRLs, including requirements management, software documentation, unit testing, software safety testing, and software qualification testing.
- Support trade studies for hardware such as navigation units, board stacks, and power monitors.
- Support software testing on the factory floor, offsite, and offshore.
- Analyze user requirements, concept of operations documents, and high-level system architectures to develop system requirements specifications.
- Guide system development and implementation planning using concept of operations, interfaces control documents, hazard analysis, and test plans and procedures.
- Apply strong technical judgment, attention to detail, and big-picture thinking in system design.
- Devise innovative solutions when conventional approaches are insufficient.
- Prepare reports and present results to management and client stakeholders.
- Anticipate occasional work outside normal working hours.
- Provide mentorship to junior team members.
Required Qualifications
- BS in Computer Science, Computer Engineering, Mathematics, Electrical Engineering, or a related STEM field (or commensurate experience).
- 5+ years of practical software engineering experience.
- Foundational understanding of Linux system programming.
- Proficiency in at least one core systems language: C, C++, or Rust.
- Understanding of memory and resource management, multithreading/concurrency, and inter-process communication (IPC).
- Understanding of networking fundamentals and structured data handling.
- Ability to participate across all SDLC phases, including requirements implementation, design, coding, unit and integration testing, debugging, peer reviews, configuration management, and documentation.
- Ability to collaborate with software, systems, hardware, test, and cybersecurity teams.
- Strong written and verbal communication skills for documenting and presenting engineering concepts.
- Ability to obtain and maintain a U.S. DoD Security Clearance.
- Must be a U.S. citizen.
Technologies You Will Work With
- Linux, Docker, Podman, Kubernetes
- DDS-based publish/subscribe messaging
- C, C++, Rust; GCC/Clang; Cargo; CMake
- GDB, sanitizers
- JSON, XML
- CI/CD pipelines; UDP/multicast; TCP
- Serial, SPI, I2C, CAN
- Jira, Git, Python
- SBC-based control systems; oscilloscopes; multimeters
- Microservices architectures; containerization; build systems
- Command-line development workflows
Benefits
- Health and Wellness
- Mental Health
- Retirement Savings
- Life and Disability
- Paid Maternity and Parental Leave
- Paid Time Off
- Tuition Reimbursement
- Employee Assistance Program
Preferred Qualifications
- Experience developing underwater vehicle or robotic software frameworks and extending framework capabilities.
- Experience working on DoD software programs.
- Experience with Linux or bare-metal firmware development.
- Experience developing system services, application components, hardware/software interfaces, or data-processing functions for Linux-based distributed or embedded systems.
- Familiarity with Linux system programming fundamentals (memory/resource management, IPC, multithreading, networking, data structures).
- Experience with microservices architectures, containerization, and orchestration (Docker/Podman, Kubernetes).
- Familiarity with distributed systems and DDS-based publish/subscribe messaging.
- Experience with Rust or Python for systems scripting, tooling, or automation.
- Familiarity with GCC/Clang, Cargo, CMake, build systems, and command-line development workflows.
- Experience with debugging tools such as GDB and sanitizers.
- Experience with microprocessors and SBC-based control systems interfacing with sensors and hardware (cameras, navigation sensors, valve packs, etc.).
- Ability to implement and debug communication protocols including UDP/multicast, TCP, serial, SPI, I2C, and CAN.
- Experience with CI/CD pipelines and automated testing.
- Ability to set up basic bench-testing environments (power, communications links, analog devices).
- Proficiency with lab measurement tools such as oscilloscopes and multimeters.
- Experience with Jira, Git, and modern development workflows.
- Ability to work collaboratively with software, systems, hardware, test, and cybersecurity engineering teams.
- Experience with UI/UX design.
Additional duties as assigned.
Location: Chesapeake, VA (onsite)
Salary: USD 118,600 - 177,800 per year