├── CNAME ├── cover.jpg ├── .gitignore ├── cover_small.jpg ├── contributing ├── images │ ├── edit.png │ ├── fork.png │ ├── pull_request.png │ └── github_editor.png └── README.md ├── LICENSE ├── SUMMARY.md ├── .github └── workflows │ ├── test.yml │ └── deploy.yml ├── Makefile ├── package.json ├── summary └── README.md ├── README.md ├── book.json ├── intro └── README.md └── tips └── README.md /CNAME: -------------------------------------------------------------------------------- 1 | coach.djangogirls.org -------------------------------------------------------------------------------- /cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DjangoGirls/coach-manual/HEAD/cover.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _book/ 2 | .idea/ 3 | node_modules/ 4 | contributing/.DS_Store 5 | .DS_Store -------------------------------------------------------------------------------- /cover_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DjangoGirls/coach-manual/HEAD/cover_small.jpg -------------------------------------------------------------------------------- /contributing/images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DjangoGirls/coach-manual/HEAD/contributing/images/edit.png -------------------------------------------------------------------------------- /contributing/images/fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DjangoGirls/coach-manual/HEAD/contributing/images/fork.png -------------------------------------------------------------------------------- /contributing/images/pull_request.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DjangoGirls/coach-manual/HEAD/contributing/images/pull_request.png -------------------------------------------------------------------------------- /contributing/images/github_editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DjangoGirls/coach-manual/HEAD/contributing/images/github_editor.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 2 | International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ 3 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | * [Introduction](README.md) 4 | * [Basic Information](intro/README.md) 5 | * [Coaching Rules, Tips and Tricks](tips/README.md) 6 | * [After the Workshop](summary/README.md) 7 | * [Contributing](contributing/README.md) 8 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | - pull_request 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Checkout 10 | uses: actions/checkout@v2 11 | with: 12 | persist-credentials: false 13 | 14 | - name: Install and Build 15 | run: | 16 | npm install 17 | npx honkit build -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | setup: node_modules 2 | 3 | node_modules: 4 | @npm install 5 | 6 | check: package.json book.json 7 | @if ! which node 1> /dev/null; then\ 8 | echo "Error: Node.js not found";\ 9 | echo " * Please install/reinstall NodeJS on your system.";\ 10 | echo " * NVM is recommended for installation (https://github.com/nvm-sh/nvm).";\ 11 | false;\ 12 | fi 13 | 14 | build: setup 15 | @npx honkit build 16 | 17 | build-dev: setup 18 | @npx honkit build --log=debug 19 | 20 | serve: setup 21 | @npx honkit serve 22 | 23 | dev: setup 24 | @npx honkit serve --log=debug 25 | 26 | .PHONY: check build build-dev serve dev -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coach-manual", 3 | "version": "1.0.0", 4 | "description": "The Django Girls Coach Manual", 5 | "main": "index.js", 6 | "dependencies": {}, 7 | "devDependencies": { 8 | "gitbook-plugin-codeblock-label": "*", 9 | "gitbook-plugin-collapsible-menu": "*", 10 | "gitbook-plugin-ga": "^2.0.0", 11 | "gitbook-plugin-github": "2.0.0", 12 | "gitbook-plugin-heading-anchors": "^1.0.3", 13 | "gitbook-plugin-language-picker": "*", 14 | "gitbook-plugin-richquotes": "0.0.9", 15 | "gitbook-plugin-sectionx-ex": "*", 16 | "gitbook-plugin-sidebar-ads": "^1.0.0", 17 | "honkit": "^3.4.0" 18 | }, 19 | "scripts": {}, 20 | "keywords": [], 21 | "author": "Django Girls", 22 | "license": "CC-BY-SA-4.0", 23 | "bugs": { 24 | "url": "https://github.com/DjangoGirls/coach-manual/issues" 25 | }, 26 | "homepage": "https://github.com/DjangoGirls/coach-manual#readme" 27 | } 28 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | permissions: 9 | contents: read 10 | pages: write 11 | id-token: write 12 | 13 | concurrency: 14 | group: "pages" 15 | cancel-in-progress: true 16 | 17 | jobs: 18 | build: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@v3 23 | with: 24 | persist-credentials: false 25 | - name: Install and Build 26 | run: | 27 | npm install 28 | npx honkit build 29 | - name: Upload artifact 30 | uses: actions/upload-pages-artifact@v1 31 | with: 32 | path: _book 33 | 34 | deploy: 35 | needs: build 36 | permissions: 37 | pages: write 38 | id-token: write 39 | environment: 40 | name: github-pages 41 | url: ${{ steps.deployment.outputs.page_url }} 42 | runs-on: ubuntu-latest 43 | steps: 44 | - name: Deploy to GitHub Pages 45 | id: deployment 46 | uses: actions/deploy-pages@v2 -------------------------------------------------------------------------------- /summary/README.md: -------------------------------------------------------------------------------- 1 | # After the Workshop 2 | 3 | If you don't mind spending some time helping people after the workshop, we encourage you to stay in touch with your team. It is great to have a mentor - somebody to ask a question if you are stuck with something. 4 | 5 | ## Improve the tutorial! 6 | 7 | In fact, it's helpful to do it even **during the workshop**. If you see that something in the tutorial is wrong, take the 5 minutes to submit a Pull Request right away. Or even better: teach your group how to do it! It's important to do it *right away*, otherwise you will forget. Believe us, we've all been there. 8 | 9 | If for some reason, you can't do it right away, [at least report an issue](https://github.com/DjangoGirls/tutorial/issues). The tutorial is getting invaluably better with each event that takes place. It is important. 10 | 11 | ## Share your experience with us 12 | 13 | Teaching others is a very hard thing. You will learn a lot during the workshop and we would be happy to hear about your experiences as a coach. 14 | 15 | Please share all your findings with us. We will keep making the tutorial better and more complete. 16 | 17 | Drop us a line at hello@djangogirls.org. 18 | 19 | 20 | ## Stay in touch with your group 21 | 22 | As much as possible, please stay in touch with your group after the event. Answer their questions, encourage them to follow on with programming or invite them to your local Python meetup. It's super important to have a friendly face in the community. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Django Girls Coaching Manual 2 | 3 | > **Info** This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 4 | International License. To view a copy of this license, visit 5 | http://creativecommons.org/licenses/by-sa/4.0/ 6 | 7 | This manual is a set of useful tips and tricks that Django Girls coaches can use. Being a coach is a very hard task and thus we have collected together all the things we have learned during the workshops so far to share with you. 8 | 9 | This manual is also based on these wonderful resources: 10 | - [Hacker School User's Manual](https://www.hackerschool.com/manual) 11 | - [Rails Bridge Teacher Training](http://curriculum.railsbridge.org/workshop/more_teacher_training) 12 | - [Open Tech School Coaching Guide](http://opentechschool.github.io/slides/presentations/coaching/) 13 | - [Being a Rails Girls Coach](http://guides.railsgirls.com/coach) 14 | 15 | # Introduction 16 | 17 | ## What do I need to be a Django Girls coach? 18 | 19 | Your interest in helping beginners dip their toes into web programming is already a great start! You don't need to be an expert in programming or Django - we're teaching pretty basic stuff. You only need: 20 | 21 | - Lots of patience, smiles and a friendly attitude. 22 | - The ability to answer all sorts of questions in a beginner-friendly way (even if that means the explanation isn’t technically precise) throughout the duration of the workshop. 23 | - Some time to go through the [Tutorial](http://tutorial.djangogirls.org) before the event. 24 | - Free time on the weekend! 25 | - Curiosity! 26 | 27 | ## Why should I be a Django Girls coach? 28 | 29 | You mean besides incredibly good karma? Here are some very likely outcomes: 30 | 31 | - You’ll meet interesting new people outside your usual developer group. 32 | - You’ll probably learn something new by answering questions you never thought of asking yourself. 33 | - Eternal gratitude from your group of attendees and the Django Girls community. 34 | - You’ll help break down the stereotype that women are not interested in technology and programming and thus help your sisters, female friends, relatives and (future) daughters have more choices in their future. And you can add all that on your CV! 35 | 36 | ## Contributing 37 | 38 | This coach manual is maintained by [DjangoGirls](http://djangogirls.org/). If you find any mistakes or want to update the tutorial please [follow the contributing guidelines](/contributing/). 39 | -------------------------------------------------------------------------------- /book.json: -------------------------------------------------------------------------------- 1 | { 2 | "gitbook": ">=3.1.1", 3 | "plugins": [ 4 | "github", 5 | "sidebar-ads" 6 | ], 7 | "pluginsConfig": { 8 | "github": { 9 | "url": "https://github.com/DjangoGirls/coach-manual" 10 | }, 11 | "sidebar-ads": { 12 | "ads": [ 13 | { 14 | "imageUrl": "https://djangogirls.org/static/img/global/donate/lagos.jpg", 15 | "url": "https://surveys.jetbrains.com/s3/w-django-girls-survey-2024", 16 | "description": "💖 Celebrate 10 years with us. Fill our survey! ✨", 17 | "btnText": "Fill in now!" 18 | }, 19 | { 20 | "imageUrl": "https://static.djangoproject.com/img/logos/django-logo-negative.png", 21 | "url": "https://www.djangoproject.com/", 22 | "description": "💖 The DSF supports the development of Django! ✨", 23 | "btnText": "Learn more!" 24 | }, 25 | { 26 | "imageUrl": "https://djangogirls.org/static/img/global/supporters/DO_Logo_Vertical_Blue.png", 27 | "url": "https://www.digitalocean.com/", 28 | "description": "💖 DigitalOcean simplifies cloud computing! ✨", 29 | "btnText": "Learn more!" 30 | }, 31 | { 32 | "imageUrl": "https://djangogirls.org/uploads/uploads/posthog.png", 33 | "url": "https://posthog.com/", 34 | "description": "💖 PostHog offers a suite of product analysis tools! ✨", 35 | "btnText": "Learn more!" 36 | }, 37 | { 38 | "imageUrl": "https://djangogirls.org/uploads/uploads/lincolnloop.png", 39 | "url": "https://lincolnloop.com/", 40 | "description": "💖 Lincoln Loop provides scalable content platforms! ✨", 41 | "btnText": "Learn more!" 42 | }, 43 | { 44 | "imageUrl": "https://djangogirls.org/uploads/uploads/torchbox.png", 45 | "url": "https://torchbox.com/", 46 | "description": "💖 Torchbox, the creators of Wagtail! ✨", 47 | "btnText": "Learn more!" 48 | }, 49 | { 50 | "imageUrl": "https://www.pythonanywhere.com/static/anywhere/images/PA-logo.svg", 51 | "url": "https://www.pythonanywhere.com/", 52 | "description": "💖 Host, run, and code Python in the cloud! ✨", 53 | "btnText": "Learn more! " 54 | }, 55 | { 56 | "imageUrl": "https://djangogirls.org/static/img/global/donate/lagos.jpg", 57 | "url": "https://www.patreon.com/djangogirls", 58 | "description": "💖 Support our work and donate to our project! ✨", 59 | "btnText": "Donate now!" 60 | }, 61 | { 62 | "imageUrl": "https://djangogirls.org/static/img/global/donate/tshirt.jpg", 63 | "url": "https://djangogirls.org/en/contact/", 64 | "description": "💖 Want to support our work? ✨", 65 | "btnText": "Contact Us!" 66 | } 67 | ] 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /intro/README.md: -------------------------------------------------------------------------------- 1 | # How do you apply to be a Django Girls coach? 2 | 3 | To become a Django Girls coach all you need to do is: 4 | 5 | * go to the djangogirls.org page and look for an event you can help with 6 | * fill in the coach application form on the event website 7 | 8 | Alternatively you can drop us a line at hello@djangogirls.org and ask about upcoming events. 9 | 10 | Most of our workshops are done in English, so we expect you to speak it fluently. However, it is possible that some local events will be done in other languages - you should ask the individual event organizers about it (use the specific email address that you'll find on each event page). 11 | 12 | ## How much time will you need to spend to be a coach? 13 | 14 | Django Girls is designed to be a one-day workshop. However, sometimes the event could take two days, or there may be a shorter installation event the evening before. Apart from time you will spend actually coaching, there are a number of things you need to consider, which will take some of your time: 15 | 16 | * Getting to know your group - we encourage to say hi and meet with your group before the workshop. This could involve writing an e-mail to introduce yourself, and possibly a chat via GoogleHangout/MSTeams/Zoom with all the people in your group (__~1-2 hours__). 17 | * Helping out with installation before the workshops - either done via GoogleHangout/MSTeams/Zoom/e-mails or a day before the workshop. You will need __3+ hours__ for that. 18 | * For some Django Girls events there may be pre- or post-workshop meetups (__~1-3h__). 19 | 20 | # Tutorial 21 | 22 | During Django Girls events we use a tutorial that was written specifically for these workshops. You can find it here: http://tutorial.djangogirls.org/ 23 | 24 | During the course of the workshop, you should be able to accomplish the whole tutorial in 7-8 hours. The tutorial involves writing a complete blog application in Django and deploying it to PythonAnywhere. 25 | 26 | The tutorial covers: 27 | * A simple explanation of how the Internet works. 28 | * Installation of Python, Django etc. (Note that we are using Python 3!) 29 | * Creating a Django app. 30 | * Django models, views, urls and templates. 31 | * Basics of HTML and CSS. 32 | * Using Bootstrap and Google Fonts. 33 | * Deploying on PythonAnywhere. 34 | 35 | # Pre-workshop installation 36 | 37 | There is a lot to learn in the tutorial! Attendees will have more time to learn at the workshop if they come with everything they need already installed. Most Django Girls events include a pre-workshop meetup in the evening or day(s) beforehand, where you can help your group with installation and check that their system is ready to go. This could be in person or by GoogleHangout/Teams/Zoom etc. 38 | 39 | We recommend pointing attendees at the [Installation chapter](http://tutorial.djangogirls.org/en/installation/index.html) prior to the workshop, this takes them through some basic setup steps and some introductory material. It is of course fine to discuss the material and answer any questions they have, but we want them to be able to start coding right away! 40 | 41 | 42 | ## Our approach 43 | 44 | The tutorial is completely beginner-friendly. Attendees literally don't have to know how the internet works - we will explain it all! 45 | 46 | We avoid technical terms and we don't assume that attendees know anything already. We explain everything with real life examples and always try to explain the bigger picture. 47 | 48 | At times, the material might seem unnecessarily convoluted to you, as if we are going through extra hoops to get to the final result. That is deliberate -- we believe this will achieve the best results. Let attendees explore the material and understand it on their own. 49 | 50 | The tutorial is designed to expose attendees to as many Django errors as possible. It is very important for us to show that dealing with errors is a part of being a programmer. When they go back home, they should be able to find the solution to error messages on their own. 51 | 52 | As much as possible, we want our coaches to follow some guidelines, described in next sections. 53 | -------------------------------------------------------------------------------- /contributing/README.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | The Django Girls Coach Manual is licensed under a [*Creative Commons Attribution-ShareAlike 4.0*](https://creativecommons.org/licenses/by-sa/4.0/) license. Everyone is free to add, edit and correct the tutorial. 4 | 5 | # Editing basics 6 | 7 | The source code of the coach manual is [hosted on GitHub](https://github.com/DjangoGirls/coach-manual). The GitHub [Fork & Pull workflow](https://help.github.com/articles/using-pull-requests) is used to accept and review changes. 8 | 9 | The tutorial uses the [HonKit](https://github.com/honkit/honkit) project for publishing its documentation. [See more information about how HonKit works](https://honkit.netlify.app/). 10 | 11 | The coach manual is written in [Markdown mark up language](https://help.github.com/articles/markdown-basics). 12 | 13 | You can find any discussions about the contents of the coach manual on the [GitHub issue tracker](https://github.com/DjangoGirls/coach-manual/issues). 14 | 15 | [Crowdin](https://crowdin.com/project/django-girls-coach-manual) platform is used to manage translations. If you want to join an existing translation team or launch a new translation, send an email to the [translation managers](mailto:translations@djangogirls.org) or contact [support team](mailto:hello@djangogirls.org). 16 | If you want to propose some small changes or fix typos in existing translations, please create a Pull Request. 17 | 18 | # Getting started and prerequisites 19 | 20 | For contributing to the coach manual the following is needed to get started: 21 | 22 | * a [GitHub account](https://github.com) 23 | * in the case of complex edits familiarity with [Git command line basics](https://help.github.com/articles/set-up-git) or familiarity with an app ([Windows](https://windows.github.com/), [Mac](https://mac.github.com/)) to push your edits made on your computer to GitHub. 24 | 25 | ## Fork the repository 26 | 27 | First fork the [DjangoGirls/coach-manual](https://github.com/DjangoGirls/coach-manual) repository to your personal GitHub account: 28 | 29 | ![Fork button](images/fork.png) 30 | 31 | ## CLI for Development 32 | 33 | This command line tool use `make` to create development environment. It is optional to use this tool. While building the document, it builds the document for every language. The build process can be limited to any one language using this tool and reduce build time considerbly. Afterwards, the translation to other languages are done from crowdin localization process. 34 | 35 | Usage instructions are available though `make help` command. 36 | 37 | Try the command `make dev` to start development process. 38 | 39 | # Editing chapter content 40 | 41 | ## Simple changes 42 | 43 | For simple changes like typo corrections you can use the GitHub online editor: 44 | 45 | * Open your local fork page on GitHub, 46 | * go to *README.md* file in any chapter, 47 | * press the *Edit* icon (pen) 48 | 49 | and you can edit the chapter directly on github.com. 50 | 51 | ![Edit button](images/edit.png) 52 | 53 | Markdown syntax is used to edit the individual pages of the tutorial. 54 | 55 | ![GitHub editor](images/github_editor.png) 56 | 57 | Save your changes and create a pull request as explained below. 58 | 59 | ## New content and complex changes 60 | 61 | For adding new chapters, writing longer snippets of text or adding images, you need to get a copy of the coach manual to your local computer. 62 | 63 | Either use the GitHub app for your operating system (mentioned above) or `git` command line to get the repository locally. You get the repository address from the front page of your own GitHub repository fork: 64 | 65 | git clone git@github.com:yourgithubusername/coach-manual.git 66 | 67 | Move to the folder containing the project, to run the following commands. 68 | 69 | cd coach-manual 70 | 71 | Then, create a branch for your new changes to sit in. It helps to call the branch something related to the changes you are going to make. 72 | 73 | git checkout -b contributing 74 | 75 | Install the project's requirements using [`npm`](https://docs.npmjs.com/cli/v8/configuring-npm/install). 76 | 77 | npm install 78 | 79 | To preview and serve local files, with auto-reload capabilities, run HonKit using: 80 | 81 | npx honkit serve 82 | 83 | The local server will be available at http://localhost:4000. 84 | If auto-reload is slow, you can temporarily remove unwanted languages from `LANGS.md`, to speed up the process. 85 | 86 | Then commit the changes using `git` and push the changes to your remote GitHub repository. 87 | 88 | Example: 89 | 90 | $ git status 91 | On branch contributing 92 | Untracked files: 93 | (use "git add ..." to include in what will be committed) 94 | 95 | contributing_and_editing_this_book/images/gitbook.png 96 | 97 | $ git add contributing_and_editing_this_book/images/gitbook.png 98 | 99 | $ git commit -m "Added gitbook editor screenshot" 100 | [contributing fe36152] Added gitbook screenshot 101 | 1 file changed, 0 insertions(+), 0 deletions(-) 102 | create mode 100644 contributing_and_editing_this_book/images/gitbook.png 103 | 104 | $ git push 105 | Counting objects: 11, done. 106 | Delta compression using up to 8 threads. 107 | Compressing objects: 100% (5/5), done. 108 | Writing objects: 100% (5/5), 266.37 KiB | 0 bytes/s, done. 109 | Total 5 (delta 1), reused 0 (delta 0) 110 | To git@github.com:miohtama/coach-manual.git 111 | b37ca59..fe36152 contributing -> contributing 112 | 113 | # Making a pull request 114 | 115 | After you have finished your changes you need to create [a pull request](https://help.github.com/articles/using-pull-requests) on GitHub. DjangoGirls will get notified about the pull request, review your changes, suggest any corrections if needed and then *pull* your changes to the master version. 116 | 117 | In your own repository on GitHub press do *Compare & pull request* 118 | 119 | ![Compare & pull request](images/pull_request.png) 120 | 121 | Fill in the information *why* this change is being made. The reviewer can see the details of the actual change, so you don't need repeat the content of the change. 122 | 123 | Then press *Create pull request*. 124 | 125 | GitHub emails will notify you for the follow up process. 126 | 127 | # Further information and help 128 | 129 | GitHub has an excellent [documentation](https://help.github.com/). Check it out if you need help! 130 | 131 | For further questions please [contact DjangoGirls](https://djangogirls.org/). 132 | -------------------------------------------------------------------------------- /tips/README.md: -------------------------------------------------------------------------------- 1 | # Coaching Guidelines, Tips and Tricks 2 | 3 | As much as possible, we want our coaches to follow some guidelines. 4 | 5 | ### Hands-on! Coaching vs. teaching 6 | 7 | During the workshop you'll work in a small group of 3 learners. This is a hands-on, experience-oriented workshop. You'll stand by on the sidelines, not in front of them. 8 | 9 | Coaches need to be 100% focused on their learners and always be there when needed. Make sure their experience is positive and that they have fun. Do not judge, be helpful and appreciate their (in-)abilities. 10 | 11 | ### Be Flexible & Accessible 12 | 13 | For attendees who are hard of hearing or would otherwise benefit from forms of communication other than talking, be prepared to use a text-based form of communication. Give them your GoogleHangout/Teams/Zoom name and encourage them to IM you when they need help. (And remember to bring a laptop so you can check your IMs!) 14 | 15 | Attendees with low vision might want to increase the size of the text in their command lines, their text editors, and on web pages. They probably know how to enlarge text in their web browsers, but they might need help resizing text in other places. Don't assume anything about someone's vision; try to start the day with the statement, "And if you need help making the text size bigger or smaller when you start coding, let me know!" 16 | 17 | Sometimes attendees can get overwhelmed. This is why breaks are built into the schedule! If you feel like an attendee is getting frustrated and would benefit from a break, let them know that it's okay to step away for a few minutes, take a sip of water, and come back. Sometimes just moving your body can help new concepts crystallize. 18 | 19 | ### Words 20 | 21 | At all times, you need to be super careful about the words you use. 22 | 23 | #### No jargon 24 | 25 | It's hard, but possible. Don't use words and technical terminology that kids wouldn't understand. 26 | 27 | #### Don't say "it's easy" or "just..." 28 | 29 | For your learners it may be the hardest thing they've ever done. Telling them that "it's easy" is not cool. Saying "just…" suggests that it's simple and they're failing if they find it hard to understand. 30 | 31 | #### No feigning surprise 32 | 33 | Don't act surprised when people say they don't know something. Not knowing something (technical or not) is totally acceptable at Django Girls. 34 | 35 | Be prepared even for questions like: "What is a directory?" or "How do I create a file?". 36 | 37 | #### No well-actually's 38 | 39 | A well-actually happens when someone says something that's almost - but not entirely - correct, and you say, "well, actually…" and then give a minor correction. This is especially annoying when the correction has no bearing on the actual conversation. 40 | 41 | #### No subtle-isms 42 | 43 | Subtle-isms are small things that make others feel uncomfortable, things that we all sometimes do by mistake. For example, saying "It's so easy my grandmother could do it" is a subtle-ism. Like the other three social rules, this one is often accidentally broken. Like the other three, it's not a big deal to mess up – you just apologize and move on. 44 | 45 | > The above two sections come from [Hacker School User's Manual](https://www.hackerschool.com/manual) which is a highly recommended resource for teaching. 46 | 47 | ([Related comic strip](http://dilbert.com/strips/comic/2014-08-05/)). 48 | 49 | ### Learn from mistakes 50 | 51 | As we already mentioned, we want our attendees to really understand what they're doing, so they're not only copy-pasting the code, but they're actually learning something. That's why we chose the "learn from mistakes" approach here. 52 | 53 | Over the course of the tutorial you'll see that we're trying to first steer attendees into an error, bug or mistake. Make the attendee read the bug report and __understand it__. More importantly, we're trying to teach them that bugs aren't scary and that error pages are their friends. This approach will go a long way later on. 54 | 55 | ### Learn that coding is fun 56 | 57 | The ultimate goal of the workshop is not to build a website. It is not to teach the whole of Django. It is also not to teach programming. 58 | 59 | The ultimate goal is to show that code is fun. __To get people excited.__ To show them that programming is not scary and that it is for everyone. To show them how powerful programming skills can be. 60 | 61 | This excitement and passion will then drive them to spend endless hours trying to figure all of this out during and after the workshop. 62 | 63 | ### Atmosphere 64 | 65 | Excitement is good, but stress is bad for learning. We really care about the atmosphere and giving our attendees a great first experience with coding. 66 | 67 | Imagine this: You're trying to do something difficult. You're in a room full of strangers who know how to do it better than you. You don't know how to articulate your questions. You don't know the right names for everything. 68 | 69 | For most people, this is a very uncomfortable and stressful situation. But it doesn't have to be! You're there to make it easier. Here is what you can do: 70 | 71 | - Smile! 72 | - Make eye contact 73 | - Admit that you don't know everything 74 | - Tell them it's ok to make lots of mistakes 75 | - Tell them it's ok to get frustrated 76 | - Use normal language, not jargon! 77 | - Assume everyone you're coaching has zero knowledge but infinite intelligence 78 | - Go at their pace, not your pace. 79 | - Be friendly and kind 80 | - Use their name 81 | - Make sure they know they're awesome! 82 | - Ask them if they need help -- some people are afraid to ask 83 | - Emphasize that there is no such thing as a "dumb" question 84 | - Don't say "Any questions?" Say "What questions do you have?" 85 | - Talk sssssslllllloooooowwwwwwllllllyyyyyyyy 86 | - Wait much longer than you feel is comfortable for questions/comments 87 | 88 | ### Removing the roadblocks 89 | 90 | #### Fear 91 | 92 | A big obstacle that we try to remove is fear. In most situations, but especially school and work, people are afraid of looking stupid. This fear frequently keeps us from asking important questions like "how does that work?" or even just "why?". 93 | 94 | Fear of making mistakes also keeps people from making progress. 95 | 96 | #### I'm not used to work with Windows! 97 | 98 | Your group is using Windows but you're more a Mac or Linux user? Don't worry, you will do fine! Python installation got easier on Windows and there are other coaches to help you in case of a problem. 99 | 100 | #### Impostor syndrome 101 | 102 | Madeline Kunin's research: women self-filter more than men. 103 | 104 | The impostor syndrome is a psychological phenomenon in which people are unable to internalize their accomplishments. Despite external evidence of their competence, they remain convinced that they are frauds and do not deserve the success they have achieved. __Impostor syndrome is particularly common among women.__ 105 | 106 | To fight impostor syndrome: 107 | - Don't accept any learner saying they are too 'whatever' to do it; assure them that they can do it. 108 | - Congratulate people on their achievements and take some time to let them show you what they've done. 109 | - Compliment their work. 110 | - Show them that they actually *know* things. 111 | 112 | ### Answering questions 113 | 114 | We do not roll our eyes or laugh at questions. We do not debate which programming language, methods or technologies are "better". 115 | 116 | We always answer __positively__: 117 | - I’m glad you said that 118 | - Great question 119 | - Hm, I'm not sure... Let's look on the internet/ask someone else. 120 | 121 | ### No back-seat driving 122 | 123 | Imagine that their keyboard is made of lava. LAVA! You wouldn't touch it, right? 124 | 125 | Whenever you take over their keyboard, learners are going to drift away. This can be offputting and even scary. 126 | 127 | We're sure you can explain what needs to be done and instruct them with your words only (it's actually a cool exercise for you too!). If you absolutely, ultimately **must** type something on their computer — chances are you don't — ask whether that is okay with them and explain what are you doing. 128 | 129 | Ask: "Do you mind if I type?" or "May I?". 130 | 131 | ### Show them how they can teach themselves 132 | 133 | Attendees will only spend 8 hours or so with you, but they will have to spend many many many more hours teaching themselves. Fortunately, you can make it easier for them! 134 | 135 | __Make them Google stuff__ - do not give immediate answers just to make things go faster. It doesn't matter if you are going faster or slower -- what matters is whether they're going to fall in love with it or not. 136 | 137 | __Ask about their ideas__ - "How would you solve it?", "What do you think?". Make them figure it out on their own. You know they know it, right? 138 | 139 | __Encourage them to make their own changes and not to follow the tutorial too precisely__ - if they try to add some twists, and don't follow the tutorial at every step, they will learn much, much more. It is easy to copy-paste some code and put it in the correct location. It is harder to add something on your own and make it work. 140 | 141 | ### Meta coaches 142 | 143 | Depending on the organizer's decision and the number of volunteers, some workshops can have meta coaches, who are not assigned to any group. In addition to them being more available since they don't have their own group, often they have more experience with debugging technical problems, so feel free to ask them for help if an attendee gets stuck. 144 | 145 | #### Advice for meta coaches 146 | 147 | Note that as the name "meta coach" implies, your primary role is to be a coach for coaches. This means all of the coaching rules, tips & tricks in this manual apply: meta coaches are available to help, not to take over. You should always acknowledge and communicate with the coach before helping a member of their group, ideally working through the problem together. This approach ensures coaches remain empowered and that in addition to learners getting the help they need, coaches become better coaches. A perfect recipe for a meta coach! 148 | 149 | Introduce yourself to the coaches one-by-one at the pre-event (if there is one), or at the very beginning of the workshop (as everyone is still arriving), to make sure they know they can turn to you with questions. This is also a good time to ask whether there were any technical issues with the installation. Some problems that appear minor during the installation can cause major issues later on, which might mean having to repeat a large part of the tutorial to fix them, potentially re-installing python, virtualenv, django, etc. (other minor problems stay minor, so in many cases small deviations from the tutorial's installation steps are fine). 150 | 151 | As a meta coach, expect to have some idle time during the workshop, i.e. you might get bored at certain points — this is a good thing since it means that everything is working ok and also that you are available to answer questions as they come up instead of participants or coaches having to interrupt you as you are helping someone. Our experience is that most questions and issues come up during installation (before or at the very beginning of the workshop) and at the deployment chapter, but in between these expect to have slower periods. 152 | 153 | Many questions you will get are going to be technical issues: bugs, version incompatibilities, etc. Sometimes these are good opportunities to explain some technical detail, but often they are going to be some pesky detail that just stands in the way of proceeding with the rest of the tutorial. You will have to judge the participants' stance to the question to be able to provide the most effective support: do they want to learn how to figure out the problem themselves, or do they just want to wave a magic wand and move on? Although the aim of the workshop is not to finish the tutorial, and dealing with technical problems can be a good learning experience, sometimes the "wave a magic wand" alternative can be the right choice since dealing with technical issues can become very frustrating. However, make sure that it is the participant and not you who makes this choice. 154 | 155 | This also means that often a quick workaround might be a better idea than some idealised 'proper' fix, which might take too much time. Use your best judgment to decide whether some quick fix will solve the problem (including whether it will cause any issues with later steps in the tutorial) and whether to try a more complete one. 156 | 157 | Note that since the participants are using their own laptop, their systems settings and installed software might cause issues with following the tutorial. Also note that the software installed and configuration changes made during the tutorial might also affect other tasks they use the laptop for after the workshop. As much as possible, avoid changes that might break some other software installed on the laptop and be very careful with changing system settings. Having a participant feel that the workshop "broke their laptop" would be quite catastrophic! 158 | 159 | Often you will be asked only for confirmation — "will this other version work / will this break something" — depending on the technical aspects, this might be a good point to warn (for example when using python 2.x instead of 3.x) or just reassure (for example python 3.4.8 instead of python 3.4.7). When handling questions like this, make sure to acknowledge that the issue raised is valid, and if possible explain why you consider the risk of breakage to be high or low. 160 | 161 | If many participants have the same issue, pro-actively warn other coaches and groups about it. For example occasionally a version change affects some behaviour the tutorial assumes which means an issue might not be isolated to a single participant's laptop. 162 | --------------------------------------------------------------------------------