Software Engineer III

OceaneeringHanover, MarylandOn-siteFull-timeSenior, 5–8 yearsListed 2 hours ago

Apply now

About this role

The Software Engineer III is a key technical contributor within Oceaneering Technologies (OTECH), responsible for driving software development efforts that support one‑of‑a‑kind underwater systems built for U.S. Navy and other DoW customers. Engineers at this level apply deep understanding of the software lifecycle to design system architectures, lead or significantly contribute to project software activities, and ensure delivered solutions satisfy electrical, mechanical, and operational (CONOPS) needs while collaborating closely with engineering leads, project managers, and external customers.

Beyond feature leadership, this role executes hands‑on systems software work across Linux‑based distributed and embedded environments—implementing system services and application components; building hardware/software interfaces and device drivers; enabling data‑processing functions; and delivering robust communications capabilities. Typical development spans native Linux and containerized deployments (e.g., Docker/Podman) with orchestration via Kubernetes, and leverages DDS‑based publish/subscribe messaging for real‑time, mission‑critical data exchange—consistent with OTECH integration‑lab practices and container/DDS orchestration patterns.

Engineers will participate in the complete software development lifecycle: requirements implementation, software design, coding, unit and integration testing, debugging, peer reviews, configuration management, and technical documentation. The role benefits from a systems‑programming foundation (memory/resource management, multithreading/concurrency, IPC, networking, and efficient data structures) and facility with modern toolchains and build systems (GCC/Clang, Cargo, CMake), debugging and analysis tools (GDB, sanitizers), and structured data formats (JSON, XML). Work products are supported by CI/CD pipelines and automated testing to ensure reliability and repeatability; engineers frequently contribute to test harnesses and lab workflows that validate containerized services and DDS participants under failure‑recovery and health‑check scenarios.

Success in this role requires strong technical judgment, the ability to see the big picture, and a capacity to devise innovative solutions when conventional approaches fall short. Engineers are expected to mentor junior developers, support proposal and design trade studies, and participate in software testing across factory floor, offsite, and offshore environments—developing solutions that integrate seamlessly with sensors, SBC‑based control systems, and mission operations while meeting documentation and CDRL acceptance criteria consistent with OTECH standards.

Essential 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 in all phases of the SDLC: requirements implementation, design, coding, unit and integration testing, debugging, peer reviews, configuration management, and documentation.
- Ability to work collaboratively with software, systems, hardware, test, and cybersecurity teams.
- Strong written and verbal communication skills, with the ability to document and present engineering concepts effectively.
- Ability to obtain and maintain a U.S. DoW Security Clearance.
- Must be a U.S. citizen.

Preferred Qualifications

- Experience developing underwater vehicle or robotic software frameworks and extending framework capabilities.
- Experience working on DoW 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

- Additional duties as assigned.

We offer a comprehensive and competitive benefits package. Employee benefits vary by role, however, may include Health and Wellness, Mental Health, Retirement Savings, Life and Disability, Paid Maternity and Parental Leave, Paid Time Off, Tuition Reimbursement, and an Employee Assistance Program.

Compensation $118,600.00 - $177,800.00