Back to jobs
Stanford University

Software Developer 1

Stanford, CASalary not listedPosted 10 days ago

Job description

The Department of Ophthalmology in the School of Medicine at Stanford University is launching an interdisciplinary Neuro-AI project dedicated to building a foundation model of the brain. This endeavor will involve multiple labs and faculty across the Stanford campus, including the Wu Tsai Neurosciences Institute, Stanford Bio-X, and the Human-Centered Artificial Intelligence Institute. Leveraging cutting-edge advances in electrophysiology and machine learning, this project aims to create a functional "digital twin" — a model that captures both the activity dynamics of the brain at cellular resolution and the intelligent behavior it generates, including perception, motor planning, learning, reasoning, and problem-solving.

This ambitious initiative promises to offer unprecedented insights into the brain's algorithms of perception and cognition while serving as a key resource for aligning artificial intelligence models with human-like neural representations. As part of this project, we are seeking talented software developers/engineers to support the whole team by developing and scaling the systems that allow our scientists to iterate quickly. In this role, you will play a critical role in ensuring the reproducibility and production-readiness of our codebase, as well as implementing Continuous Integration and Continuous Deployment (CI/CD) processes for all teams involved in the project. Your work will be essential in maintaining the highest standards of software quality, reliability, and efficiency.

This position promises a vibrant and cooperative atmosphere within the laboratories of Andreas Tolias (https://toliaslab.org), Tirin Moore (https://www.moorelabstanford.com) and other labs at Stanford University renowned for their expertise in perception, cognition, pioneering neural recording techniques, computational neuroscience, machine learning, and Neuro-AI research.

Duties include

:

  • Assess user needs and requirements. 
  • Design and develop applications that may involve sophisticated data manipulation. 
  • Maintain and update existing programs.
  • Troubleshoot and solve technical problems.
  • Create programs to meet reporting and analysis needs.
  • Design and implement user and operations training programs. 
  • Document changes in software for end users.
  • Follow team software development methodology. 
  • Serve as technical resource with respect to applications.
  • * - Other duties may also be assigned
     

Desired Qualifications:

  • 3+ years of experience in developing and maintaining production-grade codebases
  • Strong programming skills in Python and system-level languages (e.g. C/C++, Rust)
  • In-depth experience with version control systems like Git and collaborative development platforms like GitHub
  • Experience setting up and maintaining CI/CD principles through tools such as GitHub Actions and Jenkins
  • Strong understanding and experience in test-driven software development with knowledge of different testing methodologies such as unit testing, integration testing, and end-to-end testing
  • Excellent problem-solving, communication, and collaboration skills
  • Ability to work effectively in a fast-paced, multidisciplinary environment
  • Experience with containerization technologies like Docker and orchestration platforms like Kubernetes and Slurm
  • Experience with the challenges of scientific software development
  • Knowledge of software design patterns and architectures
  • Experience contributing to and/or maintaining open-source software projects or libraries
  • Familiarity with machine learning frameworks such as TensorFlow or PyTorch

What we offer

:

  • Work on a collaborative and uniquely positioned project spanning several disciplines, from neuroscience to artificial intelligence and engineering.
  • Work jointly with a vibrant team of researchers and scientists in a project dedicated to one mission, rooted in academia but inspired by science in industry.
  • Competitive salary and benefits.
  • Strong mentoring in career development.
     
     

Responsibilities

Core Duties

:

  • Assess user needs and requirements. 

  • Design and develop applications that may involve sophisticated data manipulation. 

  • Maintain and update existing programs.

  • Troubleshoot and solve technical problems.

  • Create programs to meet reporting and analysis needs.

  • Design and implement user and operations training programs. 

  • Document changes in software for end users.

  • Follow team software development methodology. 

  • Serve as a technical resource with respect to applications.

Minimum Education and Experience:

Bachelor's degree and three years of relevant experience or a combination of education and relevant experience.

Knowledge, Skills and Abilities

:

  • Working knowledge of latest software and design standards. 

  • Ability to define and solve logical problems for technical applications.

  • Knowledge of and 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.

  • Basic knowledge of software engineering principles.

  • Strong knowledge of at least one programming language.