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.
Qualifications
- 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 fifteen (15) years of general software development experience.
- Within the last fifteen (15) years, a minimum of seven (7) years of combined experience with 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 leading a software development team and ensuring that all work is completed within the constraints of the software development process being used on the project.
Task Requirements
- 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
- At least one year experience writing Nifi flows and administrating Nifi
- 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
- Experience managing Elasticsearch and Kibana
- 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
Desired Requirements
- 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
Note: Must have active TS/SCI with Polygraph