Last week I undertook software Carpentry instructor training. This is something that I have wanted to do for a long time and I was very lucky to be able to do this at Victoria University of Wellington in my home city.
Software Carpentry is a global movement to educate people in techniques that will help them create better software. Link here. There are also library and data Carpentry training workshops which are now collectively known as 'the carpentries', carpentries.org/. A real emphasis is on training irrespective of personal work area though and the idea that librarians, bioinformaticians, social scientists and people just like me can all get this training is really empowering.
Software Carpentry itself is broadly split into three strands; controlling a computer environment using the ‘shell’ (sometimes called the command line or terminal), scientific computer programming with Python or R, and version control.
The training itself was largely pedagogical (that is, learning to pass learning on to others) and this was quite new to me. We covered everything from working memory and cognitive load to live coding practice and how to organise a software carpentry workshop and everything in between.
All of the materials are available on GitHub here carpentries.github.io/instructor-training/.
For me what I found by far the most challenging, was preparing and the presenting a short teaching session which was (shock horror) filmed and then played back to you in small groups. I was amazed at the effectiveness of this approach since it was rapid fire and then repeated so that we could progress in light of what we personally thought of our performance whilst also taking the thoughts of our other group members into account. I chose the shell as my teaching vehicle and it was incredible how quickly I descended into some jargon even though I tried not to! I believe that I improved during the course but I will find out how successful I was when I have to do a live demo of this to other people in the software Carpentry community online as part of my post course assessment. Wish me luck!
As a side note, something that I hadn't used before was etherpad (etherpad.org/). This is a way of collaborating online in real time with others in a group where everyone's input is colour coded, editable and open access. I'd recommend you give it a go. I will certainly be using is again in the future.
An fantastic aspect of the software carpentry movement is the emphasis on the code of conduct., docs.carpentries.org/topic_folders/policies/code-of-conduct.html This ensures protection from discrimination and intimidation, whether conscious or otherwise in the instructor training and also in the courses which I will hopefully contribute to as a qualified instructor in the future. We all have aspects which make us different from the person metaphorically or physically next to us and so the knowledge that students and instructors are free to be themselves in a safe space is of comfort to me and I'm sure to many others also. I recently went to a conference where a similar code of conduct was expected of delegates and personally I found that just knowing that it was there made me feel empowered to be myself which boosted my confidence to be myself and be a better scientist and communicator.
Although I've been using Linux and shell based programming for about 14 years now, I never had any specific training in the style of software carpentry or actually anything remotely resembling it! I can confidently say that I would've programmed more efficiently, not deleted so many things accidentally, and saved myself and my fingernails a huge amount of pain via creating version controlled repositories and by writing better, more collaborative code!
I very much hope to qualify soon to be a fully fledged software Carpentry instructor soon so that I can pass whatever knowledge I have to others in the ever growing community that I'm proud to be a little part of.