This talk will provide a practical look at how Outreachy used a combination of technical and social tools to motivate participants to complete our internship application process. Web developers who work on websites that encourage people to complete tasks will benefit from understanding the social incentive tools presented in this talk. Parts of the talk will be suitable for Django beginners who have completed one Django tutorial and are familiar with the basic concepts of models, objects, views, and templates. Everyone will appreciate the cat photos.
6. ●
Complex application process:
– Fill out initial application
– Pick a project
– Interact with mentor
– Make a contribution
– Submit final application
Outreachy Debian intern with Google Summer of Code Debian intern
at Open Source Bridge Conference 2016
CC-BY-NC-SA Sage Sharp <sharp@otter.technology>
7. How do we get applicants moving
in the right direction?
CC-BY Sayoko Shimoyama
10. Identify Purr-sonas
Applicant - Trisha Gupta
Needs:
●
Get an internship
●
Find a job
Emotions:
●
Nervous, Imposter Syndrome
CC-BY Jase Curtis
11. Identify Purr-sonas
Mentor - Harry Williams
Needs:
●
Support diversity in FOSS
●
Connect with enthusiastic intern
Emotions:
●
Excitement, sense of purpose
CC-BY Zeev Barkan
15. Step 1: Understand
applicant's needs
●
Many worries about
picking a project
●
"Do you have Python
projects?"
CC-BY Stefano Mortellaro
16. Step 1: Understand
applicant's needs
●
Many worries about
picking a project
●
"Do you have Python
projects?"
●
"Do I need to be an
expert in Python?"
CC-BY Stefano Mortellaro
17. Step 2: Understand
applicant's pain points
●
Project listings on
20 different wikis
●
Different formats
●
No skills listed
●
Required vs optional?
●
Imposter syndrome
CC-0 Pete
18. Step 3: Look for the helpers
●
Mentors know what
skills are required
vs optional
●
Some mentors can
teach applicants skills
●
Mentors know how much
experience applicants need
CC-BY Stephen Wheeler
19. Step 4: Identify social incentives
for mentors to meet those needs
●
Mentors want to
find enthusiastic interns
●
We need them to
list project skills
●
Can't select an intern
until you add your project
CC-BY peardg
21. Model: class ProjectSkill
skill = models.CharField(
max_length=SENTENCE_LENGTH,
verbose_name="Skill description",
help_text="What is one skill an the applicant needs
to have in order to contribute to this internship
project, or what skill will they need to be willing to
learn?")
22. Model: class ProjectSkill
REQUIRED_CHOICES = (
(BONUS, "It would be nice if applicants had
this skill, but it will not impact intern selection"),
(OPTIONAL, "Mentors will prefer applicants
who have this skill"),
(STRONG, "Mentors will only accept
applicants who have this skill as an intern"))
23. Model: class ProjectSkill
required = models.CharField(
verbose_name="Skill impact on intern selection",
help_text="Is this skill a hard requirement, a
preference, or an optional bonus? Choose this carefully!
Many Outreachy applicants choose not to apply for an
internship project unless they meet 100% of the project skill
criteria.",
choices=REQUIRED_CHOICES, ... )
24. Model: class ProjectSkill
EXPERIENCE_CHOICES = (
(TEACH_YOU, 'Mentors are willing to teach this skill to applicants with
no experience at all'),
(CONCEPTS, 'Applicants should have read about the skill'),
(EXPERIMENTATION, 'Applicants should have used this skill in class or
personal projects'),
(FAMILIAR, 'Applicants should be able to expand on their skills with the
help of mentors'),
(CHALLENGE, 'Applicants who are experienced in this skill will have
the chance to expand it further'), )
29. view.py: checking permissions
class BaseProjectEditPage(LoginRequiredMixin, ComradeRequiredMixin,
UpdateView):
def get_object(self):
participating_round = RoundPage.objects.latest('internstarts')
project = get_object_or_404(Project, slug=self.kwargs['project_slug'],
project_round__community__slug=self.kwargs['community_slug'],
project_round__participating_round=participating_round)
if not project.is_submitter(self.request.user):
raise PermissionDenied("You are not an approved mentor for this
project")
return project
30. Tool Creation Pitfalls
●
Pull to "problem fix" first
●
Misidentify root problem
●
Don't meet people's needs
●
Add even more work
●
Disincentivise participation
CC-BY Jonas Löwgren
31. Empathy + incentives + Tools = Win!
●
Understand needs
●
Understand pain points
●
Look for the helpers
●
Create social incentive
●
Build tools to motivate
CC-BY Tiomax80
32. Help Outreachy out!
●
https://github.com/sagesharp/outreachy/
– Translate the Outreachy tweets and posters
●
https://github.com/sagesharp/outreachy-django-wagtail/
– labels: "help wanted" or "newcomers welcome"
– Need CSS and template help!
– Mentors declare languages they speak (without having 2MB
list of all languages in HTML)