Job Purpose
The Software Engineer designs, develops, and tests software applications and products. Additionally, the Software Engineer manages software development teams, provides technical leadership, and establishes software development lifecycle practices and processes. The Software Engineer is proficient in programming languages such as Java, JavaScript, C, C++, C#, Ruby, Python, Scala, and Groovy. In this role, the Software Engineer requires extensive knowledge of programming languages, software development, computer operating systems, Continuous Integration/Continuous Delivery (CI/CD), DevOps, Application Programming Interface (API) development, container development, and distributed systems. The Software Engineer also applies engineering principles to software creation, manages production releases of software, performs code reviews, merges feature development branches, and analyzes and triages issues. The necessary skill areas for the Software Engineer include programming and coding, fundamentals of computer science, software design and architecture development, algorithms and data structures, information analysis, software debugging and testing, and working on development teams. The Software Engineer also works with sponsors to curate requirements, define sprint work items, set priorities for work backlogs, and organize development teams.
Key Responsibilities
- Perform software development, debugging, modification, enhancement, and documentation.
- Develop and maintain kernel and user-level software and scripts.
- Contribute to technical reports and presentations.
Additional Responsibilities
- Develop / design software requirements for existing and future products.
- Implement software designs and requirements into current and future products.
- Report development status and results to Project Director.
- Regularly work with customers, users, and team members during product life cycle to facilitate a quality product.
- Comply with documented software processes.
- Provide engineering support for developed products.
Required Minimum Qualifications
- Experience in concept and feature Agile development methodologies and structured approaches to documentation.
- Experience with software development in a Linux environment.
- Coordination, organization, teaming and communication abilities.
- The candidate must be self-motivated, possess communication skills, and be capable of working in a multi-tasking team environment.
Preferred Qualifications
- Active Secret Clearance.
- Experience with software languages: C/C++, JavaScript, Python.
- Experience with software tools: Jira, Confluence, GitLab, VS Code.
- Experience with containerization: Docker, Podman.
- Experience with software development life cycle models such as Agile.
- Knowledge of TCP/IP, UDP, REST and other network communication protocols.
- Familiarity with Data Distribution Service (DDS) and Interface Definition Language (IDL).
- Hands-on software troubleshooting and testing of military and/or networking applications.