Skip to content

Commit f02a3bc

Browse files
Mentoring FAQ (#423)
* Create mentoring_faq.md * Update mentoring_faq.md * Rename docs file * Prefix hashes * Add mentoring faqs to config Co-authored-by: Erik Schierboom <[email protected]>
1 parent f71f1c6 commit f02a3bc

File tree

2 files changed

+210
-0
lines changed

2 files changed

+210
-0
lines changed

mentoring/config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,13 @@
3737
"slug": "markdown",
3838
"path": "mentoring/markdown.md",
3939
"title": "How to use Markdown in mentoring"
40+
},
41+
{
42+
"uuid": "1088302e-3158-4d5b-b9dc-4c8655e43644",
43+
"section": "mentoring",
44+
"slug": "faqs",
45+
"path": "mentoring/faqs.md",
46+
"title": "Frequently asked mentoring questions",
47+
"blurb": "An assortment of commonly asked questions related to mentoring"
4048
}
4149
]

mentoring/faqs.md

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
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

Comments
 (0)