Menu
©2017 ProObject
Principal Level Software Engineer (Agile)

Position Description:

Work with team lead to understand tasking and deliver system to required specifications. Work with stakeholders to understand and implement system components. Participate as a member of an Agile team in daily stand ups.

Specific duties include:

  • Interface with sub-system software and systems engineers; responsible for gathering user requirements, assisting with implementation, and support to system integration & test
  • Programming to include new development, bug fixes, and enhancements, as well as installation, monitoring and configuration programs and scripts
  • Software testing, installation, configuration and upgrading
  • Perform coding and unit test of new system components as they are defined
  • Documentation of all software developed; documentation to include application and interface documentation, Version Description Documents (VDD), User’s Manuals, and Trouble Shooting guides

Labor Requirements:

  • Delegate programming and testing responsibilities to one or more teams and monitor their performance
  • Ensure quality control of all developed and modified software
  • Recommend new technologies and processes for complex software projects
  • Select the software development process in coordination with the customer and system engineering
  • Serve as the technical lead of multiple software development teams
  • Implement recommendations for improving documentation and software development process standards
  • Coordinate software system installation and monitor equipment functioning to ensure operational specifications are met
  • Confer with system engineers and hardware engineers to derive software requirements and to obtain information on project limitations and capabilities, performance requirements and interfaces
  • Design or implement complex algorithms requiring adherence to strict timing, system resource, or interface constraints; Perform quality control on team products
  • Oversees one or more software development teams and ensures the work is completed in accordance with the constraints of the software development process being used on any particular project
  • Design or implement complex database or data repository interfaces/queries
  • Design, develop and modify software systems, using scientific analysis and mathematical models to predict and measure outcome and consequences of design
  • Modify existing software to correct errors, to adapt to new hardware, or to improve its performance
  • Serve as team lead at the level appropriate to the software development process being used on any particular project

Technical Skills Required:

  • Developing middleware or presentation layer software is a strong plus
  • Experience with Jenkins, Gradle, Maven and/or Git
  • Maintains and promotes a DEVOPS culture during the design, development and sustainment process
  • Experience with monitoring tools (e.g. ELK, Prometheus, Graffana, etc)

Special Technical Skills Desired:

  • Must be able to take the initiative, tackle implementation tasks, and solve problems with minimal guidance, but still be a “team player”, meaning, be able to accept direction and decisions from the Lead SWE and the Lead SE
  • Background in SIGINT, Cyber and/or IA
  • 3+ years using container technology (Docker, Kubernetes, Mesos, etc)
  • Familiarity with Microservice architectures
  • Familiarity with Twelve-Factor App methodologies for building software
  • Background in use of workflow orchestrators or rules processing engines such DROOL, Camunda, jBPM, or Activiti is a strong plus
  • Background in use of serialized object such as Avro
  • Background in use of JMS (ActiveMQ) topics and queues
  • Exposure to Agile methodology a plus

Minimum Experience Required:

  • Twenty (20) years of experience in programs and contracts of similar scope, type, and complexity is required.
  • Minimum 10 years’ experience as a Software Developer using OO techniques and Java
  • Minimum 10 years’ in programs and contracts of similar scope, type, and complexity as a Software Engineer supporting software architecture development, requirements analysis, process execution and evaluation.
  • 7 years’ experience with JAVA and technical experience
  • Minimum of 3 years of experience developing REST services
  • Minimum of 3 years of experience using Spring/SpringBoot
Next Job