|
| 1 | +# Mentoring FAQs |
| 2 | + |
| 3 | +[What qualifies someone to be a mentor?](#h-what-qualifies-someone-to-be-a-mentor) |
| 4 | + |
| 5 | +[Can I mentor a language while I'm still learning it?](#h-can-i-mentor-a-language-while-im-still-learning-it) |
| 6 | + |
| 7 | +[Can I mentor more than one language?](#h-can-i-mentor-more-than-one-language) |
| 8 | + |
| 9 | +[Should I try to mentor every solution in the queue?](#h-should-i-try-to-mentor-every-solution-in-the-queue) |
| 10 | + |
| 11 | +[What if a solution has been sitting in the queue for days, even weeks?](#h-what-if-a-solution-has-been-sitting-in-the-queue-for-days-even-weeks) |
| 12 | + |
| 13 | +[What if I have nothing to suggest about a solution?](#h-what-if-i-have-nothing-to-suggest-about-a-solution) |
| 14 | + |
| 15 | +[Should I mentor an exercise I've never solved?](#h-should-i-mentor-an-exercise-ive-never-solved) |
| 16 | + |
| 17 | +[Should I mentor an exercise I've solved, but solved in a different language?](#h-should-i-mentor-an-exercise-ive-solved-but-solved-in-a-different-language) |
| 18 | + |
| 19 | +[Do I have to mentor a solution once I've seen it?](#h-do-i-have-to-mentor-a-solution-once-ive-seen-it) |
| 20 | + |
| 21 | +[What if the student does not understand after I've explained something several times?](#h-what-if-the-student-does-not-understand-after-ive-explained-something-several-times) |
| 22 | + |
| 23 | +[How do I respond if the student gets defensive about my suggestion(s)?](#h-how-do-i-respond-if-the-student-gets-defensive-about-my-suggestions) |
| 24 | + |
| 25 | +[Should the student have the last word, even if I think they're wrong?](#h-should-the-student-have-the-last-word-even-if-i-think-theyre-wrong) |
| 26 | + |
| 27 | +[How do I best phrase a suggestion?](#h-how-do-i-best-phrase-a-suggestion) |
| 28 | + |
| 29 | +[Should I enforce formatting, commenting, and naming conventions?](#h-should-i-enforce-formatting-commenting-and-naming-conventions) |
| 30 | + |
| 31 | +## What qualifies someone to be a mentor? |
| 32 | + |
| 33 | +You don't need to be an expert in a language to mentor that language. |
| 34 | +You only need to be a little less of a novice than the person you're mentoring. |
| 35 | +If there is someting in a solution that you think could be done in a different way, you can suggest it. |
| 36 | +It doesn't necessarily have to be a _better_ way, just an idiomatic alternative. |
| 37 | +That leaves the choice of whether to use the suggestion or not with the student, |
| 38 | +but at least the student has more options to choose from. |
| 39 | + |
| 40 | +## Can I mentor a language while I'm still learning it? |
| 41 | + |
| 42 | +Ideally, you never stop learning a language, even one you already know. |
| 43 | +Some languages put out an updated version every few weeks or months. |
| 44 | +Not only may there be new language features to learn, but there may be existing features you're unaware of. |
| 45 | +Sometimes a student may use a feature, and that will be the first time you've ever seen it. |
| 46 | +So mentoring can be a good way to learn more about a language. |
| 47 | + |
| 48 | +## Can I mentor more than one language? |
| 49 | + |
| 50 | +You can mentor as many languages as you feel comfortable with. |
| 51 | +It's okay to mentor multiple languages you feel strong in, as well as a language you're still learning. |
| 52 | + |
| 53 | +## Should I try to mentor every solution in the queue? |
| 54 | + |
| 55 | +If you can't think of something substantive or constructive to say about a solution at the time, |
| 56 | +it may be better for the student if you leave the mentoring request for another mentor, |
| 57 | +even if that student will need to wait longer for a response. |
| 58 | + |
| 59 | +## What if a solution has been sitting in the queue for days, even weeks? |
| 60 | + |
| 61 | +If the student asked a specific question that you can't answer, you may still want to leave it |
| 62 | +for someone who can answer their question. |
| 63 | + |
| 64 | +Otherwise, the solution may be for an exercise that was hard for you, which you either may not have solved, |
| 65 | +or solved but felt you didn't solve very well. |
| 66 | +In that case, you might look over the solution to see if there is anything you can learn from it. |
| 67 | +If so, you can thank the student for what you specifically learned from their solution. |
| 68 | + |
| 69 | +Or you may wish for the student to explain their solution to you. |
| 70 | +That is kind of a "reverse mentoring", but some students may be happy to explain their solution |
| 71 | +when asked politely and respectfully. |
| 72 | +You could then ask if they considered another approach and why they chose the approach they did. |
| 73 | + |
| 74 | +Or, you still may not understand the solution overall, but you may see some things you can address. |
| 75 | +For example, you might point out to consider using meaningful names for function parameters, |
| 76 | +if they used just `n` or `m`. |
| 77 | + |
| 78 | +If you're not comfortable doing any of those things, it's okay to leave the request unanswered. |
| 79 | +Mentoring is voluntary. |
| 80 | +Just because you're mentoring a language doesn't mean you have to mentor every exercise for that language. |
| 81 | + |
| 82 | +## What if I have nothing to suggest about a solution? |
| 83 | + |
| 84 | +It's okay to say what you like about a solution. |
| 85 | +In fact, saying what you specifically like about a solution is a good way to start any mentoring encounter. |
| 86 | +After doing that, if you have no suggestions for alternative ways to approach the exercise, |
| 87 | +it's fine to just tell the student, "Well done!" |
| 88 | +If the student submitted more than one iteration, |
| 89 | +you may be able to point out in what ways the most recent iteration is an improvement. |
| 90 | + |
| 91 | +## Should I mentor an exercise I've never solved? |
| 92 | + |
| 93 | +Sometimes, looking at a student's solution will inspire you to solve the exercise yourself, |
| 94 | +especially if the approach used in the solution is one that makes the exercise seem simpler |
| 95 | +than approaches you may have already considered. |
| 96 | +After solving the exercise, if the mentoring request that inspired you is no longer available, |
| 97 | +you will at least be ready for the next time. |
| 98 | + |
| 99 | +## Should I mentor an exercise I've solved, but solved in a different language? |
| 100 | + |
| 101 | +Given that what is idiomatic in one language may not be idiomatic in another language, |
| 102 | +it is likely best to have solved the exercise in the language being mentored. |
| 103 | +If the solutions between two languages are very similar, and you know both languages well enough |
| 104 | +to know what is idiomatic in each, then it shouldn't take long to transpose a solution in one language to the other. |
| 105 | +If the mentoring request is no longer available after transposing the solution, |
| 106 | +you will at least be ready for the next time. |
| 107 | + |
| 108 | +## Do I have to mentor a solution once I've seen it? |
| 109 | + |
| 110 | +You may look at a solution and realize you don't want to mentor it for any of several reasons, including: |
| 111 | + |
| 112 | +- The student may have asked a question that you don't know the answer for. |
| 113 | +- The code may be so verbose and/or confusing, you don't know where to start a critique. |
| 114 | +- The code may signal that the student is an absolute beginner who will need a lot of basic guidance |
| 115 | + that you have neither the time nor patience for. |
| 116 | +- The student's comment may be such that it signals the student may be unpleasant or laborious to interact with. |
| 117 | + |
| 118 | +Nothing obligates you to click the "Start mentoring" button if you think the particular mentoring request is not for you. |
| 119 | + |
| 120 | +## What if the student does not understand after I've explained something several times? |
| 121 | + |
| 122 | +There may be times when a student seems almost willfully resistant to understanding your explanations. |
| 123 | +If you feel you've exhausted all the ways you know to explain something, you may decide |
| 124 | +to finish the discussion with a suggestion that the student resubmit their mentoring request so it |
| 125 | +can be handled by another mentor who may be more successful in explaining the difficult point(s). |
| 126 | + |
| 127 | +## How do I respond if the student gets defensive about my suggestion(s)? |
| 128 | + |
| 129 | +Sometimes a student will say they used a more laborious approach than necessary as a way to learn |
| 130 | +more about a language feature, even though that feature is not best suited for the exercise. |
| 131 | +Since Exercism is a platform for learning and not a competitive coding site, that is a justifiable reason |
| 132 | +for not using the most elegant or efficient approach. |
| 133 | +You might make some suggestions on how they used their approach, |
| 134 | +if you see they could have implemented their approach more idiomatically. |
| 135 | +In any case, you can suggest that they can submit another iteration based on the feedback, |
| 136 | +or they can end the discussion to free up a mentoring slot. |
| 137 | + |
| 138 | +A student may adhere to a programming paradigm that may not be best suited for the language or the exercise. |
| 139 | +For example, they may always want to use the object-oriented paradigm, |
| 140 | +and fragment a relatively simple and straightforward solution into a little explosion of classes |
| 141 | +with labyrinthine control flow through multiple methods. |
| 142 | +To the extent that the student is a dogmatic follower of the paradigm, it is usually fruitless to attempt |
| 143 | +to persuade them of a different approach. |
| 144 | +You can try, and they may respond to your suggestion, but if the student digs in, it may be best to move on. |
| 145 | + |
| 146 | +The student may outright reject a suggestion. |
| 147 | +For example, you may suggest using `reduce` instead of `map` and `join`, |
| 148 | +since `reduce` is only one iteration instead of an iteration for `map` and another for `join`. |
| 149 | +But the student may reject that, because they find `map` and `join` to be more readable. |
| 150 | +It's okay to agree with the student that `map` and `join` can be more readable than `reduce`. |
| 151 | +You can suggest they may become more comfortable with `reduce` after more time to get used to it, |
| 152 | +and there is nothing _wrong_ with using `map` and `join`. |
| 153 | + |
| 154 | +It's okay to agree with a student to the extent they are correct, |
| 155 | +and it's okay to make an attempt to correct any misconception or exagerration the student may have expressed. |
| 156 | + |
| 157 | +## Should the student have the last word, even if I think they're wrong? |
| 158 | + |
| 159 | +For an example, you may suggest a student not use [magic numbers][magic-number] such as `60` and `24` |
| 160 | +when solving the `Clock` exercise, but suggest defining them as constants with meaningful names. |
| 161 | +The student may respond that, given the context, it's obvious what `60`and `24` stand for. |
| 162 | +You've made your suggestion and the student has dismissed it. |
| 163 | +There may be nothing to gain, and perhaps goodwill to be lost, by arguing about it. |
| 164 | + |
| 165 | +## How do I best phrase a suggestion? |
| 166 | + |
| 167 | +To suggest something as an alternative which might not necesarily be _better_, you might preface it with "Another approach could be..." |
| 168 | +For example, "Another approach could be to use `every` with `includes`." |
| 169 | + |
| 170 | +```exercism/note |
| 171 | +If introducing a language feature the student hasn't used in the solution (such as `every` or `includes`), |
| 172 | +it would be good to link to a doc that explains it. |
| 173 | +``` |
| 174 | + |
| 175 | +Another way to preface a suggestion might be "Perhaps consider..." |
| 176 | +For example, "Perhaps consider using spread syntax instead of split()." |
| 177 | +If you feel strongly that the student should use an alternative, you might drop the "Perhaps" and start with "Consider..." |
| 178 | +For example, "Consider using a default argument." |
| 179 | + |
| 180 | +For a series of suggestions you may want to vary how each one is introduced. |
| 181 | + |
| 182 | +Bullet points are an effective way to list what you like about a solution. |
| 183 | +They may come across as less friendly when listing suggestions. |
| 184 | +Offering suggestons in a casual, conversational way may make them less challenging for the student to consider and accept. |
| 185 | + |
| 186 | +One word that is probably best not used when offering a suggestion is "should". |
| 187 | +For example, "You should use a default argument." |
| 188 | +Using words like "should" or "must" can come across as overbearing. |
| 189 | + |
| 190 | +## Should I enforce formatting, commenting, and naming conventions? |
| 191 | + |
| 192 | +Mentors are likely to disagree over when and how strongly to bring up matters such as code formatting, commenting, and naming conventions. |
| 193 | +On the one hand, you might want to get the student thinking about such things early on with exercises like Two Fer, |
| 194 | +before they start developing bad habits. |
| 195 | +Or you might not want to intimidate a beginner with all considerations of propriety. |
| 196 | +On the other hand, students doing the more advanced exercises may already know the conventions but choose to ignore them while focusing on the task at hand. |
| 197 | +They may resent a continued focus on conventions as pedantry. |
| 198 | +If a language has one or more formatters or linters, it can be good to choose an exercise where to introduce them. |
| 199 | +Otherwise, if the violation of a particular convention is really bad, you may want to point it out wherever it happens. |
| 200 | +Where mentors may differ is in what may be considered "really bad". |
| 201 | + |
| 202 | +[magic-number]: https://en.wikipedia.org/wiki/Magic_number_(programming) |
0 commit comments