Skip to content

Commit 03bb56a

Browse files
authored
Create paper.md - needed for Carpentries Lab and submission to JOSE
1 parent 2433261 commit 03bb56a

1 file changed

Lines changed: 139 additions & 0 deletions

File tree

paper.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
---
2+
title: 'Intermediate Research Software Development Skills (Python)'
3+
tags:
4+
- software design
5+
- software engineering
6+
- research software
7+
- carpentry
8+
- intermediate
9+
- python
10+
authors:
11+
- name: Stephen Crouch
12+
email: s.crouch@software.ac.uk
13+
orcid: 0000-0001-8985-6814
14+
affiliation: 1
15+
- name: Aleksandra Nenadic
16+
email: a.nenadic@software.ac.uk
17+
orcid: 0000-0002-2269-3894
18+
affiliation: 1
19+
- name: James Graham
20+
email: james.a.graham@kcl.ac.uk
21+
orcid: 000-0001-5217-3104
22+
affiliation: 1,2
23+
- name: Martin Robinson
24+
email: martin.robinson@cs.ox.ac.uk
25+
orcid: 0000-0002-1572-6782
26+
affiliation: 3
27+
- name: Sam Mangham
28+
email: S.Mangham@soton.ac.uk
29+
orcid: 0000-0001-7511-5652
30+
affiliation: 1
31+
- name: Jacalyn Laird
32+
email:
33+
orcid: 000-0002-9048-9393
34+
affiliation: 1,4
35+
- name: Thomas Kiley
36+
email:
37+
orcid:
38+
affiliation:
39+
- name: Matthew Bluteau
40+
email: matthew.bluteau@ukaea.uk
41+
orcid: 0000-0001-9498-8475
42+
affiliation: 5
43+
- name: Sven van der Burg
44+
email: s.vanderburg@esciencecenter.nl
45+
orcid: 0000-0003-1250-6968
46+
affiliation: 6
47+
- name: Giulia Crocioni
48+
email:
49+
orcid: 0000-0002-0823-0121
50+
affiliation: 6
51+
affiliations:
52+
- name: Software Sustainability Institute
53+
index: 1
54+
- name: King's College London
55+
index: 2
56+
- name: University of Oxford
57+
index: 3
58+
- name: SAC Consulting
59+
index: 4
60+
- name: UK Atomic Energy Authority
61+
index: 5
62+
- name: Netherlands eScience Center
63+
index: 6
64+
date: 2024-05-28
65+
bibliography: paper.bib
66+
67+
68+
---
69+
70+
# Summary
71+
72+
This course aims to teach a core set of established, intermediate-level software development skills and best practices for working as part of a team in a
73+
research environment using Python as an example programming language.
74+
The core set of skills we teach is not a comprehensive set of all-encompassing skills, but a selective set of tried-and-tested collaborative development
75+
skills that forms a firm foundation for continuing on your learning journey.
76+
The course teaches these skills in a way that mimics a typical software development process working as a part of a team, starting from an existing piece of software.
77+
78+
# Statement of need
79+
80+
<!-- explain how the submitted artifacts contribute to computationally enabled teaching and learning, and describing how they might be adopted by others. -->
81+
82+
A typical learner for this course may be someone who is working in a research environment, needing to write some code, has gained basic software development skills
83+
either by self-learning or attending, e.g., a novice Software Carpentry Python course.
84+
They have been applying those skills in their domain of work by writing code for some time, e.g. half a year or more.
85+
However, their software development-related projects are now becoming larger and are involving more researchers and other stakeholders (e.g. users), for example:
86+
87+
* Software is becoming more complex and more collaborative development effort is needed to keep the software running
88+
* Software is going further than just the small group developing and/or using the code - there are more users and an increasing need to add new features
89+
* ‘Technical debt’ is increasing with demands to add new functionality while ensuring previous development efforts remain functional and maintainable
90+
91+
They now need intermediate software engineering skills to help them design more robust software code that goes beyond a few thrown-together proof-of-concept scripts,
92+
taking into consideration the lifecycle of software, writing software for stakeholders, team ethic and applying a process to understanding,
93+
designing, building, releasing, and maintaining software.
94+
95+
# Learning objectives, design, and experience
96+
97+
<!-- describe the learning objectives, content, instructional design, and experience of use in teaching and learning situations. -->
98+
99+
After going through this course, participants will be able to:
100+
101+
* Set up and use a suitable development environment together with popular source code management infrastructure to develop software collaboratively
102+
* Use a test framework to automate the verification of correct behaviour of code, and employ parameterisation and continuous integration to scale and further automate code testing
103+
* Design robust, extensible software through the application of suitable programming paradigms and design techniques
104+
* Understand the code review process and employ it to improve the quality of code
105+
* Prepare and release software for reuse by others
106+
* Manage software improvement from feedback through agile techniques
107+
108+
The course follows a narrative around a software development team working on an existing software project that is analysing patients’ inflammation data
109+
(from the novice Software Carpentry's "Programming in Python" course).
110+
The course is split into 5 sections, each of which can be delivered in approximately half to a full day, in either guided self-learning mode (where helpers provide help
111+
and answer questions - synchronously or asynchrounously) or in a standard instructor-led mode.
112+
Learners are typically organised in small groups from the outset and initially work individually through the material on their own with the aid of helpers (or follow an instructor).
113+
In later sections, exercises involve more group work and learners from the same group form a development team and collaborate on a mini software project.
114+
115+
# How the lesson came to be
116+
117+
The Software Sustainability Institute conducted an international RSE survey in 2018 as well as a series of internal interviews with the key RSE group leaders and
118+
[Open Call reseach software projects](https://www.software.ac.uk/news/need-free-help-your-research-software-try-institutes-open-call-1) we supported with free
119+
software development expertise and consultancy.
120+
In terms of training, they all came back to us with a single feedback - what software engineering skills to learn next
121+
after gaining foudnational computational skills via Software, Data or Library Carpentry and where to find such training resources.
122+
There was also a shift from working on research software development projects in isolation and solo towards working in teams and collaboratively,
123+
as software is developed in industry, and how to learn those skills.
124+
125+
Original lesson authors Aleksandra Nenadic, James Graham, and Steve Crouch from the Software Sustainability Institute joined up to create this
126+
course to fill on those gaps and started working on this course in late 2019.
127+
128+
# Acknowledgements
129+
130+
Original lesson authors Aleksandra Nenadic, James Graham, and Steve Crouch were supported by the UK's Software Sustainability Institute
131+
via the EPSRC, BBSRC, ESRC, NERC, AHRC, STFC and MRC grant EP/S021779/1.
132+
133+
Since then, many people have contributed to the course material - see [AUTHORS](https://github.com/carpentries-incubator/python-intermediate-development/blob/gh-pages/AUTHORS).
134+
135+
136+
# References
137+
138+
See [paper.bib](https://github.com/carpentries-incubator/python-intermediate-development/blob/gh-pages/paper.bib) file.
139+

0 commit comments

Comments
 (0)