Woods Hole Oceanographic Institution is currently searching for a Software Engineer to join the Applied Ocean Physics and Engineering Department (AOPE). This is a regular, full-time, exempt position, and is eligible for benefits.
Within AOPE, The Ocean Observatories Initiative’s (OOI) Software Team is seeking an experienced Software Engineer to write complex computer code for use in ocean instrumentation data collection, processing and delivery. The candidate will support software development efforts of both the Cyberinfrastructure (CI) and Coastal and Global Scale Nodes (CGSN) development teams.
This individual will be contributing to many aspects of the software development lifecycle such as architecture, code development and software administration. The successful candidate will be able to apply creative solutions to complex problems with the goal of simplifying the ingestion of data into the system through automation and the application of standard user experience concepts. The candidate is expected to review user requirements and turn them into a work plan with recommendations of approach and prioritization. To best serve the OOI mission and understand the CI group’s software requirements, the successful candidate is expected to regularly participate in hardware and software troubleshooting efforts and contribute to strategic discussions surrounding implementation of new technologies and processing concepts.
The individual will also be a member of the CGSN development team responsible for the development and maintenance of an Operations Management software application (OMS++) that ingests telemetered data from remote ocean instrumentation platforms and displays the data in near real-time in support of operations staff. In addition, the individual will have responsibilities for diagnosing issues and fixing bugs in software running on the remote platforms related to the collection and delivery of telemetered data. Responsibilities for the remote platform software will also include performing updates in support of newer hardware, operating systems and security requirements.
Required Software Engineer skills/capabilities:
- >3 years professional experience programming in Java and Python
- Experience or ability to work with existing code (written in Python, C/C++, HTML, Java, Django)
- Experience developing in (and for) a Linux environment
- Experience with version control (specifically Git) and adhering to a desired workflow involving online tools such as BitBucket or GitHub
- Experience deploying software and processes in a Linux environment
- Experience developing with open-source tools
- Experience troubleshooting code and system functionality in complex hardware-software systems
- Ability to listen to needs of users and implement features and fixes as needed
- Strong verbal and written communications skills
- Strong technical writing & documentation skills, both inside and outside of code
- Ability to meet deadlines
- Ability to report status & progress weekly
- Ability to work both independently and cooperatively on tasks
- Ability to work professionally and respectfully alongside diverse team
The internal working title for this position is Engineer II.
- Software Design Documentation and Review
The candidate will be responsible for documenting any changes she/he makes to existing software. If the changes are significant enough, a thorough design for the planned changes shall be captured by the candidate, and reviewed by the team for accuracy and completeness. Comments generated during the review process shall be resolved as agreed upon by the team, and the candidate shall update the design documentation to reflect these resolutions.
- Configuration Management and Issue Tracking
All changes made to software and documentation shall be tracked using the agreed upon tools for issue tracking (e.g., Git, Trello). The changes, as well as all new software and software tests created by the candidate, shall also be committed to the agreed upon version control tool.
- Software Development
The candidate shall follow coding standards where applicable, otherwise she/he shall generate code in a manner that follows a self-documenting paradigm along with comments that give additional context. The candidate will be required to use the legacy programming languages and technologies in use for existing products when necessary. The candidate is expected to provide recommendations, where applicable, regarding the best software technologies to be used for new products. The candidate is also expected to define, execute, deliver, and document results of software unit tests as required, in an agreed upon format.
- Software Administration
The candidate will be responsible for deploying and managing software in the development and production environments - including configuration files, monitoring scripts, deployment scripts as well as any dev-ops optimizations.
- System Maintenance and Support Documentation
The candidate will provide support for making system related changes associated with software improvements, such as installation of software products and configuration of operating system and installed software, as well as document the changes.
- As deemed necessary by supervisor
Education & Experience
- Engineer --- Bachelor's degree in computer software engineering or appropriate field with several years of relevant experience
Desired Software Engineer skills/capabilities:
- Ability to work in a small Agile Software Development environment across departments: developing and testing complex data processing software being built or updated, early and often, and able to work in an organic team, taking on tasks as necessary and able to interface with other software engineers
- Demonstrable experience in developing software for collection of scientific data
- Demonstrable experience programming in Python and Java and web based languages
- Demonstrable experience programming in C++, including STL and/or Boost
- Experience writing Bash shell and Perl scripts is a plus
- Experience developing web-browser-based tools and User Interfaces is a plus
- Experience with databases utilizing SQL and NOSQL structures such as PostgreSQL and/or Cassandra a plus
- Understanding of user experience design a plus
- Experience with uFrame platform and EDEX server a plus
- Ability to identify and fix inefficiencies in software-hardware configuration processes
- Experience with dev-ops tools and procedures a plus
- Experience with embedded systems a plus (build systems, bootloaders, kernels, file systems)
- Experience with ROS, ROS2, DDS a plus
- Must be a US Citizen
WHOI has a mandatory COVID-19 vaccination policy in effect, where you must register your full vaccination status (vaccination plus booster) in order to begin employment. The registration process is confidential and entails submitting your official vaccination records or requesting to engage in the interactive exemption process for either a medical or religious reason.
Physical duties for this position include but are not limited to, ability to lift less than 25 lbs independently, 2 times per day; carry 10-25 lbs, 2 times per day. Visual abilities to include near, far, peripheral, depth perception, and ability to distinguish basic colors. Hearing requirements include the ability to hear and respond to instructions, communicate effectively in loud areas (pier/dock, warehouse). Other physical tasks include occasional prolonged standing/walking; use of hands for basic /fine grasping and manipulation, repetitive motion, reaching above and below the shoulders, pushing, pulling, kneeling, bending, twisting, and stooping. Other occupational requirements include talking, traveling, working around others, and with others. Will be exposed to dust or other irritants and electrical/mechanical/power equipment hazards. Physical duties are subject to change.
Opportunity for Sea Duty is available but not a requirement.
WHOI is an Affirmative Action/Equal Opportunity Employer/Disabled/Veterans/M/F. We encourage Veterans and those with Disabilities to apply. Applications are reviewed confidentially. Applicants that require accommodation in the job application process are encouraged to contact us at (508) 289-2253 or email firstname.lastname@example.org for assistance.