owned this note
owned this note
Published
Linked with GitHub
# SSI CW23 Hack Day: Forge RSE Skill Development Pathways
Original (redundant) document:
https://docs.google.com/document/d/1PCouAk-8E9po3rksSodseHL1zVJca4gkrT1-l8Py6zc/edit
Miro board:
https://miro.com/app/board/uXjVMMH7cS4=/ (deprecated in favour of https://docs.google.com/spreadsheets/d/1jSBZJfDMNln9k3NY5-WJQoj3KSnFnUV_3qTOXjNhhgo/edit#gid=0)
Main Zoom:
https://zoom.us/j/94468614944?pwd=YkdkY05NTHFFbWdFRkVoclRyMzBSZz09
Slides:
https://docs.google.com/presentation/d/15RBtaJ4W5bUWV7aHrwV0wX7op7hewl3B-w7vj6wieHg/edit?usp=sharing
Project write up:
https://docs.google.com/document/d/1ApTf8RcB86-RXrCJfCUMWDt6kRWSM0wVzBsPMCyhC8g/edit
Github:
https://github.com/RSEToolkit/training
## Timeline
| Time | Action |
| --- | --- |
| 12:45 -- 13:10 | Group resync |
| 13:10 | Group work |
| 15:00 | Stop work and move to presentation |
| 15:30 | Presentation |
## GitHub Usernames
Dave Horsfall - @davehorsfall
Paul K. Korir - https://github.com/paulkorir/
Hannah Williams - @HWilliams-PHE
Diego Alonso Álvarez - [@dalonsoa](https://github.com/dalonsoa)
Sean Marshallsay - [Sean1708](https://github.com/Sean1708/)
Aleksandra Nenadic - [@anenadic](https://github.com/anenadic)
Eli Chadwick - [@elichad](https://github.com/elichad)
Nadine Spychala - [@nadinespy](https://github.com/nadinespy)
Iain Barrass - [@iainbarrass](https://github.com/iainbarrass)
Aman Goel - [@amangoel185](https://github.com/amangoel185)
Lieke de Boer [@liekelotte](https://github.com/liekelotte)
## High level strands
- Identifying RSE skills + grouping RSE skills into clusters (like CSCCE wheel)
- Gathering resources that helps RSEs improve skills + defining what a valuable resource is + defining the useful metadata for a resource
- Mapping resources to the skills / clusters (thinking about a method of doing this)
- Designing the wheel
- Technical implementation of the wheel
## Resources
### Identifying RSE skills and core competencies
- Something more generic for software developers: [Developer Skill Matrix](https://github.com/Semalab/developer-skills-matrix) and [explanation](https://stackoverflow.blog/2022/07/28/measurable-and-meaningful-skill-levels-for-developers/)
- What we might want to model off of: [CSCCE Skills Wheel](https://zenodo.org/record/4437294#.YD0H5OhKiUk)
- This seems to address the thing we were struggling to express which is the relationship between role progression and skill development: https://progression.fyi/ and https://progression.co/ (although they are paid products...)
- Aleks Nenadic and Steve Crouch's ponderings - [Motivating question: in what order should people learn technical skills at each level of competency?](https://carpentries-incubator.github.io/python-intermediate-development/fig/wrapup-concept-map-difficulty-level.png)
- [BCS SFIAplus](https://sfia-online.org/en/sfia-8) framework and its [levels](https://sfiaplus.bcs.org/Levels)
- [Bioinformatics Mastery Rubric](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0225256)
- [UoM RSE Skills Graph](https://github.com/UoMResearchIT/RSESkillsGraph). Might serve as inspiration for different skills (`curl https://raw.githubusercontent.com/UoMResearchIT/RSESkillsGraph/master/people.json | jq '.[].interests[]' | sort -u`).
- [King's Digital Lab research software learnings.](https://zenodo.org/record/2559235)
- Civil service competency framework - https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/436073/cscf_fulla4potrait_2013-2017_v2d.pdf (maybe more helpful for the non-technical skills section)
Vis a vis the UoM Docker container, you'll need to apply this patch to get it to build and run if you want to:
```diff
git diff
diff --git a/Dockerfile b/Dockerfile
index bf69e9a..2fe81dd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,7 +4,7 @@ FROM ubuntu:18.04
MAINTAINER "Ian Hinder <ian.hinder@manchester.ac.uk>"
RUN apt-get update -y && \
- apt-get install -y python3 python3-pip python3-requests graphviz libgraphviz-dev && \
+ apt-get install -y python3 python3-pip python3-requests graphviz libgraphviz-dev libxml2-dev libxslt-dev && \
rm -rf /var/lib/apt/lists/*
COPY ./requirements.txt /app/requirements.txt
diff --git a/application.py b/application.py
index 19d9a76..327ae2f 100644
--- a/application.py
+++ b/application.py
@@ -276,4 +276,4 @@ def topic_search():
if __name__ == "__main__":
- app.run(debug = True, host='0.0.0.0')
+ app.run(debug = True, host='0.0.0.0', port=8000)
diff --git a/bin/deploy b/bin/deploy
index fd77608..9509745 100755
--- a/bin/deploy
+++ b/bin/deploy
@@ -50,7 +50,7 @@ LOCATION=westeurope
IMAGE=${PROJECT}:$(date +%Y%m%dT%H%M%S)
CONTAINER_NAME=${PROJECT}
DNS_LABEL=${PROJECT}
-PORT=5000
+PORT=8000
case $command in
```
### Learning Resources
### Wheel technical implementation
Wheel aka Radar Plot, Circle graph, Spider plot
- This is an interactive tool that looks pretty close to what we want: https://rseng.github.io/rse-phenotype/
- https://github.com/research-software-reactor/rse-skills-graph
- had trouble getting this running, and it seems
- https://flourish.studio/blog/create-online-radar-spider-charts/
- https://towardsdatascience.com/creating-interactive-radar-charts-with-python-2856d06535f6
Example user profile data:
```json
{
"Technical skills (general)": {
"Collaborative software development": 3,
"Version control": 3,
"Continuous integration / continuous delivery": 2,
"Systems design, architecture & development": 4,
"Software documentation": 5,
"Testing": 1,
"Coding conventions": 2,
"Software licensing": 1,
"Software packaging & release": 3,
"Programming paradigms": 1,
"Programming": 4,
"Environmental impact awareness": 3
},
"Technical (specific)": {
"Visualization": 2,
"High performance computing": 4,
"Programming languages": 1,
"Parallelization": 4,
"Web development": 7,
"Systems administration": 1,
"Data analysis": 1,
"AI/ML": 7,
"User Experience": 3,
"Technical translation between researchers and RSEs": 1,
"Virtualization & Cloud computing": 4,
"Code optimization": 2
},
"Interpersonal": {
"Understanding of mental health, stress and burnout": 6,
"Building of community of practice": 3,
"Collaboration & building connections": 4,
"People management": 4,
"Leadership & communication skills": 1,
"Mentorship skills": 4,
"Stakeholder management": 4,
"Diversity, Equity and Inclusion": 4
},
"Leadership & management": {
"Project management": 7,
"Planning and organising events (workshops, meetups, conferences etc)": 1,
"Grant/proposal writing": 4,
"Evaluation and assessment": 1,
"Agile project management methodologies": 5,
"Recruitment": 4,
"Resource management (time, budget)": 7,
"Strategy": 4,
"Change management": 3,
"Domain expertise": 3,
"Research methodologies": 1,
"Ethics": 5,
"Domain-specific technical skills (AI/ML, reseach data and analytics, visualisation, computational science)": 2,
"Legal and regulatory": 7,
"Developing domain-specific training": 2
},
"Communication & dissemination": {
"Delivering training": 1,
"Writing and publication": 4,
"Public science communication": 5,
"Peer science communication": 1,
"Content and knowledge management": 4
}
}
```
# Hack day tasks
## Learning resources
* Generate list of training and learning resources
* Define a data schema (spreadsheet) and populate using the list of learning resources
* Start thinking about pathways for developing a particular skill?
## Competancy framework and skills
* Define a grid of skills within the RSE community
* Map above list of resources into grid
* Define pathways from beginner through to expert
## Website and wheel visualisation
* Build Jekyll website in RSEtoolkit org
* Setup Github actions for Jekyll
* Dynamically insert
## Competancy framework and skills
- Technical skills (general)
These are skills that are considered to be essential for research software engineers. Without these skills,
- Technical skills (specific)
- Interpersonal skills
- Leadership & Project Management
- Communication
## Personas
### Profile 1: Lily, Novice RSE in Astrophysics
https://gist.githubusercontent.com/paulkorir/5214b3b9fa0cece5396c7909d97fb0b2/raw/537adc73dce40cc7350355c2affc60103adf62b3/lily-novice.json
Lily is a student in her second year of an astrophysics PhD. She works with her supervisor on software that contains a well-optimised machine learning model to classify stars. Their code is on GitHub, but they don't do any code review or testing. There is some very minimal documentation and her supervisor makes occasional versioned releases. She has just submitted her first talk abstract to an astrophysics conference. She attends a regular 'code club' with other PhD students in her department, and invites new students to join.
### Profile 2: Paulie, Senior RSE in a NeuroScience Department
https://gist.githubusercontent.com/paulkorir/b292a4a79da74a4dfee28206ec430e08/raw/a1852ec80a3212b1da68d7ab288f2e5f96da9ad5/paulie-senior.json
Paulie has been a research software engineer for six years in a group of ten RSEs. The group supports all researchers at a large neuroscience department at a university. Paulie is passionate about sharing best research software practices to researchers, as well as to his colleagues. They write tutorials for how to handle neuroscience data and use the supercomputer to perform analyses. They have expertise in handling large volumes of data, and parallalizing analyses. Paulie leads projects where they collaboratively work on projects with colleagues, using GitHub. All software outputs are licensed, well-documented, and use CI/CD.
## Resource Collection and Curation
- can you see this: https://github.com/orgs/RSEToolkit/projects/3
- spreadsheet for collection: https://docs.google.com/spreadsheets/d/1syBmBxsaDfgwaWZD1VYYexTzgja87RVQrHtJhOFFoLs/edit?usp=sharing
- competency framework: https://docs.google.com/spreadsheets/d/1jSBZJfDMNln9k3NY5-WJQoj3KSnFnUV_3qTOXjNhhgo/edit?usp=sharing
Feedback on slides:
CSCCE (center for scientific collaboration and community engagement)