Find your next opportunity.
Research Software Developer
100 Europa Drive Chapel Hill, NC 27517 US | Work from home flexibility TELECOMMUTE US
Our client's Software Architecture Group is looking for a Research Software Developer. Our client designs complex distributed computing systems to address societal challenges in collaborations with academic researchers, state and federal agency subject matter experts, and computational scientists.
The Research Software Developer will design and implement scalable cloud native computing environments, implement efficient data structures, algorithms, and workflows, and apply devops automation to develop continuous integration pipelines as well as deployment, orchestration, and dynamic scaling capabilities. The developer will constantly improve security and observability via automated vulnerability detection, performance monitoring relative to service level agreements, and automating incident response. The Research Software Developer will also work with our client's management and staff to develop project requirements, and with users to demonstrate functionality and solicit feedback.
Relevant post-Baccalaureate degree in Computer Science or a related discipline required; for candidates demonstrating comparable background in academic or research computing systems development, will accept a relevant undergraduate degree in Computer Science or a related discipline and 3 or more years of relevant experience in substitution.
Qualifications & Experience
2+ years professional experience with Python, Go, or Java.
2+ years working with users to design and improve systems.
2+ years developing data structures and algorithms.
1+ year designing scalable Internet systems.
1+ year experience with relational and other databases, caches, web servers.
Experience with microservices, REST APIs, containerization including Docker and Kubernetes, database design including relational and graph databases, and authentication protocols like OIDC and SAML are all desirable. A track record of team leadership, promotion of code review, and quality oriented automation are also helpful.
70% Software and Solutions Development
- Work with project leadership and users to fully understand user needs and consider technical approaches to meeting those needs
- Design secure performant systems in collaboration with distributed teams. Apply and model best practices in system design, automated testing, deployment, and observability
- Develop new research software and related techniques for use by internal and external users
- Deliver highly automated patterns and processes for the development and management of systems
- Present, and explain software to teammates, collaborators, and users
- Maintain documentation for both developers and end users.
20% Continuous Improvement
- Proactively identify areas for improvement in system quality and apply automation techniques to ensure problems are automatically detected and prevented in the future
- Systematically apply unit and system level testing, monitoring solutions, build dashboards and other methods to maintain high quality levels.
- Work with researchers and developers at partner institutions on the design and implementation of features and the deployment and use of the system
- Foster ongoing partnerships and contribute to the development of new collaborations.
5% User Feedback
- Solicit user feedback
- Ensure timely resolution of urgent issues
- Collaboratively integrate user perspectives into the system model driving product development