Improving bioinformatics software quality through teamwork

CCBR Journal Club

Feb 11, 2025

The problem

Bioinformatics is critical for biological research, but bioinformatics software often does not follow good software engineering practices.

Implications

  • error-prone code can lead to invalid scientific findings
  • technical debt - makes future changes more difficult

Causes of poor software quality in bioinformatics

  • many bioinformaticians lack training in software development
  • academia credits individual researchers to aid their careers, which deincentivizes teams

Writing good code is hard!

The trap of technical debt

The trap of “perfect” code

I find that when someone’s taking time to do something right in the present, they’re a perfectionist with no ability to prioritize, whereas when someone took time to do something right in the past, they’re a master artisan of great foresight.

The authors’ proposed solution

Organize bioinformaticians into collaborative teams to facilitate:

  1. software quality seminars
  2. code reviews
  3. resource sharing

(i.e. a learning community)

Goal

Persuade academic researchers to organize collaborative teams within their institutions to improve software quality

Lessons from the tech industry

  • the team is a basic unit: there are no lone geniuses
  • teams incentivize collective ownership
  • the team context requires all members to adopt good software practices

Lessons from rock climbing

Climbers view the route together and discuss the best way to climb it.

Lessons from rock climbing

Improving software dev as a team

a learning community with:

  1. software quality seminars
  2. code reviews
  3. resource sharing

1. Software quality seminars

  • presentations & demos covering new techniques, tools, methods, and theory
  • topics are applicable across multiple projects
  • result: members acquire new knowledge to apply to their projects, community gains a shared vocabulary to discuss their work

2. Code review sessions

  • review a section of code line-by-line to offer feedback
  • standard practice in industry, but seldom implemented in academia
  • result: enforce consistent coding standards, detect bugs, positive peer pressure to write good

3. Resource sharing

  • external open access resources + internal resources
  • repositories, packages, libraries, seminar recordings
  • result: encourages re-use and further enables knowledge sharing

Outcomes

organizing academic bioinformaticians into teams:

  • fosters collaboration while allowing individuals to retain personal ownership & advance their careers
  • lowers the barrier to adapt new technologies and techniques
  • improves software quality to enable deeper trust in the resulting scientific discoveries
  • benefits large & small projects alike

Future perspectives

Challenges in encouraging good software practices

  • Funding agencies reward novelty; few grants fund maintenance
  • Academia considers journal publications as the token of success

Silver linings

  • Funding for critical software maintenance: Chan Zuckerberg Initiative, Schmidt Futures
  • Journal of Open Source Software: great venue for publishing scientific software

Group discussion

  • In what ways do the authors’ ideas apply to us?
  • How are we already applying some of their ideas?
  • Are there ways we could improve our teamwork?