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.
- Demonstrated experience in Python and Java. Additional JVM languages are a plus.
- Strong Linux skills are a must, to include bash scripting and use of standard Linux tools
- Demonstrated experience in Network troubleshooting
- Experience in distributed asynchronous data processing and application development to include multi-threaded or multi-process application development
- Experience with enterprise messaging systems such as RabbitMQ or ActiveMq
- Experience managing and processing high volume real-time data flows
- Experience processing large volumes of static data
- Management and usage of distributed database systems (preferably some combination of CassandraDB, Accumulo or MongoDB)
- Docker development and deployment
- Good communication skills – experience in working with engineers and researchers in developing requirements and ability to produce documentation
- Experience writing Nifi flows and administrating Nifi
- Experience managing Elasticsearch and Kibana
- Prefer experience using AVRO as well as enterprise data formats such as CSDF, SOTF, or RAFT
- Nice to haves: Atlassian Tool Suite (Jira, Confluence, Bitbucket/Stash), git, gradle, machine learning, analytic development, Sun Grid Engine
Experience working with human language technologies (HLT), machine learning, video and image processing, and speech and text analytics is a plus