Software Engineer/Programmer II
What You Will Do:
Collaborate with other Unidata developers to test, support, maintain, and develop Unidata software products and real-time data streams. Work closely with end-users and other Unidata developers to specify community needs for software and data.
Unidata supports the earth science research and education community with data and software tools. Unidata software products are used widely in the climate and other earth sciences. Unidata's team environment provides for high levels of autonomy and responsibility with great opportunity to excel individually and contribute to the team's success.
Software Design and Development:
- Work with end-users and other Unidata developers to specify community needs.
- Collaborate with other developers to test, maintain, and develop Unidata software products, particularly netCDF-Java, the THREDDS Data Server, Rosetta, Siphon, and other java or python based client and web-based technologies.
- Provides technical support to technical and non-technical staff.
- Investigate and provide timely responses to user support questions.
- Work with users to troubleshoot problems with Unidata software.
- Diagnose problems, propose solutions and work with other Unidata developers to develop and test proposed solutions.
- In collaboration with other developers, develop training materials and teach annual and regional workshops.
- Participate in technical advisory committees. Prepare progress reports and presentations for Unidata management.
- Foster interactions with user community and other Unidata staff in an effort to anticipate and estimate current and future data and software needs.
- Write papers, prepare and give presentations at scientific meetings.
What You Need:
Education and Years of Experience:
- BS in atmospheric or related sciences, mathematics or computer science with four to six years experience with scientific applications and scientific data services or equivalent combination of education and experience.
Knowledge, Skills, and Abilities:
- Demonstrated ability to work closely with diverse staff, end-users, and other developers.
- Demonstrated ability providing timely user support and diagnosing problems.
- Demonstrated skill with statically-typed object-oriented language (e.g., Java or C++).
- Experience using standard software development tools (e.g., git, testing frameworks, debuggers, build systems).
- Experience applying software analysis, design, and development methodologies.
- Ability to work in a team environment in various roles and as an individual contributor.
- Ability to organize and communicate technical material to other developers and end-users.
- Strong desire to continue learning new skills, tools, and concepts.
- Excellent communication skills, both written and oral.
Desired Knowledge, Skills, and Abilities:
- Experience with geoscience data formats (e.g., netCDF, GRIB, BUFR).
- Experience with open-source software projects and development process.
- Experience with netCDF-Java.
- Experience with the Spring Framework and/or Java Servlet development.
- Experience with the gradle build system
- Experience with the ECLIPSE IDE Framework and associated plug-ins
- Experience with AWS and/or OpenStack Cloud Computing technologies
- Experience with Infrastructure as Code technologies (e.g. Ansible, Terraform)
- Demonstrated skill with a scripting language (such as Python, Groovy, Unix Shell Scripting).
- Familiarity with scientific data access including remote data access protocols.