Software Developer, Biochemistry
Vanderbilt University, located in Nashville, Tennessee, is a top-15 private research university.
Software Developer, Biochemistry
Works across the software development life cycle, including software design, coding, testing, deployment, and maintenance.
The Lopez laboratory at Vanderbilt University School of Medicine, Department of Biochemistry, seeks a self-motivated candidate to build and maintain our research software suite to support all aspects of ongoing computational research. The candidate will work in a multi-disciplinary research environment to assist investigators in transitioning algorithms from prototype code to fully-fledged, production-quality, user-friendly code, and maintain and update code on an ongoing basis. The candidate will work across the software development life cycle, including software design, coding, testing, deployment, and maintenance. The candidate will work with teams comprised of faculty, postdoctoral researchers, graduate students, and undergraduate students to support ongoing research. The candidate will also support lab operations and scientific outreach activities as necessary. The ideal candidate will be a good communicator and have a growth mindset with an enthusiasm for scientific discovery.
The Lopez lab works in the general area of systems biochemistry and molecular biology of cancer, a dynamic field that seeks to understand complex biological systems (such as cancer cells) by integrating data about biochemical components. This includes working with quantitative “big data” and building predictive models to develop novel theories. Our ultimate goal is to contribute to improving the lives of cancer patients through better-informed treatment.
Duties and Responsibilties:
Contribute to scientific software development within a research environment and accelerate software growth from prototype to production: Respond to and resolve support queries relating to lab software, e.g. on support forums and GitHub issues. This includes independently finding and resolving bugs and issues with code. Add and improve unit and integration tests using continuous integration (automatic testing) to achieve a high level of test coverage. Use continuous deployment where possible, e.g. to automatically release new software package versions. Refactor code for maintainability and to meet software engineering best practices. Improve and harden existing code by adding additional test cases, development of new features in response to lab and community needs, improving and simplifying installation procedures, and increase reproducibility and reliability of software across different end-user computing platforms. Add to and improve technical and user documentation, adding worked examples and tutorials where appropriate. Improve interoperability with related scientific software via APIs and through collaboration with peers. Developing/improving user interfaces (command line, graphical, web-based). Maintain documentation and keep up-to-date as needed. Maintain software releases for the community (e.g. via GitHub, PyPI, Anaconda, Docker Hub). Teaching and instruction of software developed within the lab: Present overviews and tutorials to internal and external audiences. Develop, implement, or present tutorials, presentations, and workshops. Assist with systems administration Software installation, configuration, and updates. Hardware installation and upgrades.
Bachelor’s degree in software engineering, computer science, applied mathematics, or a related scientific field with strong computational emphasis is necessary. Master's Degree or experience in scientific computing environments, is preferred. Postgraduate/industry experience in software engineering or a related field is preferred. One year of software development is preferred. Experience with Python and its scientific libraries (numpy, scipy, pandas, scikit) is necessary. Familiarity with git version control and GitHub is preferred. Proficiency in independently troubleshooting and debugging scientific software is necessary. Experience with unit testing and continuous integration using Travis CI, GitHub Actions, or comparable platforms is preferred. Experience with building, running, and deploying software containers using Docker is preferred. Experience with building and deploying software on GitHub, PyPI, Anaconda Cloud, and Docker Hub is preferred. Knowledge of C / C++ for scientific computing is necessary. Knowledge of parallel computing technologies, such as NVIDIA’s CUDA platform, OpenCL, and OpenMPI is preferred. Knowledge of web frameworks (Django, Flask) and web interface design and development is preferred. Experience maintaining software on HPC workstations is necessary. A track record of developing, releasing, and maintaining successful software projects is necessary. Excellent oral and written communication skills, including writing technical and user documentation for software is necessary. Strong team player, with the ability to communicate and work effectively with technical and non-technical colleagues is necessary. Commitment to Equity, Diversity, and Inclusion
At Vanderbilt University, we are intentional about and assume accountability for fostering advancement and respect for equity, diversity, and inclusion for all students, faculty, and staff. Our commitment to diversity makes us who we are. We have created a community that celebrates differences and lets individuality thrive. As part of this commitment, we actively value diversity in our workplace and learning environments as we seek to take advantage of the rich backgrounds and abilities of everyone. The diverse voices of Vanderbilt represent an invaluable resource for the University in its efforts to fulfill its mission and strive to be an example of excellence in higher education.
Vanderbilt University is an equal opportunity, affirmative action employer. Women, minorities, people with disabilities, and protected veterans are encouraged to apply.