Software Engineer-Cybersecurity Applications
NREL's Cybersecurity Science and Simulation Group is performing research to secure our energy systems from cyberattacks, and to make them more resilient to disruptions of any type. Using an on-premises private cloud interconnected with unique and powerful laboratory systems, NREL’s cyber range powers ( click here to learn more https://www.youtube.com/watch?v=mVE8b1raWOc) our investigation of rapidly evolving communication systems, industrial control systems, internet of things (IoT), and the flow of energy on which we all depend. Our research significantly enhances energy security, resilience, efficiency, and affordability across the United States and the world.
In CSSG, software engineers work closely with network engineers and architects, mathematicians, and security professionals. Every project involves collaboration across NREL’s domains of expertise – from renewable generation via wind, solar, and geothermal; to efficient energy consumption in smart buildings, electric vehicles, and industry; to the power systems, energy storage, data and control algorithms needed to ensure the whole system operates reliably.
The successful candidate will support development of multiple software projects, primarily the cyber range application (Cyber Energy Emulation Platform, or CEEP). This software orchestrates and automates an experiment’s virtual private cloud, enables bidirectional data flow to next-generation devices in NREL’s laboratories, and provides analysis and visualization of the experimental outcomes. The successful applicant will work collaboratively to identify, design, implement, and test new functionality across a variety of software applications. They will join NREL fully capable of supporting either the CEEP backend, frontend, or both. They will be comfortable working in an interdisciplinary environment to remove uncertainty from project requirements and build consensus around outcomes.
.
Basic Qualifications
Researcher II:
Master's Degree in Computer Science or related field. Or, Bachelor's Degree in Computer Science, or related field, and 2 or more years of relevant experience.
Researcher III:
PhD in Computer Science or related field. Or, Master's Degree in Computer Science, or related field, and 3 or more years of relevant experience. Or, Bachelor's Degree in Computer Science, or related field, and 5 or more years of relevant experience..
For the Researcher II position:
The Researcher II requires a skilled professional who applies, on a broad basis, existing theories, principles, and concepts, and is fully competent in all conventional applications of knowledge common to the specific discipline and function of work assigned.
Principal Duties and Responsibilities of the Researcher II:
For the Researcher III position:
The Researcher III requires a seasoned, experienced professional in a broad discipline or narrow, specialized field who is eager to develop advanced software, techniques, and standards to enable and accelerate specialized, state-of- the-art research on energy system cybersecurity and telecommunication advancements.
Principal Duties and Responsibilities of the Researcher III:
Preferred Qualifications
Additional desired skills include:
Perform some non-routine tasks requiring the exercise of independent judgment
Provides solutions to a variety of technical problems of moderate scope and complexity
Contributes to the completion of milestones on multiple projects and/or specific programmatic objectives.
Receives long- range directions on new assignments and receives occasional oversight on complex features or problems.
Requires the ability to recommend and/or determine technical approaches for obtaining solutions.
Advanced understanding and wide application of concepts in the field
Frequently contributes to the development of new theories and methods.
Displays a substantial and significant record of achievement through reports, publications, intellectual property, or technical products.
Leads technical decision-making and direction at the project level.
Works under nominal supervision and provides technical direction
Defines deliverables and leads projects for group or center initiatives and/or new technology strategies.
Provide technical solutions to a wide range of difficult problems
Experience developing in a microservice environment
Data modeling experience using XSD and/or JSON Schema
Working experience in writing unit tests and integration tests within a test-driven development approach
Experience building and deploying Docker containers
Experience with virtualization and orchestration tools such as Kubernetes, Rancher, and VMWare
Excitement about improving our national energy security
Strong working knowledge of communication network principles and practices
Experience with 3D development platforms (e.g., Unity 3D, Unreal, ThreeJS)
Experience using backend frameworks (e.g., .NET, Express, Spring)
Experience developing in a microservice environment
Machine Learning experience using an open library like PyTorch or scikit-learn
An understanding of the energy-related challenges and opportunities inherent in monitoring, communicating within, controlling, and visualizing diverse energy systems
Ability to hold and maintain a security clearance
Strong understanding of test-driven development
Capacity to learn new programming languages and technology frameworks
Strong communication and writing skills
Flexibility to work in a highly dynamic scientific environment
Additional Required Qualifications
Experience using version control, issue tracking, and backlog management in a team environment
Experience developing using Agile or modified Agile methodology
Experience developing complex software using C++ or C# - and - other object-oriented languages (e.g., node.js, Vue, Angular, object-oriented Python)
Experience with continuous integration/continuous development frameworks and tools, including Gitlab, Ansible, and Jira