The Software Engineer researches, designs, develops, tests, integrates, documents, and enhances complex and diverse software systems. Works individually or part of a research team. Resolves software problems. Uses software development and software design methodologies appropriate to the research and development environment. Provides specific input to the software components of system design, requirements analysis, and synthesis from system level to individual software components. Uses sound software engineering principles to ensure that developed code is modifiable, efficient, reliable, understandable, and fault tolerant. Provides software process management and control throughout the coding portion of the software development process.
A Bachelor's degree in computer science, engineering, or a relevant field OR an additional three (3) years of related experience can be substituted for a degree. A minimum of two (2) software development languages. Minimum of five (5) years of combined experience working with a minimum of two (2) operating systems.
- Within the last five (5) years, a minimum of three (3) years experience programming in one (1) or more of the following: Java, C and/or C++.
- Minimum of one (1) year experience programming in Python (Python 3 preferred)
- Minimum of three (3) years experience developing and integrating a Linux environment
- Minimum of one (1) year experience with enterprise application development using Java, to include database access (Spring Boot experience preferred)
- Demonstrated experience with developing GUIs in a modern front-end framework (e.g. Angular, AngularJS, Vue.js, React)
- Experience with modern source control software (e.g. git)
- Experience creating Web APIs and RESTful services
- Experience in statistical machine learning or equivalent analytic methodologies
- Experience with open-source container and resource management technologies (e.g., Docker and Mesos)
- Experience working with Elasticsearch, particularly with geospatial data
Experience with Python numerics/ML libraries (e.g. NumPy, SciPy, scikit-learn, TensorFlow, PyTorch, etc...)