Software Engineer

Job opening ID

Posting title
Software Engineer

Roles and responsibilities
Must be a US Citizen
10 month contract position
W2 with full benefits
Must be able to pass background check and drug screen

Job Description:
The successful candidate will be a Software Development Engineer within the Mission Control Systems Section (393) and the Mission Control Information Systems Group (393C) reporting to the Group Supervisor. He/she will be responsible for design, code and unit test of a wide variety of ground system command and telemetry software applications and components for multiple NASA space missions under the Multi-Mission Control Systems (MMCS) program within the Multimission Ground Systems and Services (MGSS) Program Office.

The MMCS includes the following components:

A Linux/Java based system that ingests, processes, stores and distributes high-speed spacecraft telemetry data to downstream analytics and Webbased visualization clients.

A system for high speed, high performance loading and querying of telemetry data repositories in both cloud and VM based environments.

A scalable Web services system providing access to real-time and historical spacecraft data that is available from different back end repositories (e.g. JMS, MySQL, Elastic Search, etc.).

Required Skills:
1) Bachelor’s degree in Computer Science, Software Engineering, or related technical discipline with a minimum of 6 years of related experience; Master’s degree in similar disciplines with a minimum of 4 years of related experience; or PhD with 2 years of related experience in a similar discipline. 
2) Extensive experience designing and developing engineering applications for medium to large, complex software systems. 
3) Extensive experience developing software systems written in Java under Linux. 
4) Minimum 4 years of recent experience with Java programming. 
5) Familiarity and experience working with the following tools and protocols: RESTFul interfaces, Remote Procedure Calls (RPCs), JSON, XML, relational and/or NoSQL databases, modern IDEs. 
6) Experience developing software systems with MySQL backends, including experience designing and implementing MySQL schemas and familiarity with MySQL Database Administration (DBA) tools. 
7) An understanding of software architectural principals such as Onion Architectural Layering, Inversion of Control (IoC) and Model-View- Controller (MVC) design patterns. 
8) Excellent organizational and communication (written and oral) skills. Must be able to work in a team and individually. 

Desired Skills:
1) Experience developing distributed, multi-threaded and highly concurrent software systems. Knowledge of the Java Concurrency packages, thread safety techniques and optimization of multi-threaded designs. 
2) Knowledge of serialization formats such as Google Protocol buffers, MessagePack and Flatbuffer. 
3) Familiarity with process management techniques. 
4) An ability to understand and navigate complex software architectural entanglements and knowledge of approaches for how to refactor those entanglements to reduce or eliminate them. 5) Familiarity with code optimization techniques for maximizing system performance. 
6) Knowledge of MapReduce and Hadoop ecosystem components, particularly HDFS, HBase and Hive. 
7) Knowledge of Lucene based information retrieval systems, particularly Elasticsearch. 
8) In-depth knowledge of relational databases, particularly MySQL and Oracle. 
9) Experience working with messaging systems such as JMS and Kafka. 
10) Working knowledge of the Spring Framework. 
11) Familiarity with the macOS Operating System and associated development tools, and how they differ from RedHat Linux. 
12) Familiarity with system emulators and virtual machines. 
13) Familiarity with AWS cloud technologies. 
14) Working knowledge of python. 
15) Prior space mission experience in the design and development of spacecraft command and telemetry systems. 
16) Prior experience with the Advanced Multi-Mission Operations System (AMMOS) and its application to JPL flight projects. 

Number of positions