Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pre-requisites for instructor training #445

Closed
gvwilson opened this issue Apr 1, 2015 · 72 comments
Closed

Pre-requisites for instructor training #445

gvwilson opened this issue Apr 1, 2015 · 72 comments
Labels

Comments

@gvwilson
Copy link
Contributor

gvwilson commented Apr 1, 2015

What should people be required to know before starting instructor training? How will we ensure that they know it? How will we avoid discouraging people from taking part by putting a prerequisite list in place?

@wking
Copy link

wking commented Apr 1, 2015

This spun off of a thread on mentoring@ 1. I'll link in some
previous discussion to avoid rehashing it here.

On Wed, Apr 01, 2015 at 02:35:30PM -0700, Greg Wilson wrote:

What should people be required to know before starting instructor
training?

Previous positions:

  • Exactly what we teach in our novice lessons 2.
  • Roughly what we teach in our novice lessons 3.
  • Nothing about Git [4](with pushback from me [5]), but otherwise unclear.
  • Nothing 6.

How will we ensure that they know it?

  • Have them attend a novice workshop 2.
  • Have them self-assess 3.
  • Have them complete a pre-workshop activity 7.

How will we avoid discouraging people from taking part by putting a
prerequisite list in place?

  • Sensitive phrasing 8.
  • Double-header workshop/instructor-training sessions [9,10].
  • A help@ list that we point prospective trainees to for pre-training
    brush-ups and mid-training assistance [11,12,13,14].

@bkatiemills
Copy link

What should people be required to know before starting instructor training?

Casual familiarity (not expert knowledge) of one unit of SWC material of their choice - whichever one they think they'd most like to teach at their first workshop.

How will we ensure that they know it?

Tell them that all their exercises in Instructor Training will be based off of (loose) knowledge of the unit.

How will we avoid discouraging people from taking part by putting a prerequisite list in place?

Keep them action-based prereqs ('read a unit before the class starts') instead of knowledge-based prereqs ('master a unit before the class starts').

This seemed to work well in Melbourne for a live Instructor Training; the only other hard skills people need are some git and markdown, which we / other learners can support each other with in a live session, and a help@ list and hangout-style Q&A can resolve in online sessions.

@wking
Copy link

wking commented Apr 1, 2015

On Wed, Apr 01, 2015 at 02:58:34PM -0700, Bill Mills wrote:

… the only other hard skills people need are some git and markdown,
which we / other learners can support each other with in a live
session, and a help@ list and hangout-style Q&A can resolve in
online sessions.

I'll elaborate on my earlier pushback 1, and say that the shell +
Git is a full day of novice SWC material. I'm not sure how much
brainpower folks will have left over to absorb instructor-specific
content if they're trying to learn those on the side during a training
session. I think Markdown is a small enough lift that we can wedge
that in as an explicit topic (we don't cover it in our novice
workshops anyway), but I'd encourage potential instructors to attend a
novice workshop, or help@, or … to at least wrap their heads around
basic Git before showing up at a training session.

@bkatiemills
Copy link

@wking I agree that tacking the whole git session onto instructor training is totally impossible - but it's not necessary, either. In Melbourne, the only use of git was to satisfy the 'make a contribution' req for getting an instructor badge, and many people did this via the web interface with no git and no shell. Like markdown, this is simple enough to wedge in and help people out with, either live or on the forthcoming help@.

Git is a huge hurdle for learners; setting that up as the price of admission for instructor training will hose participation. Better to use Instructor Training as the thin end of the wedge to help git newcomers get their feet wet just a bit, and learn more at their own speed.

@weaverbel
Copy link

What should people be required to know before starting instructor training?

I didn't really know much of anything before I started instructor training so my learning curve has been vertical! However, it did inspire me to tackle things I've been meaning to learn -- Python and the Unix shell, for example. And I think I am still very much in the beginner mindset which may help me as an instructor, as I won't make assumptions about what people might know.

However, I was really motivated to take this training on, and that has helped me keep at it.

Therefore it would probably be good if people already had some familiarity with using the command line and had experience of some kind of programming, so they don't get too discouraged.

How will we ensure that they know it?

A quiz would be my suggestion, though quizzes can be gamed.

How will we avoid discouraging people from taking part by putting a prerequisite list in place?

Make the prerequisites desirable, not mandatory. Explain that people without the knowledge will probably find it harder -- as I did -- but that the payoff is worth it.

@wking
Copy link

wking commented Apr 1, 2015

On Wed, Apr 01, 2015 at 03:15:23PM -0700, Bill Mills wrote:

@wking I agree that tacking the whole git session onto instructor
training is totally impossible - but it's not necessary, either. In
Melbourne, the only use of git was to satisfy the 'make a
contribution' req for getting an instructor badge, and many people
did this via the web interface with no git and no shell. Like
markdown, this is simple enough to wedge in and help people out
with, either live or on the forthcoming help@.

Hmm. If that's all you need to get through instructor training (and
it looks like the web UI is also sufficient for setting up a workshop
page 1), then I'm fine trying to include GitHub's web interface in
instructor training (and not as a prereq). I'd teach it explicitly
though, and I'd caution against having Git novices attempt a
local-repository approach on their own (which was one of the issues
bothering our original poster 2).

Git is a huge hurdle for learners…

Novice Git is a six-hour hurdle for everyone coming into our novice
workshops.

… setting that up as the price of admission for instructor training
will hose participation.

Even if we provide many avenues to satisfy the prerequisite ahead of
time? If folks aren't willing to put in an extra few hours of tutored
study to figure out one tool, I'm concerned about their willingness to
prepare for their own teaching.

Better to use Instructor Training as the thin end of the wedge to
help git newcomers get their feet wet just a bit, and learn more at
their own speed.

I'm ok dropping the Git prerequisite if we have a short session on
using GitHub's web interface as part of the instructor training. But
if you've never seen the Git data model before, I expect a quick run
through the “edit this file” button is setting folks up for trouble
down the road. And if we can get useful Git skills into a quick
session, why aren't we using that in our novice lessons?

@wking
Copy link

wking commented Apr 1, 2015

On Wed, Apr 01, 2015 at 03:19:52PM -0700, Belinda Weaver wrote:

Make the prerequisites desirable, not mandatory. Explain that people
without the knowledge will probably find it harder -- as I did --
but that the payoff is worth it.

And I am completely on board with this.

@bkatiemills
Copy link

I'm ok dropping the Git prerequisite if we have a short session on using GitHub's web interface as part of the instructor training.

There is definitely room for this, let's do it.

And if we can get useful Git skills into a quick session, why aren't we using that in our novice lessons?

It's coming :) A number of us in Vancouver have been interested in doing 'fork and merge for novices', and some of the other instructors have had a lot of success there; it starts with simple in-browser contributions. PR inbound :)

Make the prerequisites desirable, not mandatory.

This still falls into the imposter phenomenon trap (Carol, my blog, para. 6.) - we must avoid creating the expectation that people should already know this stuff, especially when they really don't need to - 'nice to haves' very quickly morph into 'I'm not good enoughs' in the minds of many.

@wking
Copy link

wking commented Apr 1, 2015

On Wed, Apr 01, 2015 at 03:40:27PM -0700, Bill Mills wrote:

I'm ok dropping the Git prerequisite if we have a short session on
using GitHub's web interface as part of the instructor training.

There is definitely room for this, let's do it.

Ok. So assuming our mini-consensus here flies with everyone else ;),
I think the plan is:

  • Add a help@ list that we point prospective trainees to for
    pre-training brush-ups and mid-training assistance.
  • Ask the trainees read over at least one of the novice lessons before
    showing up.
  • Add explicit sections on the GitHub web UI and Markdown to the
    instructor training material (swcarpentry/instructor-training?
    swcarpentry/training-course? I don't understand how these two
    repositories fit together).

I think that's a solid step forward.

I'm still concerned about implicit prerequisites buried in there, and
would be curious to figure out what they are. Can you succeed at
instructor training if you've never opened a browser before (although
this is hard to imagine ;)? If you grab a non-technical,
non-scientist off the street and put them into the session, will they
thrive? Is the only requirement a working knowledge of English (to read the central notes)? The
session's language? But we can work out those sorts of details later
on.

I'm also not sure what instructors who are intimidated by our novice
shell and Git lessons are hoping to teach ;). I'd expect the existing
lessons would be fairly approachable by someone who was fluent in the
Python or SQL lessons. But if we have the capacity, I'm fine putting
folks through the “how to teach” instructor training before they
master the “what to teach” novice lessons. If we start hitting
instructor training bottlenecks, I think funneling folks through the
novice lessons first would help folks figure out whether or not they
were really interested in teaching this material before we invest
instructor-training time.

@bkatiemills
Copy link

training-course is the blog / website for the online version, while instructor-training is the actual lessons for instructor training, and more closely reflects the live course (and I get the two confused every single time).

I'm still concerned about implicit prerequisites buried in there, and would be curious to figure out what they are.

To answer this I'd examine what distinguishes someone who would be able to pick through a SWC lesson on their own - since that's one way to get ready to teach a new unit. Some sort of maddeningly vague technical affinity? I think a FORTRAN wizard would probably be able to pick up SWC to a teachable level really quick - but again, if you start saying things like 'must have some experience coding in any capacity', some people will assume the one hour webinar they watched makes them a master, while others figure they only got a masters in computational physics - and the gender split on who makes which of those decisions is not good.

I'm also not sure what instructors who are intimidated by our novice shell and Git lessons are hoping to teach ;).

R or Python. Or, more generally, it's really Git that a lot of people bounce off of; plenty of new instructors would hit the shell out of the park, but have never used Git before. Ultimately, I'm happy if a new instructor is prepared to teach one and only one unit at their first workshop (that was how it was for me, though my one unit was, perversely, Git :)

Anyway - cool, what @wking synthesized in those three bullets looks really good to me, enthusiastic +1 here. But also, @weaverbel hit on something important, and that was the impact of motivation on instructor trainees. We preach it super hard WRT to SWC students, but it matters just as much for our instructors. Making sure we protect and encourage that motivation is definitely something to keep in mind, and all this talk about prereqs folds into that.

@wking
Copy link

wking commented Apr 2, 2015

On Wed, Apr 01, 2015 at 05:13:32PM -0700, Bill Mills wrote:

training-course is the blog / website for the online version,
while instructor-training is the actual lessons for instructor
training, and more closely reflects the live course (and I get the
two confused every single time).

Thanks for clearing me up. I've updated the repository descriptions
in GitHub to match this (“Blog/website for the instructor training
course” and “Software Carpentry instructor training course material”),
which will hopefully decrease confusion going forward.

… what @wking synthesized in those three bullets looks really good
to me, enthusiastic +1 here.

I've posted back to the original thread asking for folks to
confirm/amend the proposal before we move forward to implementing it
1.

But also, @weaverbel hit on something important, and that was the
impact of motivation on instructor trainees. We preach it super
hard
WRT to SWC students, but it matters just as much for our
instructors. Making sure we protect and encourage that motivation
is definitely something to keep in mind, and all this talk about
prereqs folds into that.

Makes sense to me. I'd expect this should be a note in
instructors.md, but it looks like we've lost that locally
(carpentries/instructor-training#9). Once we resolve that issue, we
can add a note to this effect there.

@vsudilov
Copy link
Contributor

vsudilov commented Apr 2, 2015

This is a question I've been struggling with since joining the teaching12 training course. I expected a much higher level of prior knowledge, and that expectation has been the cause of some frustration for me. FWIW, my frustration was echoed by another professional software developer independently of my experience. In principle, I think @wking expressed my thoughts well with:

I'm also not sure what instructors who are intimidated by our novice shell and Git lessons are hoping to teach

I took a minute to review the mission statement at http://software-carpentry.org/scf/index.html. I took away two key goals from that document:

  • Growth of the organization
  • Increase productivity of the average researcher

If I keep those goals -- with which I agree -- in mind, then I can see how that attitude isn't necessary. Nevertheless, I think making the prerequisites for instructors concrete -- even if they are much lower than I what my initial assessment was -- would help to prevent that attitude from cropping up in the first place. My idea of concrete pre-reqs would be something like:

  • can write a hello world program in python, R, or bash.
  • can clone a self-owned git repo from github, add a new file, commit, and push
  • can make the following directory structure using the console: ~/foo/bar/baz

tl;dr: +1 for "concrete" instead of "desirable" prerequisites.

@wking
Copy link

wking commented Apr 2, 2015

On Thu, Apr 02, 2015 at 07:41:55AM -0700, Vladimir Sudilovsky wrote:

This is a question I've been struggling with since joining the
teaching12 training course. I expected a much higher level of prior
knowledge, and that expectation has been the cause of some
frustration for me…

Thanks for sharing this :). Can you give more specifics on what you
found frustrating? Did you feel underprepared? Overprepared? With
which skills? If you felt overprepared, why was that frustrating?

My idea of concrete pre-reqs would be something like:

  • can write a hello world program in python, R, or bash.
  • can clone a self-owned git repo from github, add a new file, commit, and push
  • can make the following directory structure using the console: ~/foo/bar/baz

According to @BillMills, you don't need to use the shell or
command-line Git to get through the instructor training 1. Does
that match your experience? If so, why suggest these prerequisites?
If not, where were those skills needed (so Bill has something concrete
to push back on)?

@vsudilov
Copy link
Contributor

vsudilov commented Apr 2, 2015

Apologies for being unclear. I do software development for a living, and I didn't expect other instructors to have little to no experience on some topics. Having a concrete list of prerequisites would have helped me better estimate the technical skill level of instructors and gauge my expectations accordingly.

If I came in seeing "be able to write hello world", I would have had much different expectation than "be able to write and test a module that reads, analyses, and plots data from a file on disk". I came in with the latter expectation.

FWIW, I agree with you that relying only on the github gui to do git is a setup for failure.

@bkatiemills
Copy link

@vsudilov thanks for your comments! Thing is, there are heaps of people who would do an amazing job of teaching R, Python, or shell, who don't use git. We don't require our instructors to be able to teach the whole workshop solo.

Also, we commonly run into people who would be an amazing instructor and know more than enough about several of the topics, but grossly underestimate themselves; if we start setting technical prereqs, they will opt out not for lack of skill, but lack of confidence - and that would have cost us some of our best instructors.

@wking
Copy link

wking commented Apr 2, 2015

On Thu, Apr 02, 2015 at 09:34:41AM -0700, Vladimir Sudilovsky wrote:

I do software development for a living, and I didn't expect other
instructors to have little to no experience on some topics.

I'm still having trouble figuring out why a fellow trainee's relative
inexperience in a particular lesson topic would make instructor
training frustrating. It seems fairly orthogonal. The material
covered in instructor training seems like it's mostly about the act of
teaching, and less about the material that will be taught.

FWIW, I agree with you that relying only on the github gui to do git
is a setup for failure.

This is maybe too strong ;). My current opinion here is that it's ok
to use the GitHub web interface if it's a lot easier to teach and is
sufficiently powerful to accomplish the task at hand (and it sounds
like it is 1). There's just not as much room for growth down that
path. I'd strongly recommend folks use command-line Git for version
control, since that avoids getting stuck when you need something
that's only exposed via the command-line UI. I see a fair number of
Git goofs that I think could have been avoided if folks had a better
grasp of Git's data model, so I think folks who actually use Git would
be well served by putting in a few hours to understand its data model.
But if you're only using Git to create new workshop repositories, you
can just follow the directions 2 and you'll be fine. And if folks
feel more comfortable learning that after the instructor training
class, that's ok with me 3. And if they decide that they'll put off
learning command-line Git until they get stuck with something GitHub's
web UI can't handle (which may be never), that's fine with me too.
That doesn't mean I'd hire someone that couldn't use Git from the
command line, but I'd certainly be happy to have them come teach R at
a workshop I was leading (where I'd put in a few good words for
command-line Git and offer to help get them started in that direction
;).

@hgibling
Copy link
Contributor

hgibling commented Apr 2, 2015

You don’t need to be an expert programmer to take part: in fact, we prefer instructors who are only two steps ahead of their learners and can still remember what it’s like to find programming difficult and confusing.

This quote from the training-course blog is what pushed me to sign up for training, as it explained why my only 1.5 years of using R might actually be beneficial. I assumed it to mean that as long as you have a SWC workshop-level (or higher) understanding of at least one of the topics taught (be it git, shell, python, R, mercurial, MATLAB, or SQL), you're a good candidate for becoming an instructor. The workshop I attended had three instructors, each teaching one topic (and one teaching two), so I don't see a problem when someone isn't as strong with all topics, as long as they are willing to learn those other topics to take notes/help students with red stickies up. If someone isn't familiar with any of these topics, I think it might be wise to suggest they attend a SWC workshop first (though this may be difficult depending on where they are located, and could hinder expanding SWC to regions where there are currently no instructors).

I think being a SWC workshop alumnus is one kind of prerequisite that could be used (but obviously not the only one that should be used). Out of curiosity, have the numbers been crunched to determine what percentage of current instructors are workshop alumni?

@weaverbel
Copy link

I am with Heather on this - having attended a workshop as a participant would be a good prerequisite, even if you couldn't make it a mandatory one. I am going to attend our bootcamp in Brisbane in July as a participant as I hope to learn by observation what works and what doesn't - and hopefully that will make me a better instructor. I might even teach a bit of it too to put my instructor training into practice before jumping in and teaching a lot more at a later bootcamp.

I honestly think the most important attributes for Software Carpentry instructors are

(a) a strong desire/motivation to help researchers pick up important skills
(b) the ability to see the problems learners have from the learners' own perspectives.

Having technical skills and knowledge is obviously important -- or the material could not be taught -- but loads of the demotivation stories people have posted show that teachers with technical knowledge alone (and not the two attributes above) performed really poorly as teachers -- they lacked empathy, and they had little enthusiasm for the actual job of teaching. The result is they drove people away, destroyed confidence, and so on.

So maybe a prerequisite would be that people answer honestly why they want to do instructor training. If the answer shows it's mostly about the benefit to them, and not to others, then maybe they would not make the best instructor material?

@mtb-za
Copy link
Contributor

mtb-za commented Apr 3, 2015

My take on this, having read most of the above quickly and not having followed any of the links. I am also looking more at the git/github issues than things in general, but am still thinking about those.

The confusion around git/github seems to be linked into the fact that at least some familiarity is required to complete the tasks we have. When Greg asks us "write a blog post about x", that requires a certain level of ability using the tools that the blog uses. Since the blog uses jekyll, and is hosted on github, (some) skill with git has become a hard pre-requisite.

The remaining skills are based on things that are not being directly tested in the instructor course. No one is checking if I can write any python/R/MATLAB or whatever else gets added. I could be doing this course only vaguely knowing what a loop is.

What I would suggest is that (some of) the outgoing class do a couple of sessions about the basic workflow required for actually posting to the blog with the new intake.

What needs to happen to post to the blog.

I am going to be fairly detailed about this, just to check if I am missing anything as well.

First-time setup:

  1. Fork the main repo
  2. Clone to a local machine
  3. Write a post (with an explanation of the YAML frontmatter)
  4. Add the file
    • to a new branch?
  5. Commit the file (with a reasonable commit message would be nice)
  6. Push to the forked version
  7. Create a pull request

We need to get the upstream changes

This means we need at least one remote, so:

  1. Set up an upstream repo (the original)
  2. Pull from that to update the local version.

When writing a new post after that:

  1. Pull from upstream
  2. Create new post
    • Including YAML frontmatter
  3. Add post file
    • To new branch
  4. Commit file
  5. Push to forked version
  6. Create pull request

This is not a huge amount of work, once you are comfortable with git. But if any of those steps is missing/done wrong, then things will not work, leading to confusion and frustration.

I feel that making a guide for novice users covering the above steps in fair detail, specifically for the instructors' course (not just a generic guide to git/github) would go a long way. If people are still unclear or want more help, it will obviously be available in some form, at least if Round 12 is a fair representation of the people who sign up for this in terms of helpfulness.

@chungkky chungkky closed this as completed Apr 3, 2015
@chungkky chungkky reopened this Apr 3, 2015
@weaverbel
Copy link

Hi Martin
I agree this would be good. When I started, I was using Windows and the online (Web) interface to Git and Greg's instructions _Create a file titled "submissions ...." didn't make sense to me in that setting. And the header also tripped me up. So maybe some instructions that at least mention how things look and work in the Web interface would be good. I am now doing Git on the command line but I really had tears of frustration about how dumb I felt at not being able to follow things at the start.
Belinda

@wking
Copy link

wking commented Apr 3, 2015

On Thu, Apr 02, 2015 at 05:26:28PM -0700, Martin Bentley wrote:

The confusion around git/github seems to be linked into the fact
that at least some familiarity is required to complete the tasks we
have. When Greg asks us "write a blog post about x", that requires
a certain level of ability using the tools that the blog uses. Since
the blog uses jekyll, and is hosted on github, (some) skill with git
has become a hard pre-requisite.

But it wouldn't be a prerequisite if there was a section of the
training course that explicitly taught the GitHub web interface from
scratch, which is one of the proposed changes. In that case,
“post to the blog” is:

  1. Log in to GitHub and navigate to the directory where the posts live.

  2. Click on the Create a new file here button:

    fork-and-create

    If you don't already have a fork, that will be a “Fork this project and create a new file” button.

  3. Follow the rest of the steps to create the commit and pull-request for that new file.

You can do the whole GitHub flow in a browser, so you don't need command-line Git for the training course. As I've said before, I'd recommend folks learn command-line Git, but I don't think it needs to be an instructor-training prerequisite. I agree with Belinda that phrasing assignments in a way that's clear to both command-line Git and GitHub web interface users would be good, but once we're explicitly teaching the GitHub web interface, I don't see a need for a Git prerequisite at all.

@mtb-za
Copy link
Contributor

mtb-za commented Apr 3, 2015

@wking That is a good point. I think that if using the web-interface becomes the default, rather than assuming command line, but with command line instructions in parallel, it would go a long way to addressing things on that front.

In terms of other requirements, it depends on what people are interested in or have background in. It also depends on how they will be doing the workshops. In my own situation, I will probably need to run the entire workshop, given that I will be the only instructor in quite a wide radius, so I will need to be reasonably comfortable teaching the lot. For someone who has other instructors nearby, they may only need to know the absolute basics of a given topic, plus knowledge of one in a bit more depth that they would teach.

So someone may be quite happy to teach R, but not be familiar with the shell or git, but know enough to help other people if someone else is teaching. I think that technical requirements would vary a little.

I second the comments above that a desire to teach other people these sorts of skills would seem to definitely be required, which is likely to be a case of self-selection in any case: the type of people who sign up are likely to be exactly these.

As an aside, it looks like we are largely agreeing on things here?

mtb-za added a commit to mtb-za/training-course that referenced this issue Apr 3, 2015
Also added a section on just using the github interface to create
new files, based on [this comment](swcarpentry#445 (comment))

This might be too much detail or too large, but I figured it was
useful, so I threw it in.
@mtb-za mtb-za mentioned this issue Apr 3, 2015
@gvwilson
Copy link
Contributor Author

gvwilson commented Apr 3, 2015

On 2015-04-02 11:12 PM, W. Trevor King wrote:

But it wouldn't be a prerequisite if there was a section of the

training course that explicitly taught the GitHub web interface from
scratch, which is one of the proposed changes
#445 (comment).
In that case,
“post to the blog” is:

  1. Log in to GitHub and navigate to the directory where the posts live.
    2.

    Click on the Create a new file here
    https://help.github.com/articles/creating-new-files/ button:

    If you don't already have a fork, that will be a “Fork this
    project and create a new file” button.

Follow the rest of the steps
<https://help.github.com/articles/creating-new-files/> to create
the commit and pull-request for that new file.

You can do the whole GitHub flow in a browser
https://help.github.com/articles/github-flow-in-the-browser/,

Nope: you can do the whole GitHub flow in a browser, because you
understand how it all works under the hood. If you look at blog posts
in the current round of instructor training, you'll see that many of our
trainees struggled to do this because they don't. Even people at GitHub
admit (off the record) that their web interface isn't really usable by
people who don't already know the plumbing.

@snim2
Copy link
Contributor

snim2 commented Apr 3, 2015

My 2p (sorry for the length):

What should people be required to know before starting instructor training?

Nothing; anything you add here will be a) difficult to test for, b) may put motivated instructors off and c) will add a complicated extra stage to signing up for Instructor Training which may be a time waster for all involved.

How will we ensure that they know it? How will we avoid discouraging people from taking part by putting a prerequisite list in place?

Exactly. So, why not avoid the problem altogether? There are several sorts of people who will sign-up for Instructor Training. Some will have a lot of teaching experience, some will have almost none. Some will have a lot of technical experience, some will have almost none. Interesting that those of us with teaching qualifications are not exempt from training, so I would say that if the purpose of the training is to ensure that everyone knows about the "SW Carpentry way of doing things" then the training should continue to be compulsory and open to all and there should be no exam at the start. Otherwise why not exempt people who already know the technical stuff and already have a teaching qualification?

A proposal for a solution

To fix the "what to do about people who don't already know about Markdown / GitHub, etc." I would take a different strategy.

Step 1: I would ask people coming onto Instructor Training to either post a link to a URL of a GitHub repository that contains a Jekyll blog that they have contributed to, or state that they do not have such a link. People who already have the necessary technical skills will either have a Jekyll repository or they will be able to put one together pretty quickly. People who don't think they can do this quickly will need help getting up to speed with Jekyll / Git / Markdown.

Step 2: I would make sure that each round of Instructor Training has a roughly equal balance of people who have a Jekyll repository and people who do not. In a pre-training phase I would pair these people up and get the people with Jekyll blogs to teach the people without blogs how to set one up, over Hangout or Skype. If there is already a long waiting list for Instructor Training then there should be plenty of time for the pre-training phase to happen.

This way you solve the initial problem and get an added bonus - people will come onto Instructor Training already knowing a couple of people and with a little bit of experience in online teaching and learning which they can reflect on. In my view this would help to speed up the pace of the training when it does start.

@wking
Copy link

wking commented Apr 3, 2015

On Fri, Apr 03, 2015 at 01:34:42AM -0700, Martin Bentley wrote:

As an aside, it looks like we are largely agreeing on things here?

That's the goal ;). If we can come up with a path forward that sounds
good to everyone, it's probably a good bet. If we can't quite come to
a consensus, the project maintainer has to weigh the arguments and
make an executive decision. In either case, the more distinct
perspectives and arguments we here, the better-informed our eventual
decision will be.

@wking
Copy link

wking commented Apr 12, 2015

On Sat, Apr 11, 2015 at 02:37:10PM -0700, Mike Sarahan wrote:

Back to topic: prerequisites should simply be motivation and
willingness to learn (thanks @weaverbel). I think an important,
subtle part of "willingness to learn" is "willingness to interact
with computers through commands (as opposed to buttons)." This is
how I interpreted @wking statement: "...not sure what instructors
who are intimidated by our novice shell and Git lessons are hoping
to teach."

Beyond motivation and willingness to learn, it is up to us to
provide careful learning paths that bring people up to whatever
familiarity we ask of them.

The whole point of SWC is to give folks a path toward developing
reasonable software development skills without leaving them to grope
about on their own. I know I spent few years stumbling about myself
before finding out about Git and embracing Python, and it would have
saved me a lot of time if I'd had SWC there to point the way. SWC is
good at teaching folks (our learners), and all the material is there
for reading. The idea behind my poorly-phrased comment was just that
if most novice leaners can pick up the fundamentals of a shell and Git
in a day, I'd expect most (trainee) instructors could pick up similar
skills in a similar timeframe 1. That doesn't mean you need all
those skills to be a good instructor. It just means that acquiring
those skills is unlikely to be an unachievably high bar for
instructors.

But it doesn't really matter how much of a bar they are or whether we
give folks a self-study path to learn them, since the current
consensus seems to be that we should explicitly teach any required
skills during instructor training itself 2.

@daivanielsen
Copy link
Contributor

I think incoming trainees should at least have some familiarity with Git and GitHub. I think it's great that we're using GitHub to facilitate this training course and I've gotten a lot of extra practice with it over the last few weeks that's been really helpful.

As for markdown, I think it's pretty straightforward if someone has a md file they can use as a template. After I cloned/pulled material from the instructor training GitHub page, I used someone else's md blog post file to make my own. It was pretty simple and after that first try I acquired decent working knowledge of how things should be formatted in md.

How to make sure people know a bit of Git/GitHub. For starters, they can indicate if they have their own GitHub page (which they should if they've done a SWC Bootcamp). And then maybe have new trainees clone the instructor training repo on their own (with some instructions available for those who need it). The next step would be to have them make a PR, but I myself struggled with this at the beginning of this training session, so it may be an issue for others.

I don't think these prereqs would discourage most people from doing the training course. Hopefully those who want to do this have done a SWC bootcamp, or have been exposed to Git in some other way. Maybe we could create an online training module about Git and GitHub for those who have very little/no experience with these. The contingency would be that the module needs to be completed (with some kind of evaluative assessment at the end) before enrolling in instructor training. Just some thoughts!

@smcclatchy
Copy link
Contributor

Subject matter knowledge is extremely important but teaching ability must not be overlooked, as it often is in higher learning. We all know through experience that subject matter knowledge doth not a good teacher make, because we've all had bad experiences with people who were experts in their field but who couldn't teach. It's not simply a matter of having good people skills. Teaching really is an art that must be developed through thoughtful practice.
K-12 teachers go through a year-long training program before their first year of classroom teaching. This year typically includes coursework, classroom observation, and practice teaching under the guidance of an expert teacher. New teachers observe experts, and are observed by experts who coach them through delivering their first lessons.
There's some of this already in SWC instructor training. Rather than enforce prerequisites (which do serve to keep people away), could we develop a supportive coaching community of experts to guide newbies through their initial attempts at teaching?

@jiffyclub
Copy link
Contributor

It would be helpful here to make the goal of instructor training explicit. Is it the only goal to teach people about pedagogy, or is it to more broadly prepare people to teach SWC workshops? If the latter then I think Git/GitHub experience is definitely necessary and should be part of the curriculum.

@chungkky
Copy link
Contributor

I didn't join in this thread earlier because much of what I wanted to say I said in my contribution to the Round-12 training session MoPad here https://etherpad.mozilla.org/swc-teaching-2015-04-02 starting at about line 349. But, grudgingly assuming people on this thread will not have seen the MoPad comments, here are some revisions and additions:

Prerequisite Skills for Teaching Training (TT)
I'm torn: I agree with @weaverbel 's comments, esp. if you are serious about wanting novices to teach SWC. At the same time, you need enough familiarity with the content to teach and answer questions adequately and to be flexible in your teaching. Whether you need to have that familiarity, on all lessons, before TT is another question.

Instead of prerequisites, maybe it's more useful to assess students' skill level so you know who you are teaching (Ambrose Ch.1). Possible questions: how often have you used Python (or R, SQL, version control, unix shell, etc) in the last X weeks or X months or year? What do you use it for? (context) Why do you want to take SWC-TT (intent, motivation)? And, so that students know what to expect, make explicit TT's assumptions, apparatus, and learning goals, and have a syllabus available.

Re. GitHub skills (note: I'm in Round-12 of TT right now, first group to use GitHub for TT)
I agree with @morgantaschuk 's comments re. steep learning curve of git/GitHub, the blog posts scrolling off into the void (I've never been able to get the Search box on the blog page to work), and that git/GH wrestling is unrelated to being a good instructor. To me, GitHub is mainly the apparatus for the TT course (and a clunky one at that) and hence an extraneous cognitive load. Let's admit/announce it as such and provide scaffolding.

Sacrilegious (and moot?) Question Is GitHub the best tool/apparatus for Teaching Training?
I understand the whole of SWC (the lessons archive, the website, etc) moving to GitHub, but in TT we seldom modify our own submissions and we have not modified other people's submissions, so why do we need version control and the clunky GitHub interface/workflow for teaching training? I'm told a future assignment will involve modifying someone else's submission . . still, I'm wonder if GitHub is the best tool for TT.

Scaffolding and Practise Yes, online tutorials, but I don't think they are enough. We also need real-time exchanges where learners can ask questions arising from or not anticipated by the online tutorials. I propose the first lesson of TT be an optional one on the use of GitHub for the TT course. You can have mentors and help-lists later but there should be at least one across-the-board lesson where everyone gets the same baseline info together. Even so, expect difficulties because one or two lessons do not equal practise (Ambrose Ch4&5). I took the 2-day workshop which included git/GH (that lesson went too fast), I've done online tutorials on git/GH, I've read the Pro-Git book (last chapters are significantly more confusing), in Round-12 I have a git-buddy (thank you Luke) and a git tutorial (thank you max), and I still feel 5/10 with git/GH because I don't use it regularly in my work (nor do my colleagues; I'm in the arts/humanities, where most of us are slaves to MSWord and collaborative writing is still rare). No good short term solution to lack of practise.

@luispedro
Copy link

I vote for requiring enough knowledge of git to at least do a PR on a github repository. We don't need an instructor to know the different options to git rebase, but clone, edit, commit, push should be a requirement. Same for programming: an instructor need not be an expert, but they should be able take data from a text file and do a line plot in at least one programming language.

I'm a bit baffled by the argument that this would drive people away. Hopefully, it will drive them away to learn git and come back to instructor training later; but even accepting that some prospective instructors are so turned away by it they never reconsider it, it seems a very weak argument. From what I gather, instructor training sells out quickly, so it would likely not even make too much of a dent in the number of instructors, if at all.

Most importantly, SWC has a really good reputation right now (rightfully so, too) and it should be protected even at the cost of short term growth. If the certification is to mean anything, then there should be a minimal bar. Otherwise, I would not feel comfortable talking an institution into spending money from their oft-tight budget so they can fly in someone who may or may not know the core topics.

@PBarmby
Copy link
Contributor

PBarmby commented Apr 17, 2015

I got my first exposure to git during instructor training, and having more familiarity with it ahead of time would have made that process smoother. If a pre-requisite for instructor training had been to (eg) submit a PR, I probably would have dived in and tried. Being thrown into the deep end with git worked for me, but I can see how it might not work for everyone. Should it be a requirement?

There are several different ways Git/GitHub are used in SWC:

  1. Teaching it to learners.
  2. Facilitiating the community workflow: improving lessons, adding new ones, etc.
  3. To contribute to the blog (and the lessons?) as part of instructor training.

To me, item (1) is the most important reason for instructors to (eventually) know something about Git. You may not be planning on teaching it yourself, but if your co-instructor gets sick, or their transport is delayed, you should be able to jump in. To help out at workshops, you need some understanding beyond 'chant this magic incantation' which is how git seemed to me at first.

For item (2): this is more of a community decision. Do we want all instructors to be contributing to the lessons, or are we happy having many folks who just teach the material as it is? If the latter, then a detailed knowledge of Git/GitHub isn't necessary.

Item (3) is obviously a sore spot for people, and I'd agree that blogging via Jekyll/GitHub is not the easiest thing. One could argue that it is good for prospective instructors to experience the frustration of being unable to make something work (since our learners do), but maybe that's not the best use of everyone's time.

In conclusion, I'd echo what people have said above: prospective instructors need to be comfortable with at least one of the SWC core topics, and have the intention to become familar with all of the others.

@SaraVarela
Copy link

Hi,

I do not think people will be "afraid" if you set some prerequisites for this course. I think it is realistic. You can split the courses in several levels if needed.

If you do not set any prerequisite you will end up with an heterogeneous group of people, which means that some people are going to be master programmers/computer geeks and some other people are going to be R users (that just use R for doing stats, and inside here you can have veeery different levels). So, if you try to teach GIT, Github, R programming, Python programming, Markdown, software development workflow, unit tests... half of the people will be bored (if you just explain the basics) and half of the people will have a brain explosion
:-)

If the objective of this course is to teach basics, the prerequisite should be basic programming in R or Python, and you can explain the reasons for using version control, GIT, how to share your code and work in teams with github, Markdown, etc. If you want to go further, I would suggest GIT as a prerequisite (basic commands in the command line/shell).

best,

Sara

@wking
Copy link

wking commented Apr 17, 2015

On Fri, Apr 17, 2015 at 09:44:55AM -0700, Sara Varela wrote:

I do not think people will be "afraid" if you set some prerequisites
for this course. I think it is realistic.

See folks commenting on “imposter syndrome” earlier in this issue and
in the mentoring@ thread (e.g. 1).

If you do not set any prerequisite you will end up with an
heterogeneous group of people…

But I think we do want a heterogeneous group of instructors,
including both master Git users and near-novice Python users. Not
every instructor is going to be a perfect match for every audience (it
takes a lot of skill to teach a group of folks with a skill-set much
different than yours if you haven't taught similar groups many times
before), but that's ok. Having a heterogeneous mix all crammed into
one training course makes things a bit trickier, but (and maybe this
ties into #514?) you can always let the bored folks opt out of
sections where they already know the material, and if the training was
more asynchronous that self-selection gets very efficient.

Opt-outs may make it harder to assess trainee knowledge during/after
training (do we do this?), which seems like it would be important to a
useful badging system. Anyhow, that's an assessment issue, and is
independent from prerequisites.

@naupaka
Copy link
Member

naupaka commented Apr 17, 2015

I am quite late to this discussion, but just wanted to contribute my experience. I knew nothing of git when I started instructor training several years ago. I learned git and GitHub via the instructor training and through collaborative repo work to set up for the first workshop I helped teach (where I taught shell and R). I now feel quite comfortable with git, but it is all due to the 'on-the-job' experience I have gotten as a SWC instructor, and then taking the skills I learned there back into my own research (currently a postdoc). So I would be in favor of not having a hard or even a soft requirement for instructors to know everything in the novice lessons before they start, as long as they feel quite confident in at least 1 or 2. All workshops have at least 2 instructors, so as long as the other one has a complementary skill yet, it should be ok.

@matthew-brett
Copy link

I would guess (I am happy to be corrected) that it is not a fruitful experience being taught a subject by someone who does not know that subject reasonably well.

One large part of SWC is demystifying these tools. It is fairly easy for students to detect when the instructors are themselves still mystified, and this in turns leads to students getting the impression that it is not necessary to understand the material, in order to use it - which is surely the opposite of the impression SWC wants to convey.

Forgive me for not reading the whole thread, but presumably there is no-one who thinks that every instructor has to know all the topics? I feel strongly that the person teaching git, needs to understand it well, but it's surely not necessary for all the instructors to understand git well.

@hevronig
Copy link

From reading part of the thread, there is a dilemma where prerequisites may discourage some people from registering to the instructors training, I think that someone who is motivated enough to become an instructor, will not get easily intimidated by such prerequisites.

In my opinion, a person aspiring to become a SWC instructor, should take the time to at least go over the SWC Lessons page prior to the instructors training course, and be capable of completing these intro-level lessons to a large extent. Including Unix shell, version control, databases, and a programming language of choice.

@anelda
Copy link

anelda commented Apr 18, 2015

What about running two levels of instructor training (or will this cause unnecessary divide again?)

  1. One for the entry level trainer who may themself only be "two steps ahead of their learners [1]"
  2. Another for more advanced people

Here is more information to support my suggestion for those who have time to read on ;)

Thinking of our situation in South Africa where we have 1 qualified SWC trainer, 1 currently enrolled in online training, and 3 enrolled for training commencing in June, I would love to be able to encourage many more people to get trained as instructors. I am not an instructor but hope to be one – in the meantime I will be organising workshops and assist where I can.

I believe that as SWC grows in our country (and elsewhere) we will have a rich collection of trainers varying in technical skill level, teaching experience, and subject expertise and this will allow us to really make a difference to the way research is done and ultimately to the world – diseases/health, food scarcity, engineering questions, arts, and everything else we care about.

My personal passion is to help people who traditionally have not been exposed to computers besides Word and Excel and who inherently believes they will never be able to code or talk to “geeks” (the imposter syndrome mentioned before). I believe this is the first place where SWC can make a huge difference in South Africa. I love this statement:

“You don’t need to be an expert programmer to take part: in fact, we prefer instructors who are only two steps ahead of their learners and can still remember what it’s like to find programming difficult and confusing. You do need to be enthusiastic and willing to volunteer to help teach others what you know, and also willing to abide by our code of conduct.” [1]

BUT... SWC can also make a huge difference in the world of people who taught themselves to code or are not currently using some of the best practices for scientific coding or even ones who are using best practices.

I think SWC is successful based on so many factors

  1. The fact that it tries to understand how people learn and act on it
  2. The various topics available
  3. The great curriculums put together from various angles to provide a solid foundation for newcomers
  4. The culture of knowledge sharing, tolerance of different views, discussion, mentorship
  5. The community who collectively knows so much and together can (and is) change(ing) the world

Attending a workshop or participating in instructor training don’t only provide one with skills to teach or to code, but it provides you with an opportunity to be submerged in this community where you can explore new things – safely without the fear of rejection or ridicule. That is what I’d like our South African researchers to be exposed to, to learn from, and to embrace.

Maybe we don’t have to decide what instructors should look like, maybe we can create two tiers of instructor courses – beginners and advanced. The beginner instructors could look like the quote above. Advanced trainers can be more technically experienced to really take research coding to the next level. Of course advanced trainers may teach at either level as they wish.

At the moment I am teaching people to do “ls” and “less” (okay slightly exaggerated) and work through the R novice material and they’re loving it and we’re all learning and it’s safe. But I can’t teach them magic R stuff applied to their specific research questions. I can’t teach them crazy git/GitHub tricks but I can help them learn about why one should be aware of version control and help them set up their Git account. And I can empathise because I’m struggling too, but I can encourage them because I have learnt so much in the last 3 months. I can basically prep them to attend a workshop offered by someone more experienced. I can help them write bad code (going from not coding at all) so that they learn and appreciate it when someone teaches them to write good code.

Hadley Wickham @hadleywickham • 18h 18 hours ago
The only way to write good code is to write tons of shitty code first. Feeling shame about bad code stops you from getting to good code [2]

The main problem I foresee is having the capacity to provide training for all the trainees who might be interested in becoming SWC instructors… (Stating the obvious here). So, I guess we need to formalise the instructor training in a way that we can get more people trained up do run instructor training if we want to expand even more.

[1] http://teaching.software-carpentry.org/page/2/
[2] https://twitter.com/hadleywickham/status/589068687669243905

@wking
Copy link

wking commented Apr 18, 2015

On Sat, Apr 18, 2015 at 01:35:23AM -0700, Anelda van der Walt wrote:

Maybe we don’t have to decide what instructors should look like,
maybe we can create two tiers of instructor courses – beginners and
advanced. The beginner instructors could look like the quote above.
Advanced trainers can be more technically experienced to really take
research coding to the next level. Of course advanced trainers may
teach at either level as they wish.

I have two concerns with this approach:

  1. There are a host of skill dimensions here, and it's hard to
    collapse that all down onto a single beginner↔advanced axis.
    Allowing folks to opt-out of a particular topic if they feel
    comfortable with it already 1 makes more sense to me than trying
    to pre-sort trainees into pre-defined tracks.
  2. We don't actually use most of these skills (Python, shell, Git
    beyond basic PRs) in the current instructor training course 2, so
    while (self-)splitting trainees based on their existing knowledge
    of a skill they're learning makes sense, I see no reason to split
    them based on their knowledge of a skill they'll be teaching.

Since “Markdown and PRs via the GitHub web UI” is maybe a half-day of
training 3, I think we should still put everyone through the same
“how to teach in the SWC style” course, and just tell folks with
existing Markdown/Git knowledge that they can show up after lunch and
skip the Markdown/Git introduction (or skip the week that covers
Markdown/Git, or whatever works for the way their course is
structured, #514).

@iglpdc
Copy link

iglpdc commented Apr 20, 2015

Wow, there is really a lot going on here. I'll be brief. I think that we should put some prerequisites, the prerequisites don't have to be hard-lined, and being an instructor is not for everyone. I elaborate now.

I think that to teach something you should have a relevant experience in the field. The more, the better. SWC assumes that there basic computational skills that scientists should have, such as automating tasks using the UNIX shell, version control, and basic concepts of programming. Note that these are not tool related, but mostly conceptual frameworks (i.e. why writing functions, and not which is the R syntax to write a function). I think the requirement should be have a intermediate knowledge of such concepts. This is specifically vague to accommodate all the different background we see in our current instructors and hard to assess and test, so I think it should be up to the future instructor to think if they have such knowledge.

To me the point is not dropping git or vi or markdown, it's whether the instructor is experienced enough in using the skills whose use we're advocating. Note that tools may change. A couple of years ago, SWC used SVN instead of Git, there was no sign of R or MATLAB, Markdown wasn't a thing, and we had lessons on spreadsheets. I particularly struggle with git sometimes, because I use mostly SVN for work. But I started using version control almost 10 years ago, so I understand why and how to use it and can make a case on a workshop on why scientists should do it. Same goes for programming. I don't use R, but I can explain the R materials on loops or functions at a novice level if I have some notes on the R syntax, because I have experience programming on other languages.

I think instructor training was designed to instruct scientists with relevant experience on computing [1] how teach to others, and that's why there's almost no emphasis on actual materials we teach. Our prospective instructors are changing now and we're getting people without this experience we took for granted.

My solution would be ask the prospective instructors to go thru our novice lessons and assess if they would feel comfortable teaching them, even if they don't know the particular tool. I don't care if someone has trouble doing pull requests for a few times, but if they never used the command line or a text editor before, I don't think they would be prepared to teach SWC after the instructor training nor that we should change the training curriculum to fit them.

[1] And I think this sentence is important: scientists who understand the issues other scientists are facing, who probably don't have a proper CS training, but learnt in the trenches, and whose computing skills may not be consider such in a broader CS or software development context.

@wking
Copy link

wking commented Apr 20, 2015

On Mon, Apr 20, 2015 at 09:09:08AM -0700, Ivan Gonzalez wrote:

My solution would be ask the prospective instructors to go thru
our novice lessons and assess if they would feel comfortable
teaching them
, even if they don't know the particular tool. I
don't care if someone has trouble doing pull requests for a few
times, but if they never used the command line or a text editor
before, I don't think they would be prepared to teach SWC after the
instructor training nor that we should change the training
curriculum to fit them.

I think this is a reasonble position, but:

  1. Some folks are going to have trouble assessing themselves (imposter
    syndrom, and whatever the “yeah, I'm and expert in
    $THING_I_HEARD_ABOUT_YESTERDAY” inverse is called ;).
  2. There's no need to (self-)filter incoming trainees if we have
    sufficient instructor-training capacity. We can just put any
    interested party through the “how to teach” course, and let them
    work on the “what to teach” material afterward 1.

So far, I haven't heard about any issues with our training capacity,
so I think it's best to err on the side of inclusion to avoid issues
with self-assessment.

@luispedro
Copy link

Some folks are going to have trouble assessing themselves (imposter
syndrom, and whatever the “yeah, I'm and expert in
$THING_I_HEARD_ABOUT_YESTERDAY” inverse is called ;).

This is another reason why words like "novice" or "expert" are so useless (even "two steps ahead of the learners" is useless). However, "can you do a PR on a github repo?" is a very useful question.

If there is no input filter, do you propose an output one, like an exam before people can be certified? Otherwise, how can you ensure that the certification represents something?

So far, I haven't heard about any issues with our training capacity,
so I think it's best to err on the side of inclusion to avoid issues
with self-assessment.

http://swcarpentry.github.io/training-course/ says Our online courses are full for the remainder of 2015.
Please complete this form if you would like to be added to the waiting list for 2016.

I have heard of courses filling out very very fast.

@wking
Copy link

wking commented Apr 20, 2015

On Mon, Apr 20, 2015 at 10:11:54AM -0700, Luis Pedro Coelho wrote:

If there is no input filter, do you propose an output one, like an
exam before people can be certified? Otherwise, how can you ensure
that the certification represents something?

We currently have neither filter as far as I know, other than “you
need to submit (and maybe land) a PR against a lesson after you finish
the course” (although I don't know where that's laid out). Then we
have a joint-teaching at the first workshop with a more experienced
instructor. My guess is the current quality control is that more
experienced instructor, who suggest de-badging if the new instructor
completely bombs (or something like that?). I don't know that this
has been figured out yet, but I think some kind of subjective
assessment of teaching quality is probably the best we'll be able to
do in the short term.

So far, I haven't heard about any issues with our training
capacity, so I think it's best to err on the side of inclusion to
avoid issues with self-assessment.

http://swcarpentry.github.io/training-course/ says Our online
courses are full for the remainder of 2015. Please complete this
form if you would like to be added to the waiting list for 2016.

I have heard of courses filling out very very fast.

Thanks for the links :). Maybe we want to revisit the “no prereqs”
approach 1 in light of this bottleneck? On the other hand, we want
to maintain instructor diversity 2 and self-selection is a
homogenizing influence. Is it worth shifting “submitted a PR against
a lesson” from a post-test to a pre-test? That would shift our
trainee bias from the current “folks who are patient enough to wait
for a slot” to “folks who know enough Git to submit a PR, and can read
the lessons critically enough to find an improvement”.

@matthew-brett
Copy link

Am I right in thinking that the current emphasis on teaching 'how to teach' is partly based on the assumption that people already know the material for 'what to teach'?

For example, if you were teaching calculus, and your teachers didn't know calculus, you would have to teach that - first - or as well.

There must be some danger in expanding software carpentry to the degree where the instructors do not themselves know the material. It's possible that will just improve the coverage of SWC, but it's also possible it will affect the reputation of SWC enough to slow the current progress.

@wking
Copy link

wking commented Apr 20, 2015

On Mon, Apr 20, 2015 at 10:27:45AM -0700, Matthew Brett wrote:

There must be some danger in expanding software carpentry to the
degree where the instructors do not themselves know the material.

One of the problems is that “what to teach” is pretty flexible ;).
Although we could probably swing requiring some sort of demonstrable
competence in our core lessons: the POSIX shell, structured
programming (in Python, R, Matlab, …), and version control (Git,
Mercurial, …) 1. I don't know how we'd test that competence
(submitting a PR on GitHub just checks one of the optional tool
choices), but I'd be interested if someone better at assessment had
some ideas there. And requiring some competence in all three subjects
seems like a big enough shift that I think we'd want to ease into it
and see how it affected our trainee pipeline before committing
completely. I think “we want a Git (or Mercurial) PR before training”
is a big enough first step, if we do want to go the prereq route 2.

@wking
Copy link

wking commented Apr 20, 2015

On Mon, Apr 20, 2015 at 10:39:53AM -0700, W. Trevor King wrote:

And requiring some competence in all three subjects seems like a big
enough shift that I think we'd want to ease into it and see how it
affected our trainee pipeline before committing completely.

If we have more students than we can teach, pre-testing would be a
reasonable way to define multiple pipelines. Instead of having
multiple tracks after folks are accepted 1, we could have:

  • A no-prereq queue, for folks who lack (or think they lack) the
    necessary skills. All you need is the patience to wait in the queue
    until we have a slot to put you into the no-prereq course (where
    Markdown and Git are explicitly taught).
  • A Markdown/Git-proficient queue, for folks who land a PR in one of
    our lesson repositories. Folks who show enough commitment and skill
    to get this done get to enter the shorter queue.

Then potential trainees can decide how to balance the cost of a longer
wait vs. the cost of self-teaching Git/Markdown (with help@ and our
Git lesson as resources). And the SWC admins can balance diversity by
modulating the weighting between pulls from either queue (so long as
the no-prereq queue doesn't get shorter than the prereq queue ;).
This scales well if we turn out to need finer controls, since you
could require landed PRs in three core lessons (shell, Python/R/…, and
Git/Mercurial/…) to get into an even shorter queue, etc., etc.

I think this would work well for online courses, but you'd need a bit
of lead time (to give folks time to write and land PRs) if you wanted
to use it for on-site courses.

@matthew-brett
Copy link

It seems to me that git is a particularly good example of a topic that can be badly taught by someone who does not understand the underlying model. That can have a bad effect on the students, because they can't help but come away thinking that git is used by an obscure set of magical incantations, setting them on entirely the wrong path for their future learning.

@wking
Copy link

wking commented Apr 20, 2015

On Mon, Apr 20, 2015 at 11:03:05AM -0700, Matthew Brett wrote:

It seems to me that git is a particularly good example of a topic
that can be badly taught by someone who does not understand the
underlying model.

But you can be a perfectly competent SWC instructor, leading workshops
entirely by yourself, etc., etc., if you only know Mercurial and have
no Git knowledge at all. Since the SWC label only requires Git or
Mercurial 1.

And really, I think all of our tools (and probably most subjects) are
like that. You need enough of a grasp of the subject that when
learners get the wrong idea you (a) notice and (b) can lead them back
to the truth in a short, enlightening manner. Having both experienced
instructors/helpers present (for that sort of thing) and less
experienced instructors/helpers present (for “you can do this without
being a wizard” moral support) is ideal.

@iglpdc
Copy link

iglpdc commented Apr 20, 2015

To me, the PR on Github is anecdotal and should not be a requirement. I can do a significant PR fixing typos or rewording text using mostly (maybe only?) the Github web interface. This doesn't test my knowledge of the skills we aim to teach (automation, structure programming, and version control). Furthermore, Git is pretty young (at least its widespread use) and same goes for Markdown. A better test to me is using the shell and other command line tools. If someone is confident writing programs in whatever language using only command line tools, he/she could learn the specific tools we teach.

@matthew-brett
Copy link

@wking - sure - I am certainly not arguing that you should understand the git model before you teach some other topic, such as shell, markdown or structured programming.

But I am arguing that, if you haven't read about and understood the git underlying model, you will be very likely to lead the students down the wrong path - when teaching git. It's one obvious case where understanding some basic ideas does have a large impact on how you teach.

@weaverbel
Copy link

In my original response to this issue, I wrote

I honestly think the most important attributes for Software Carpentry instructors are

(a) a strong desire/motivation to help researchers pick up important skills
(b) the ability to see the problems learners have from the learners' own perspectives.

Having now almost completed instructor training, and being about to run a bootcamp, I would now add a third, namely

(c) the willingness to learn the lesson content well enough to be able to teach it.

That means learning to use Git, the shell, Python, and so on even if they seem hard or incomprehensible at first.

When I started instructor training, I could not have taught the lessons. But I got a Linux laptop, worked through the lessons, did the homework tasks, and now I feel I could teach some of the lessons, which is a huge step forward. Obviously I still have a way to go but I was more than willing to engage with a whole raft of new material. If we are to keep training instructors without strong technical backgrounds, they need to demonstrate that same willingness to learn.

@iglpdc
Copy link

iglpdc commented Apr 21, 2015

Well, I think knowing the materials well enough to be able to teach them is pretty much is the least one could ask for an instructor, in any case, not only for SWC. But the point is not that, the point is what we should ask from someone before becoming an instructor.

I cannot understand the motivation of someone deciding to become an instructor in something far from his/her background or current skills. I'd recommend this person to take our regular bootcamp, learn the basics, get some practice, and take the instructor training later. I think it's common sense.

In our mission statement [1], I see we are dedicated "to improve basic computing skills of researchers" and that "we want a significant fraction of our learners to become instructors". To me this means that future instructors must have at least the equivalent technical knowledge of learners at the end of our bootcamp.

[1] https://software-carpentry.org/scf/index.html

@huguesfontenelle
Copy link
Contributor

Prerequisite: having attended a workshop as a helper.

No particular pedagogic skills need besides some guidelines those offered by whomever runs the workshop. Some technical skills obviously needed to be useful, also decided by the local team.

@iglpdc
Copy link

iglpdc commented Apr 21, 2015

Prerequisite: having attended a workshop as a helper.

@huguesfontenelle, this works if you leave in the Bay area or NYC, where we have a bunch of workshops and opportunities to help abound. Helpers are not reimbursed for travel, so how a person from Brazil, Spain, or Namibia is gonna find opportunities to attend as a helper and become an instructor?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests