What software development skill do I need?#
The first thing is obviously knowing and choosing programming language(s) appropriate for your task. Here’s a short discussion on that here: What programming languages do I need to learn?
Let’s say you are writing a super cool software that does amazing things.
You should version control it using Git.
And you should want to make it open-source and f
Surely, you want the world to use it. If your software has a lot of dependencies, you might want to containerize it.
Version control using Git and GitHub#
Conda#
When you install a package via Conda, it searches for the package in repositories (called channels). If the package is not available in Conda’s default channel, alternative channels include conda-forge and Bioconda. We recommend using conda-forge for the reasons listed here.
Note that Conda’s dependency resolution tends to be slow, so here are some faster alternatives:
Docker#
Collection of useful bioinformatics Docker images: https://pegi3s.github.io/dockerfiles/
Apptainer#
Documentation#
Sphinx (Python): https://www.sphinx-doc.org/en/master/
Jupyter Book: https://jupyterbook.org/en/stable/intro.html