Distributed Systems Software Engineer

Position Summary

RENCI is seeking a talented individual for the position of a Distributed Systems Software Engineer to support the activities of the Network Research and Infrastructure Group (NRIG) in continuing to develop software solutions that enable a software ecosystem supporting NRIG projects. The group develops distributed software platforms that enable scientists to engage in data-intensive distributed collaborations. These platforms orchestrate and federate infrastructure and data elements to improve scientists’ productivity and reduce time to discovery.

The position will focus on developing software applications for provisioning, troubleshooting and improving the operations of Software Defined Networking (SDN) production and testbed environments that support a variety of national and international research and education activities between the U.S., Europe, Asia and the nations of Latin America, Africa and the Caribbean.

Responsibilities:

  • Software development: develop new and extend existing software, validate, benchmark and optimize complex distributed software using best practices from the Open Source community. Provide software development expertise to other team members in maintaining and evolving the network control software platforms.
  • Software architecture: provide input to architectural decisions, supporting best practices in software design and integration.
  • Software packaging and quality control: support group efforts in helping test and package software as easy to deploy solutions for the scientific communities and implement procedures that ensure high quality of the resulting code.

Educational Requirements

Relevant post-Baccalaureate degree required; for candidates demonstrating comparable background in academic or research computing management, will accept a relevant undergraduate degree and 3 or more years of relevant experience in substitution.

Qualifications and Experience

Prefer a M.S. in Computer Science or related field with 2 years software development experience or B.S. in Computer Science or related field with 5 years software development experience.

  • Networking: knowledge of L2 and IP network protocols (including routing) and concepts. Experience with network programming abstractions and systems (OpenFlow, P4, Linux eBPF/XDP or commercial offerings) a big plus.
  • Programming: working experience with Python (3+), C. Other languages a plus. Strong foundation in Object-Oriented programming. Experience with software release lifecycle, GitHub, PyPi etc.
  • Distributed systems: Experience designing and integrating with modern distributed open-source software platforms: NoSQL databases, key-value stores, webservices platforms, messaging frameworks a big plus.
  • Environments: Capable of working in a Linux environment. Experience with Docker and/or Singularity, Kubernetes a plus.
  • Good communications skills, ability to work independently and in a team with diverse skills and expertise. Ability to set priorities and execute complex assignments with minimal supervision.

Equal Opportunity Employer

The University of North Carolina at Chapel Hill is an equal opportunity and affirmative action employer. All qualified applicants will receive consideration for employment without regard to age, color, disability, gender, gender expression, gender identity, genetic information, national origin, race, religion, sex, sexual orientation, or status as a protected veteran.

To apply: https://unc.peopleadmin.com/postings/197889.