Description:
CLSI is now accepting applications for a Software Developer in our Data Acquisition team. As a member of a new team, the Software Developer will be responsible for designing and developing a replacement data acquisition system for our existing beamlines. As a member of the Data Acquisition team, you will be developing in-house systems with custom and community tools (such as Bluesky) as part of the team’s mandate to make beamlines more efficient and effective. The new centralized system will provide many interesting and challenging opportunities for professional growth. There will be opportunities to participate and contribute to synchrotron community projects as our own maturity grows in this new space.
Responsibilities
- Actively develop standard aspects supporting data acquisition: frontend, device coordination, data pipelines, service communication, API development
- Possess knowledge of connections and dependencies for deployed systems, including databases, scheduled tasks, logging, caches, etc.
- Understanding of system architecture and knowledge of dependencies between interconnected systems.
- Architects, designs, implements, and maintains data acquisition software.
- Undertakes software development projects in a team environment working closely with other developers, clients, other community members, and end-users when applicable.
- Troubleshoots and resolves complex problems and incidents for applicable systems while working with other staff and end users to determine the root causes of failure.
- Gathers functional requirements in collaboration with external stakeholders. Assists in identifying impacted processes and stakeholders considering existing eco-systems and their strategic roadmap. Refines functional requirements into technical requirements considering the needs for performance, scalability, and usability.
Required Qualifications:
- A relevant undergraduate degree/certificate and a minimum of two years of related experience are required.
- Proven ability to work independently and manage multiple tasks with changing priorities.
Listed below are skills and experiences that would be considered an asset,
- Strong Python skills
- Experience with databases (relational and/or document based)
- Interfacing with SCADA systems (particularly EPICS)
- Communication paradigms for service ecosystems (e.g.: REST, gRPC, webhooks, etc.)
- Experience in code management including tools, tracking, and customization (e.g.: git, GitHub, Gitlab, etc.)
- Approaches in agile systems and project forecasting (e.g.: Scrum, Kanban, etc.)
- Software testing paradigms (e.g.: unit testing, integration testing, regression testing, etc.)