你已经选好了一个要指导的练习,现在来给出优秀的反馈吧。
到了这一步,你应该已经选好了一份要指导的解答。 如果还没有,请先读完选择要指导的解答,再回到这里。
你马上要第一次给学员反馈了。 这既让人兴奋,也可能相当令人却步。 很多导师(包括最优秀的那些!)在这个阶段都会受冒名顶替综合征困扰,还没开始就放弃了。 如果你有这种感觉,完全可以理解,但几乎总是没必要的。 你会担心自己的反馈是不是足够好,这本身就说明你给出的评论很可能既用心又谦逊,学员会非常受用。 而且最坏的情况下,学员也可以随时结束讨论,把它退回队列,交给别的导师。所以,放手去试吧!
首先要记住的,是作为导师要有正确的心态。 学员希望你能帮他们增长知识,告诉他们一些他们还不知道的东西。 你的工作不是给他们的作品“打分”,而是以他们的解答为基础,帮他们打开思路,去理解那些他们不熟悉或正在苦苦挣扎的概念。
另外值得记住的是,大多数 Exercism 用户都是正在学习一门新编程语言的资深开发者。 所以,尽管他们的代码在你看来可能很_糟糕_,但那很可能只是因为他们还不太会写_这门_语言。 同样的代码换一种语言写出来,可能就完全是地道且正确的。 如果把对话当作两个同辈在讨论一个话题,而不是一个人向另一个人炫耀自己的知识,交流往往会更有成效。
学员提交解答请求指导时,系统会提示他们告诉导师,自己希望从中得到什么。 作为导师,你一定要读一读这段话,并尽量在反馈中回应它。
不过,Exercism 上指导的核心价值之一,就是导师能帮学员发现他们从未想到过的思路。 于是你可能看着学员的解答,读着他们询问“有没有什么可以微调的地方”的评论,心里想:“哇,你其实根本没抓住这个练习的重点。” 可能他们完全没抓住这个练习的重点。 在当导师的过程中,你会看到一些极其“过拟合”的解答:它们能让测试通过,却完全没抓住挑战的重点。 也可能看到极其复杂的解答,明明几行代码就能重写。
作为导师,你的任务是帮助学员从他们当前的水平向前走。 你能做的、最能帮他们打开思路或打破思维卡点的那件事是什么? 你会发现,如果你能向学员讲清一个概念,让他们脑子里“灯泡一亮”,这场讨论会带来极大的成就感。
指导的目的不是让学员得到最优解,而是让他们学到新东西。 直接把正确答案给学员,既没有用,也帮不上忙。 Exercism 鼓励学员去看别人的解答并从中学习,所以你给出一份好解答并不能增加价值。 作为导师,你带来的价值是帮他们换一种方式思考,帮他们从不同的角度看问题。
在给“提示”还是给“讲解”这件事上,不同的导师有不同的做法。 一般来说,目标是介于两者之间。 要确保你告诉学员的信息足够让他们明白该尝试什么,但尽量不要直接把答案给他们,再解释它为什么可行。
例如,假设你在 Ruby 里看到一个if语句,用三元运算符写会漂亮得多:
# Student's code
if a
b = 1
else
b = 2
end
# Mentor's suggestion
b = a ? 1 : 2
你完全可以直接说:“把第 10 行的if语句换成 b = a ? 1 : 2。”但这样并不能帮学员理解其中的_原因_,也不能让他们自己产生顿悟。
更好的做法是引入三元运算符这个概念,再给学员出一道小挑战。 例如:“我觉得你可以用三元运算符把第 10 到 14 行缩减成一行。那会是什么样子呢?” 这样学员就得自己动手试、自己解决,而你已经给了足够的信息让他们下手。
反过来,如果说“把第 10 到 14 行缩减成一行”,学员根本不知道该怎么做到,可能会非常挫败。 尽量确保你给出的信息足以让学员向前推进。
不同的导师有不同的风格,但我们默认的建议是:对每一次迭代,给出最重要的 1 到 3 条反馈。 如果学员提交了解决这些问题的新迭代,你可以再给 1 到 3 条反馈。 这样拆开来看,学员不会觉得压力太大,同时每次也有足够的事情可做,能做出有意义的改动。
随着指导经验越来越多,你会逐渐体会到学员对不同反馈的各种反应,并形成适合自己个性的风格。
做 Exercism 导师最棒的事情之一,就是有一群其他导师组成的社区可以让你学习。 如果你对某份解答有疑问,或者只是想和其他导师交流想法,就来我们的论坛随便问吧! 你在那里多半也能遇到可以帮助的人 🙂