Software Engineer

University of Washington•Seattle, WA
•Onsite

About The Position

The Applied Physics Laboratory (APL) has an outstanding opportunity for a Software Engineer to join the Ocean Engineering Department (OED). Reporting to the Ocean Engineering Department Head, the Software Engineer will be an integral member of the Ocean Engineering Department that supports Principal Investigators (PIs) with the design, build, and deployment of embedded software systems supporting oceanographic, acoustic, marine renewable energy, autonomous vehicle, and marine robotics research. The OED is a diverse team of software, electrical, and mechanical engineers that specializes in developing novel systems to meet the rigorous demands of the globe’s harshest environments in which our equipment is deployed. The incumbent will work on all phases of software application development from requirements gathering through final release and life cycle maintenance for major software components and small projects. The incumbent will simultaneously work on multiple projects with different timelines, often providing novel solutions to complex problems. This position will work closely with the PI, but must also operate independently and with other software, electrical, and mechanical engineers. The person hired must anticipate and identify potential technical issues and produce innovative solutions, and be able to work with the PI to develop requirements, schedule work, and address emergent needs.

Requirements

  • Bachelor’s degree in Computer Science, Computer Engineering, Software Engineering, Ocean Engineering, or a closely related field.
  • 5-10 years’ work experience.
  • Experience developing applications using C, C++, Python, or related programming languages.
  • Experience developing applications requiring multi-threaded, real-time, distributed implementation.
  • Experience with software revision control systems.
  • Experience with collaborative bug tracking systems.
  • US Citizenship.
  • Ability to obtain and maintain a Department of Defense security clearance.
  • Must be a U.S. citizen and successfully obtain and continue to maintain a Department of Defense (DOD) Personnel Security Clearance.

Nice To Haves

  • Experience with Subversion, Github, or Gitlab for version control.
  • Experience with bug tracking tools, performance and system monitoring tools, and debugging tools and strategies.

Responsibilities

  • Develop embedded applications using C, C++, Python, or related programming languages.
  • Update existing code base as well as design, code, test, and deploy new applications.
  • Participate in design reviews, code reviews, and testing to ensure code quality.
  • Identify gaps in requirements and clarify them with the PI.
  • Anticipate and identify potential technical issues and produce innovative solutions.
  • Work both independently and tightly coupled with the team.
  • Utilize software development and testing tools (e.g., Subversion, Github, Gitlab) for version control, bug tracking, performance and system monitoring, and debugging.
  • Adhere to project-defined coding conventions and interface documentation techniques.
  • Work with the PI to design, plan, and track application development progress.
  • Fully test own code and team's code before checking into the repository.
  • Coordinate full system regression testing with the test lead.
  • Work with the PI to ensure acceptance of the application.
  • Design, code, and implement software for new instruments and new functionality within the existing code base for existing instruments.
  • Create new embedded systems as needed.
  • Serve as a technical expert in the testing and evaluation of software architecture, capabilities, and requirements of existing and emerging systems.
  • Establish technical direction, standards, and maintain appropriate mechanisms to monitor/control all aspects of the software and systems development lifecycle.
  • Provide systems architecture, development, programming, and consultation for embedded systems and real-time systems.
  • Collaborate with other department engineers to advance the department’s shared software engineering infrastructure.
  • Participate in and present system design information at program design reviews.
  • Report development progress to the PI on a weekly basis.
  • Create formal interface documentation and document code as needed.
  • Develop project requirements with the PI.
  • Plan the lifecycle of the application development.
  • Coordinate development with other engineers.
  • Ensure timely completion of the project.
  • Propose new projects, applications, and features by anticipating the PI's needs.
  • Unit test new or updated code.
  • Test and document full system capabilities.
  • Work with system and software test engineers to develop test plans for applications.
  • Be recognized as an expert in areas of software development and serve as a reference for other developers.
  • Lead/mentor team members on how to improve software quality.
  • Instruct on strategies to test the system using various test tools.
  • Provide coaching and professional feedback as necessary.

Benefits

  • Benefits for this position
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service