The Advanced Control Systems (ACS) Department in the Controls and Data Systems Division (CDS) at SLAC is involved in many national and international projects, among others the instrument development for the Large Synoptic Survey Telescope (LSST) camera, the Linac Coherent Light Source (LCLS) experiments, the Cryogenic Dark Matter Search (CDMS) experiment, the LHC ATLAS detector at CERN, and accelerator controls for LCLS-II and LCLS-II High Energy Upgrade.
We’re seeking a Senior Software Application Developer and Architect. This position is to architect, design, develop and deploy controls infrastructure software applications. Contribute to the development and maintenance of the open source Experimental Physics and Industrial Control System (EPICS) toolkit. Maintain and migrate legacy applications to a more modern platform such as python/QT. Develop multi-threaded control systems infrastructure and middle-ware software on a Linux platform using C/C++. Follow the standard Software Development Cycle in order to design, develop, test and integrate robust, production level software applications. Communicate and work effectively with other staff to determine project requirements and appropriate implementation. Gather requirements from users (mostly physicists) and operators. Produce requirements, architecture and design specification documentation. Present and communicate effectively with users, team members and management. Perform requirements, design, and code reviews. Investigate new technologies.
Note: Due to COVID-19-related curtailment of on-site activities, the job duties for this position may be required to be performed from home until full site access is restored. Given the nature of this position, SLAC is open to both telecommuting and remote work options.
Your specific responsibilities include:
- Propose, conceptualize, design, implement, and develop solutions for difficult and complex applications independently.
- Oversee testing, debugging, change control, and documentation for major projects.
- Supervise professional staff, as necessary, working on all phases of application development projects.
- Engage in long-term strategic planning.
- Define complex application development administration and programming standards.
- Oversee the support, maintenance, operation, and upgrades of applications.
- Troubleshoot and resolve complex technical problems.
- Review the physical design of existing systems for optimizing performance.
- Lead projects, as necessary, for special systems and application development in areas of complex problems.
- Work with other technical professionals to develop standards and implement best practices.
* - Other duties may also be assigned
To be successful in this position you will bring:
- Bachelor's degree in computer science or engineering and eight years of relevant experience in designing, developing, testing, and deploying applications, or a combination of education and relevant experience.
- Ability to quickly learn and adapt to new technologies and programming tools.
- Strong understanding of data design, architecture, relational databases, and data modeling.
- Thorough understanding of all aspects of software development life cycle and quality control practices.
- Ability to define and solve logical problems for highly technical applications.
- Strong communication skills with both technical and non-technical clients.
- Demonstrated background in leading activities on structured team development projects.
- Ability to select, adapt, and effectively use a variety of programming methods.
- Ability to recognize and recommend needed changes in user and/or operations procedures.
- Strong background in Object Oriented Analysis and Design, Python, QT, GUI design, Model View Control, Design Patterns, Software Development Cycle.
- Strong background and experience with C/C++.
- Experience in developing control systems software applications on a Linux platform using C and/or C++
- Strong working knowledge of client/server Linux, scripting, relational database design, JVM, SQL, JDBC/Relational DB, ant, HTML, XML, J2EE application servers.
- Demonstrated experience using process oriented approach to complete responsibilities.
- Project management skills
- Familiarity with the Motif/X-Window tool kit
- Experience with EPICS.
- Experience with version control concepts and tools.
- Experience with Continuous test and integration concepts and tools.
SLAC Employee Competencies:
- Effective Decisions: Uses job knowledge and solid judgment to make quality decisions in a timely manner.
- Self-Development: Pursues a variety of venues and opportunities to continue learning and developing.
- Dependability: Can be counted on to deliver results with a sense of personal responsibility for expected outcomes.
- Initiative: Pursues work and interactions proactively with optimism, positive energy, and motivation to move things forward.
- Adaptability: Flexes as needed when change occurs, maintains an open outlook while adjusting and accommodating changes.
- Communication: Ensures effective information flow to various audiences and creates and delivers clear, appropriate written, spoken, presented messages.
- Relationships: Builds relationships to foster trust, collaboration, and a positive climate to achieve common goals.
PHYSICAL REQUIREMENTS/ WORKING CONDITIONS:
- Consistent with its obligations under the law, the University will provide reasonable accommodation to any employee with a disability who requires accommodation to perform the essential functions of his or her job.
- May work extended or unusual work hours based on research and project requirements.