Controls Software Engineer
Berkeley Lab · Berkeley, CA · 1 wk ago
Information Technology$105k–$128k/yrFull-time
About the role
The Controls Software Engineer supports the development, deployment, maintenance, and enhancement of software systems that enable operations of the Advanced Light Source (ALS), a world-class synchrotron user facility. This position involves working within a collaborative team of software engineers, scientists, and technical staff.
Responsibilities
- Develop, test, deploy, and maintain control system software using EPICS and associated software development tools.
- Aid in the development and enhancement of graphical user interfaces, operator displays, data logging applications, and other software tools used for accelerator and beamline operations.
- Develop and support Physics Higher Level Applications for the ALS accelerator complex using Python, MATLAB, and related scientific computing tools under the guidance of senior staff.
- Participate in software integration, testing, troubleshooting, and validation activities to support operational and project objectives.
- Assist with commissioning new controls and software applications in collaboration with engineers, scientists, and technical personnel.
- Diagnose and resolve routine software issues, escalating complex problems as appropriate.
- Create and maintain technical documentation, user guides, software specifications, and development records related to assigned work.
- Present work progress, technical findings, and project updates during team meetings and technical discussions.
- Follow established software development methodologies, coding standards, and quality assurance practices.
- Collaborate effectively with software developers, accelerator physicists, engineers, and operations staff to support ALS scientific and operational goals.
Requirements
- Bachelor’s degree in Computer Science, Engineering, Computational Biology, or a related field; or an equivalent combination of education and relevant experience.
- 2 years of experience in software development or related technical work (including internships, academic projects, or research experience).
- Experience through coursework, internships, research projects, or employment developing software applications using one or more modern programming languages such as Python, C++, Java, or similar languages.
- Experience using software development tools and practices, including version control systems such as Git.
- Demonstrated ability to learn new technologies and technical concepts in a collaborative environment.
- Effective written, verbal, and interpersonal communication skills.
- Foundational knowledge of software engineering principles, programming concepts, and software development life cycle methodologies.
- Understanding of object-oriented programming, data structures, algorithms, and software design practices.
- Development experience with Matlab, Python and C/C++ programming languages.
- ML/LLM models knowledge and implementation experience on software code.
- Basic understanding of Linux/UNIX environments and software development tools.
- Ability to develop, test, debug, and maintain software applications under guidance from senior developers.
- Ability to use version control systems and collaborative development tools.
- Technical writing skills sufficient to prepare clear documentation and reports.
- Analytical and problem-solving skills for identifying and resolving routine software issues.
- Ability to learn complex scientific and technical systems and apply new knowledge effectively.
- Ability to work both independently on assigned tasks and collaboratively within multidisciplinary teams.
- Ability to communicate technical information clearly to both technical and non-technical audiences.
Qualifications
- Bachelor’s degree in Computer Science, Engineering, Computational Biology, or a related field; or an equivalent combination of education and relevant experience.
- 2 years of experience in software development or related technical work (including internships, academic projects, or research experience).
- Experience through coursework, internships, research projects, or employment developing software applications using one or more modern programming languages such as Python, C++, Java, or similar languages.
- Experience using software development tools and practices, including version control systems such as Git.
- Demonstrated ability to learn new technologies and technical concepts in a collaborative environment.
- Foundational knowledge of software engineering principles, programming concepts, and software development life cycle methodologies.
- Understanding of object-oriented programming, data structures, algorithms, and software design practices.
- Development experience with Matlab, Python and C/C++ programming languages.
- ML/LLM models knowledge and implementation experience on software code.
- Basic understanding of Linux/UNIX environments and software development tools.
- Ability to develop, test, debug, and maintain software applications under guidance from senior developers.
- Ability to use version control systems and collaborative development tools.
- Technical writing skills sufficient to prepare clear documentation and reports.
- Analytical and problem-solving skills for identifying and resolving routine software issues.
- Ability to learn complex scientific and technical systems and apply new knowledge effectively.
- Ability to work both independently on assigned tasks and collaboratively within multidisciplinary teams.
- Ability to communicate technical information clearly to both technical and non-technical audiences.
Skills
- Experience with Linux or UNIX-based operating systems.
- Familiarity with scientific computing, data analysis, or engineering software environments.
- Exposure to control systems, instrumentation, automation systems, or distributed software architectures.
- Experience with EPICS, MATLAB, or similar scientific and engineering software frameworks.
- Experience developing graphical user interfaces, web-based applications, or data visualization tools.
- Knowledge of software testing and quality assurance methodologies.
Benefits
N/A
Pay
$105,000 - $128,000, which fits into the full salary range of $92,964 - $156,876 depending upon the candidate’s skills, knowledge, and abilities.
Schedule
Full-time 2 year, term appointment with the possibility of extension or conversion to Career appointment based upon satisfactory job performance, continuing availability of funds and ongoing operational needs.