Controls Software Engineer

Website SSRL_news SLAC National Accelerator Laboratory

SLAC National Accelerator Laboratory is passionate about the advancement of science, and we are looking for talented people to support us in this mission.

The Electronics Engineering Division (EED) in the Accelerator Directorate is seeking an experienced Controls Software Engineer to design, enhance, and support controls software utilized by diverse electronics subsystems for all accelerators throughout SLAC.  The successful candidate will bring to the division a wide range of skills and experience relevant to software engineering, instrumentation and controls engineering in support of the world’s most powerful free electron laser.

Controls applications at SLAC are a heterogeneous mix of embedded real-time software running on open source RTEMS and Linux RT, as well as industrial control processes running on PLCs and Linux servers. Linux host applications typically control Ethernet-attached devices, execute client-server middleware, graphical user interfaces (GUIs), efficiency tools, and computing infrastructure.

Opportunities for this position include the development, support, and integration of advanced hardware systems and architectures. Gather requirements from hardware engineers, software engineers, physicists and operators. Produce requirements, design specifications and perform associated reviews. Present and communicate effectively with users, team members and management. Investigate new technologies. Deploy, commission, and support robust, production level control solutions and software applications. Rapidly respond to and follow-through with solutions for issues encountered during the operation of the control subsystems.

Primary Responsibilities Include (but not limited to):

  • Responsible for the development, integration, and the operational support for accelerator control subsystems implemented with a broad variety of controllers and software.
  • Using the Experimental Physics & Industrial Control System (EPICS) toolkit, develop interfaces, Input / Output Controllers (IOCs) and control screens.
  • Develop software infrastructure in support of various control sub-systems.
  • Identify and quickly resolve diverse technical issues that may arise within the organization’s various Rapid Response Teams.
  • Analyze, conceptualize technical designs, develop and deploy solutions for complex system/programs independently.
  • Work with a variety of users to gain information, and develop intra-system tradeoffs between different users, as necessary; interact with a diverse client base and outside vendor contacts.
  • Document system builds and application configurations; maintain and update documentation as needed.
  • Work as a project leader, as needed, for projects of moderate complexity.
  • Serve as a technical resource for applications.
  • Compare, evaluate, and implement new features and technologies, and integrate them into the computing environment.
  • Follow team software development methodology.
  • Mentor junior engineers.

To be successful in this position you will bring:

  • Bachelor’s degree in computer science, engineering, mathematics, physics, or related discipline and five years of relevant experience in industrial controls and software engineering; or a combination of education and relevant experience.
  • Experience with source code control and a structured release environment.
  • Demonstrated programming skills with C and/or C++ and experience with Linux/Unix and a scripting language such as (and preferably) Python.
  • Sound knowledge of networking protocols.
  • Expertise in designing, developing, testing, and deploying applications.
  • Proficiency with application design and data modeling.
  • Ability to define and solve logical problems for highly technical applications.
  • Strong communication skills with both technical and non-technical clients.
  • Ability to lead activities on structured team development projects.
  • Ability to select, adapt, and effectively use a variety of programming methods.
  • Knowledge of application domain.
  • Demonstrated project leadership, planning, and excellent organizational skills.
  • Ability to integrate systems, end-to-end, in a scientific facility.
  • Strong problem solving skills, independent decision making, and ability to work in a team environment.

Preferred Qualifications:

  • Advanced degree in one of the STEM disciplines or 10 years of relevant experience.
  • Experience with EPICS.
  • Experience in software controls development in an industrial or laboratory environment.
  • Experience with real-time embedded programming.
  • Background in Object Oriented Analysis and Design, Python, QT, GUI design, Model View Control, Design Patterns, Software Development Cycle.
  • Strong working knowledge of client/server architectures using Linux, scripting, relational database design, SQL, Relational DB, HTML, XML, JSON.
  • Experience with PLCs architecture and ladder logic programming.

SLAC 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*:

  • Constantly perform desk-based computer tasks.
  • Frequently sit, grasp lightly/fine manipulation.
  • Occasionally stand/walk, writing by hand.
  • Rarely use a telephone, lift/carry/push/pull objects that weigh up to 10 pounds.

* – 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.

WORKING CONDITIONS:

  • May work extended hours, evening and weekends.

WORK STANDARDS:

  • Interpersonal Skills: Demonstrates the ability to work well with Stanford colleagues and clients and with external organizations.
  •  Promote Culture of Safety: Demonstrates commitment to personal responsibility and value for environment, safety and security; communicates related concerns; uses and promotes safe behaviors based on training and lessons learned.  Meets the applicable roles and responsibilities as described in the ESH Manual, Chapter 1—General Policy and Responsibilities: http://www-group.slac.stanford.edu/esh/eshmanual/pdfs/ESHch01.pdf
  • Subject to and expected to comply with all applicable University policies and procedures, including but not limited to the personnel policies and other policies found in the University’s Administrative Guide, http://adminguide.stanford.edu.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Classification Title: Software Developer 2

Grade: J

Job code: 4822

Duration: Regular Continuing

To apply for this job please visit erp-hprdext.erp.slac.stanford.edu.