你已經選好要引導的練習了,現在就來提供很棒的意見回饋吧。
到了這個階段,你應該已經選好一個要引導的解法了。 如果還沒有的話,請先讀過選擇要引導的解法,再回到這裡。
你即將給學生你的第一則回饋。 這可能很令人興奮,但也會讓人有點卻步。 很多(最優秀的!)導師在這個階段都會有冒名頂替症候群,還沒開始就放棄了。 如果你也有這種感覺,這完全可以理解,而且幾乎總是多慮了。 光是你在擔心自己的回饋夠不夠好,就代表你很可能會給出學生真心感激、體貼又謙虛的評語。 而且最糟的情況下,學生隨時可以結束這段討論,把它退回佇列,讓其他導師接手。所以就試試看吧!
首先要記住的是,身為導師要有正確的心態。 學生希望你能幫助他們增進知識,告訴他們一些他們還不知道的事。 你的工作不是「評分」他們的成品,而是以他們的解法為基礎,帶他們打開那些不熟悉、或正卡住的想法。
也值得記得,大多數 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 導師最棒的事情之一,就是你可以向其他導師組成的社群學習。 如果你對某個解法有疑問,或只是想和其他導師交換想法,歡迎上我們的論壇發問! 你很可能也會在那裡找到自己能幫忙的人 🙂