The Software Engineer designs, develops, maintains, and enhances complex and diverse software systems, including processing‑intensive analytics, advanced algorithms, large‑scale data processing, real‑time systems, and business information systems. The role may involve independent work or collaboration within a team. Responsibilities include reviewing and testing software for adherence to design requirements, documenting results, resolving software issues, and applying development methodologies suited to the project environment. The engineer contributes to system‑level design decisions, including hardware/software trade‑offs, software reuse, COTS/GOTS integration, and requirements analysis at both system and component levels. Technical domains span front‑end and back‑end development, micro‑services architecture, distributed systems, cloud migration, and a broad tool and technology ecosystem including Kubernetes, Rust, React, Elasticsearch, Grafana, Terraform, and a variety of data, messaging, and security technologies. Key Responsibilities: Analyze user requirements and translate them into software design and performance specifications. Debug and resolve defects in existing software. Recommend improvements to documentation and development process standards. Design and implement new software features or modify existing functionality. Integrate existing software into new or updated systems and environments. Create basic data queries for current or planned databases and repositories. Develop or review technical documentation for software and systems. Serve as a team lead appropriate to the software development methodology in use. Design or implement advanced database interfaces and complex data queries. Develop or optimize algorithms to meet or exceed performance and functional requirements. Support development and execution of test procedures for software components. Analyze system performance standards, interact with users and system engineers, and evaluate workflow and data processes to develop software solutions. Modify existing software for defect correction, hardware adaptation, or performance improvements. Apply scientific analysis and mathematical modeling to design, develop, and refine software systems. Design and implement complex algorithms under strict timing, resource, or interface constraints; perform quality control on team outputs. Implement process improvements for documentation and development standards. Provide oversight for one or more software development teams to ensure adherence to project constraints and processes. Collaborate with system and hardware engineers to define requirements and understand performance constraints and interfaces. Coordinate installation of software systems and monitor system performance to ensure operational requirements are met. Technical Skill Areas: Front-End: JavaScript, React/JSX, (eventually TypeScript) Back-End: Node.js, Rust, Python, Shell scripting Microservices & Distributed Systems: Kubernetes, Helm Charts, service mesh, multi-site deployments, load balancing, microservice deployment patterns, cloud migration Tools & Technologies: NiFi, JEST, Grafana, InfluxDB, Elasticsearch, Redis, MySQL, Apache Superset, RabbitMQ/Kafka, Ansible/Salt, Terraform, WebSockets, JBLOCKS, CASPORT, Neo4j Security: Agency security labels (CAMKEY, LAC, COI, etc.)
Stand Out From the Crowd
Upload your resume and get instant feedback on how well it matches this job.
Job Type
Full-time
Career Level
Mid Level