The Principal Software Engineer will work closely with Systems Engineers to deliver Data Flow Inventory services, visualizations, analytics, and metrics. The engineer may have to coordinate efforts with personnel supporting other contracts/TTOs. Duties will include recommending and implementing modern technology stacks to include open source software; developing scalable microservices in a cloud based environment; integrating data from external systems; developing a query application programming interface (API) for systems integration; developing visualizations of data flow inventory; implementing a common data model across heterogeneous data inputs; and developing analytics and metrics.
•(15) years of Software Engineering experience is required.
•Experience with Cloud platforms such as Amazon Web services (AWS) and Azure, with attention to building cloud-agnostic solutions
•Microservices architecture and implementation
•Willingness to work with systems engineers and customers to prototype and explore architectures to adapt to mission needs
•Visualization experience preferably with graph datasets showing network relationships with overlays of metadata.
•Experience with virtualization, containerization, Docker, Kubernetes.
•Modern user interface development preferably in a web enabled environment (ex. Vue.js, React, Angular)
•Backend development and integration experience consuming RESTful services, incorporating JSON data formats into NoSQL databases like MongoDB.
•Experience with Spring Core, Spring Boot, Spring MVC, Spring Integration and Spring Security.
•Experience with JUnit, Spock, Powermock, Mockito, or other unit testing frameworks.
At least fifteen (15) years in software development/engineering, including requirements analysis, software development, installation, integration, evaluation, enhancement, maintenance, testing, and problem diagnosis/resolution. The individual must be able to communicate directions and provide guidance to junior programmer/analysts, as required
At least eight (8) years developing software using the Java programming language. At least six (6) years of this experience must have been obtained in the last eight (8) years
At least six (6) years demonstrated experience developing software for Windows (2000, 2003, XP, Vista), UNIX and Linux (Redhat versions 3-5) operating systems. At least two (2) years of this experience must have been obtained within the last four (4) years
Experience planning, accomplishing goals, complicated tasks, and providing consultation on complex projects as top-level contributor or specialist
At least six (6) years in programming and development of application software for complex systems and software testing
Experience architecting, designing, developing, testing, and supporting integration of software systems with functional requirements within a CMMI Level 2 process structure
Experience "wrapping" legacy systems or components as Web Services within a SOA framework
Developing solutions integrating and extending COTS products
Developing of Framework infrastructure and services within one of the SOA design patterns
Experience with performance tuning and optimization of service-based Framework infrastructure and services
Developing of custom adapters allowing the integration of legacy (i.e., capabilities not developed as services) capabilities with service-based Framework infrastructure and services