- CODECHECK does code review at the time of publication. It's relevant for
reproducibility and checking state of a codebase.
- But what if the code is unreadable/unmaintanable? It's too late for
a rewrite.
- There is a need for code review /during research/.
- A different kind of code review: informal, low-stakes and frequent. Something you
would with colleagues once a week.
- Focus on code quality. Does not replace publication-time review -
but is complementary.
- Code review during research has benefits beyond better code quality.
- Learning and knowledge transfer
+ Mentoring and dissemination of experience and good practices.
+ More experienced programmers are exposed to new patterns and
approaches.
+ Good example: group of students at Imperial College London who started doing
code review sessions with Thibault and as a result set up a framework for
handling inputs to their codes
- Collaboration
+ Regular meetings and discussions increases group awareness, trust
and cohesion.
+ Specific technical knowledge is spread. Easier for newcomers,
reduce impact of leavers.
- Code review is common in the software industry and open source
communities, but very rare in research.
- Lack of awareness and guidance on how to do code review in a
research context. Most material out there is targeted at the
software industry and open source projects.
- Establishment of code review culture will probably struggle with
lack of incentives for code quality and lack of confidence.
- Target the first two points for the most immediate impact
- UK/US based group of researchers and RSEs.
- Started as one of the working groups of the Code Review Community.
- There were other groups in the community, e.g. code review at publication, EDI considerations for code review, stakeholders and policy, etc
- Unfortunately, these lost momentum and never produced anything concrete
- In practice, guidelines as website. Living document that is open to
contributions.
- Suited for lone, perhaps isolated, research developpers.
- Short, fixed duration. Can fit into a busy schedule with possibility
of iteration.
- Informal and low stakes.
- Accessible to less experienced programmers (e.g. resaercher how
would not think of themselves as programmers).
- This applies to all stages, but particularly when meeting to discuss the code in person (or leaving an asynchronous comment)