Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Herding cats with django

342 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Technologie
  • If you want a girl to "chase" you, then you have to use the right "bait". We discovered 4 specific things that FORCE a girl to chase after you and try to win YOU over. copy and visiting... ◆◆◆ http://t.cn/AiurDrZp
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • FREE TRAINING: "How to Earn a 6-Figure Side-Income Online" ... ▲▲▲ https://tinyurl.com/y3ylrovq
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Tired of being scammed? Take advantage of a program that, actually makes you money! ➤➤ http://ishbv.com/ezpayjobs/pdf
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

Herding cats with django

  1. 1. Herding Cats with Django: technical tools & social incentives to encourage participation Slides CC-BY-NC-SA Sage Sharp <sharp@otter.technology> Cat and cowboy boots CC-BY-NC-SA 2.0 Nicole Hoffmann Sage Sharp pronouns: they/them
  2. 2. A small confession... CC-BY kellinahandbasket
  3. 3. ● 3 month internship ● Supports diversity in FOSS ● Remote 1:1 mentorship ● $5,500 internship stipend ● $500 conference travel stipend Outreachy organizer, Outreachy Linux kernel interns, and Outreachy mentor at Open Source Summit 2017 CC-BY-NC-SA Sage Sharp <sharp@otter.technology>
  4. 4. ● 5 Outreachy organizers ● 2 part-time staff ● 20 FOSS communities ● 60 mentors ● ?? applicants ?? Outreachy Mozilla interns at FOSDEM 2017 CC-BY-NC-SA Sage Sharp <sharp@otter.technology>
  5. 5. 1,200 applicants?? CC-BY Tracie Hall
  6. 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. 7. How do we get applicants moving in the right direction? CC-BY Sayoko Shimoyama
  8. 8. + social incentives CC-BY Sayoko Shimoyama
  9. 9. Identify Personas
  10. 10. Identify Purr-sonas Applicant - Trisha Gupta Needs: ● Get an internship ● Find a job Emotions: ● Nervous, Imposter Syndrome CC-BY Jase Curtis
  11. 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
  12. 12. Identify Purr-sonas Organizer - Sage Sharp Needs: ● Prevent mentor burnout ● Keep everyone on track Emotions: ● Overwhelmed CC-BY Jessica Fiess-Hill
  13. 13. Scale of Purr-ticipants CC-BY Jase Curtis CC-BY Zeev Barkan CC-BY Jessica Fiess-Hill
  14. 14. Conversion Funnel
  15. 15. Step 1: Understand applicant's needs ● Many worries about picking a project ● "Do you have Python projects?" CC-BY Stefano Mortellaro
  16. 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. 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. 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. 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
  20. 20. Step 5: Create tools to meet needs
  21. 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. 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. 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. 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'), )
  25. 25. Template: Mentor Project Entry
  26. 26. view.py - class-based view class ProjectSkillsEditPage(BaseProjectEditPage): template_name_suffix = '_skills_form' form_class = inlineformset_factory(Project, ProjectSkill, fields='__all__') ...
  27. 27. Inline formset
  28. 28. urls.py url(r'^communities/cfp/ (?P<community_slug>[^/]+)/project/ (?P<project_slug>[^/]+)/skills/$', views.ProjectSkillsEditPage.as_view(), name='project-skills-edit'),
  29. 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. 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. 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. 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)
  33. 33. Thanks! Sage Sharp @_sagesharp_ Cats that webchick is herding CC-BY KathleenMurtagh