Job DescriptionThe Software Engineer position bridges the gap between scientific hypothesis and robust software execution. Reporting to the Director, you will work directly with postdocs, graduate students, and the Principal Investigator(s) to design, build, and maintain data pipelines, custom software tools, and computational workflows. This role ensures the lab's research code is stable, scalable, reproducible, and ready for peer-reviewed publication.
Core Responsibilities:Software Development & Engineering
- Translate complex mathematical models, scientific algorithms, and raw scripts (Python, R, MATLAB) into clean, modular, and well-documented software packages.
- Develop and maintain data processing pipelines, user interfaces, or visualization dashboards for lab datasets.
Data & Infrastructure Management
- Containerize applications (using Docker or Singularity) to ensure identical execution environments across local machines, high-performance computing (HPC) clusters, or cloud platforms.
- Manage large-scale research datasets, ensuring secure storage, version control, and compliance with institutional data management policies.
Research Collaboration & Support
- Partner with lab researchers to understand their computational roadblocks and engineer custom tooling to automate workflows.
- Optimize existing code for performance, speed, and memory usage to handle growing dataset sizes.
Sustainability & Open Science
- Implement professional software practices within the lab, including version control (Git), automated testing, and continuous integration (CI/CD).
- Package and document software to open-source standards, enabling external researchers to replicate the lab's findings.
Required SkillsRequired Qualifications Education:Bachelor's degree in Computer Science, Data Science, Bioinformatics, or a related scientific/quantitative discipline.
Experience: 3-5 years of professional software engineering experience, or an equivalent mix of graduate-level research and development.
Core Technical Skills:Proficiency in languages common to research (e.g., Python, R, C++, or Julia). Strong expertise with Git, GitHub/GitLab workflows, and writing automated tests. Experience working in Linux/Unix environments and writing shell scripts. Familiarity with containerization tools like Docker or Singularity.
Additional Skills:Strong communication skills and the ability to explain technical software concepts to non-engineer scientists.
Preferred Qualifications:Experience running jobs on High-Performance Computing (HPC) clusters using schedulers like Slurm. Experience with cloud platforms (AWS, GCP, or Azure) for scientific computing. Prior experience contributing to open-source software libraries or co-authoring scientific papers.