Training and e-Infrastructure for Research Software Development

CodeRefinery logo

The goal of this project is to teach students and researchers how to write better code and provide research groups with software development e-infrastructure tools to collaboratively develop, review, discuss, test, and share their codes.

We address all academic disciplines and try to be as programming language-independent as possible in our workshops. We address students and researchers who already write code.

This is a project within the Nordic e-Infrastructure Collaboration (NeIC) in collaboration with national partners.


The long-term impact of CodeRefinery workshops is measured through a post-workshop survey which is sent out to all former participants 3-6 months after attending a workshop. The two graphs below show how former participants use various software development tools after attending a workshop (left), and how their code and collaboration with colleagues has changed (right). These results are based on 71 survey responses obtained to date -- 48% of which are graduate students, 13% postdocs, 9% researchers, 9% assistant/associate/full professors and 19% other occupations (e.g staff scientists, scientific programmers).

Post-workshop survey Post-workshop survey

What do our participants say after attending a workshop?

"I'm more conscious about the way I write programs and organize their "organic" growth. I try to modularize more and write proper tests. I also use git more extensive to keep track about my different development branches"

"The main thing I got out of the workshop is that I'm now extensively using the issue-tracking systems on GitHub and GitLab. Also on one of my major projects we have moved towards having shorter lived feature branches and using merge requests for more frequent merges and less code divergence. I also started using GitLab's issues system more frequently. It made it easier for people in my lab to report bugs, and easier for me to keep track of them"
"My code became much more "sustainable" in the sense for others to read/use/modify it. In detail the most significant is improved use of git (forking workflow) and more strict "purity" of functions. Use of PyCharm increased speed of development"

"I take more time to think about long term solutions than "quick fixes" even if it's short of time. Another aspect is that I try to make the code reproducible in the sense of documentation, code readability, clear log files, etc, both for helping myself and my collaborators"

"My code is better documented, and I use version control much more. I have also started writing more unit tests"
"I write my codes now in such a way that the person who will be taking over my job would have less time figuring out what is going on. The emphasis of writing modular codes in the workshop was very helpful for me and for the people using my code"

"For me the most important thing was to learn to use git better. Now I make frequent commented commits so it is far easier to see what I actually did for me and others too"

"This was an extremely useful workshop. Thank you very much! I wish I had known this stuff already as a grad student 10+ years ago. It is now easier to collaborate with co-developers and easier to keep things in order and structured"


CodeRefinery is a project within the Nordic e-Infrastructure Collaboration (NeIC). NeIC is an organisational unit under NordForsk.

GitHub and Twitter


Radovan Bast
High Performance Computing Group
UiT The Arctic University of Norway
+47 776 44117