Design, develop, test, and maintain software for real-time, high-availability systems
Lead software development activities independently and as part of a collaborative engineering team
Analyze complex system requirements and translate them into efficient, maintainable software designs
Apply sound software engineering principles to ensure code is reliable, fault tolerant, reusable, and maintainable
Lead and mentor junior developers, influencing technical direction and development processes
Participate in Agile ceremonies including daily stand-ups, release planning, and sprint reviews
Develop, tune, document, and deploy automation scripts across development, test, and production environments
Promote code reuse, cross-program collaboration, and sustainable development practices
Support system integration activities, including hardware and low-level communications interfaces
Requirements
Bachelor’s degree in Computer Science or related field with 8-12 years of relevant experience OR Master’s degree with 6-10 years of relevant experience
Ability to obtain and maintain a Public Trust clearance
Strong object-oriented programming experience
Proficiency in C and/or C++
Experience developing real-time, multi-threaded, high-availability systems
Experience with Linux environments (Red Hat), virtual machines, and hypervisors
Experience with low-level communications protocols (TCP/IP, UDP, SCTP)
Experience with hardware or complex system integration
Familiarity with system maintenance and lifecycle concepts
Experience with source control and configuration management tools
Strong understanding of modern software development principles and best practices
Ability to plan and prioritize work effectively in a fast-paced environment
Strong verbal and written communication skills
Demonstrated ability to work independently and collaboratively.