About the CodeRefinery project

CodeRefinery is a Nordic e-Infrastructure Collaboration (NeIC) project that has started in October 2016 and is funded until October 2021.

We hope to keep this project active beyond 2021 by forming a support network and building a community of instructors and contributors.


History

The CodeRefinery project idea grew out of two SeSE courses given at KTH Stockholm in 2014 and 2016:

The project proposal was submitted to NeIC in 2015, accepted in 2015, and started in 2016.

We have started by porting own lessons to the Carpentries teaching style and format, and collaboratively and iteratively grew and improved the material to its present form.


Main goals

  • Develop and maintain training material on software best practices for researchers that already write code. Our material addresses all academic disciplines and tries to be as programming language-independent as possible.

  • Provide a code repository hosting service that is open and free for all researchers based in universities and research institutes from Nordic countries.

  • Provide training opportunities in the Nordics using Carpentries and CodeRefinery training materials.

  • Articulate and implement the CodeRefinery sustainability plan.


Impact

We collect feedback and survey results to measure our impact.

3-6 months after attending a workshop, past participants are asked to complete a short post-workshop survey. The survey questions aim to establish what impact CodeRefinery workshops have on how past participants develop research software.

https://coderefinery.org/assets/img/heatmap_yesno.png
  • Overall quality of research software has improved: more reusable, modular, reproducible and documented.

  • Collaboration on research software development has become easier

  • Past participants share their new knowledge with colleagues

  • Usage of several tools is improved, and new tools are adopted

Free-form answers also suggest that workshops are having the intended effects on how people develop code. A common theme is:

I wish I had known this stuff already as a grad student 10+ years ago…

We would love to get suggestions on how we can better quantify our impact. This would make it easier for us to convince institutions to partner with us and also open up funding opportunities.


Carpentries membership

Since November 2018, NeIC is a Platinum Partner to The Carpentries.

The Carpentries is an international project that comprises Software Carpentry and Data Carpentry, communities of instructors, trainers, maintainers, helpers, and supporters who share a mission to teach foundational computational and data science skills to researchers. The Carpentries teach foundational coding and data science skills to researchers worldwide and as such are complementary to CodeRefinery.

Within the membership the Nordic research community has access to:

  • 6 Carpentries workshops in the Nordics each year. The workshop fee is covered by the membership, only the instructor travel is on the host institution.

  • 15 seats in the Carpentries instructor training each year. Carpentries train the trainer program aims at building partnerships with Research Software Engineers and researchers who are willing to lead skill transfer within their local communities in the Nordics.


Target audience

Carpentries audience

The Carpentries aims to teach computational competence to learners through an applied approach, avoiding the theoretical and general in favor of the practical and specific.

Learners do not need to have any prior experience in programming. One major goal of a Carpentry workshop is to raise awareness on the tools researchers can learn/use to speed up their research.

By showing learners how to solve specific problems with specific tools and providing hands-on practice, learners develops confidence for future learning.

Novices

We often qualify Carpentry learners as novices: they do not know what they need to learn yet. A typical example is the usage of version control: the Carpentry git lesson aims to give a very high level conceptual overview of Git but it does not explain how it can be used in research projects.

CodeRefinery audience

In that sense, CodeRefinery workshops differ from Carpentry workshops as we assume our audience already writes code and scripts and we aim at teaching them best software practices.

Our learners usually do not have a good overview of best software practices but are aware of the need to learn them. Very often, they know the tools (Git, Jupyter, etc.) we are teaching but have difficulties to make the best use of them in their software development workflow.

Whenever we can, we should direct learners that do not have sufficient coding experience to Carpentries workshops.

Competent practitioners

We often qualify CodeRefinery learners as competent practitioners because they already have an understanding of their needs. Novices and competent practitioners will be more clearly defined in the next section.

Best software practices for whom?

It can be useful to ask the question: best software practices for whom? CodeRefinery teaches best software practices derived from producing and shipping software. These practices are also very good for sharing software, though our audience will probably not need to embrace all aspects of software engineering.