1. 程式人生 > 其它 >塵埃落下,我抓住透明的陽光,溫暖留在掌心

塵埃落下,我抓住透明的陽光,溫暖留在掌心

帶著2020年線上教學的“不過癮”甚至些許的“落寞”,懷著對線下教學的期待,迎來了2021年的面向物件學期,現在回想起來,當時心中竟然帶著一些恰似初次走上講臺時的激動。我知道,我的“舞臺”回來了。

說起來,課程從2013年啟動改革開始,歷經7年。雖然遇到了不少問題,但還是做到了“初心不改”和堅持不懈。回首看來,塵埃基本落下,溫暖的陽光把空氣洗刷透明,眼睛似乎可以看的更遠,而內心收穫更多的是溫暖。按照慣例,課程結束時同學們需要完成一篇總結部落格(一學期下來總共四篇部落格),為了避免“無事可談”或“亂彈”,我們為每次部落格都設定了明確的大綱。今年讀罷同學們的總結部落格,有頗多欣慰。很高興看到大部分同學通過一個學期的緊張學習確實“悟”到了架構設計的思維,也領會了面向物件的精髓。

課程之所以能夠取得現在的效果,離不開助教們的智慧和辛勤付出。OO課的助教可能和其他課程的助教是有很大的不同,簡單總結起來,有如下三點:

(1) OO課助教需要站在教育者的層次來思考一門課程的實踐環節該如何設計和優化。我們總是強調,一門課程在設計上的真正挑戰是搞清楚“物件”是誰,不是那些top-10%的同學,而是那些排在中游,甚至是靠後的同學。

(2) OO課助教需要一套方法學來設計專案內容、測試資料和協同工作模式。決心和辛勤工作固然重要,但如果缺乏方法,助教團隊就很容易變成“四肢發達、頭腦簡單”的機器。方法學說起來抽象,但對於OO助教卻很具體,涉及到如何設計專案內容和寫指導書、如何設計測試資料、如何分析專案完成效果、如何把專案作業、實驗、研討等各部分工作有效協調和銜接起來等。

(3) OO課助教的傳承機制內在詮釋了什麼叫“面向物件”。每一年課程一結束就選拔出下一屆助教,並且立刻開始工作(是的,我們是一年工作制)。上一屆助教會有幾位工作出色、方法得當、感悟深厚的同學被“留級”擔任高階助教,把之前的工作方法和經驗傳給下一屆助教,同時下一屆助教需要找到自己的座標和方向,並在課程的發展歷程中致力於塗繪出獨有的色彩。所以,既有繼承,也有發展。

2021年做了一件本應該早就做的事情,把課程從2014年開始的歷任助教“找回來”,並藉此機會重新梳理了課程發展歷程和助教們的貢獻,溫暖滿滿,感悟良多。我必須要說,我們的助教同學是這麼的優秀,在大學二年級階段,就能夠有這樣的智慧和行動力,把如此複雜的課程設計一步步變為現實,而且不斷優化。

教學改革是個永恆主題。OO課的教學改革具有兩個突出的特點,可以用八個字來概括:堅持篤信,靈活實施。我們篤信好的軟體一定出自於高於一般水準的認知和控制能力,即要能夠認識到架構的作用,並能控制好架構;我們篤信好的軟體一定出自於萬千錘鍊之手,即所有的設計思想,如果不能落地實施出來,大多會淪為空談資本,不值一提;我們篤信好的軟體一定出自於一以貫之的工作習慣,即如果沒有習慣性的質量控制意識和測試能力,沒人能夠確保有好的質量。所以歸結起來,OO課程篤信三條:架構設計思維是面向物件的核心,必須通過一次次的迭代構造來錘鍊架構設計能力,測試自始至終必須嚴格要求。在課程具體實施方面,我們注意到同學們的認知水平和實踐動手能力差異,所以安排有引導性的線上實驗,寒假pre練習,平時的小訓練,研討課分享經驗;我們注意到同學們需要一個過程才能逐漸寫出好程式,因此採用臺階式的測試來引導,弱測和中測採取反饋的方式,及時告知同學們自己程式還存在的“顯而可見”的bug。強測提高難度來對照需求進行驗收,既有基礎性的測試用例,也有複雜場景考慮。互測用來激勵同學們去發現別人程式的問題(“揮霍過剩的荷爾蒙”)。修復迴歸測試則嚴格按照工業界標準來檢查同學們是否成功的修復了測試所發現的bug。課程之所以能夠做到靈活實施,關鍵是我們的助教團隊總是能夠非常敏銳的捕捉到同學們遇到的困難和識別其中的真正問題(也能及時“回懟”那些看起來似乎正義但實則鼓譟的意見),這確保整個課程團隊可以保持好自己的航向,並集中精力解決問題。

反思是一把無形的利劍。課程在秋季學期的工作以反思和設計為主,而在春季學期(授課學期)的工作以實施和追蹤為主。我們要求老師和助教一起反思,力爭拋掉一切“自以為是”、“自欺欺人”和“自怨自艾”的情緒,反思是我們的武器。我的理解,這是三種常見的教學情緒。“自以為是”的教學情緒往往伴隨著對教學設計的蜜汁自信,實質上往往缺乏科學的追蹤研究和對比調查,不瞭解學生這個核心“受眾物件”的真正感受,自high主導著教學設計。不得不說,OO課程團隊或多或少也存在這樣的情緒,我們必須要非常小心。“自欺欺人”則是另一種情緒,更具有欺騙性,以為自己瞭解真實情況,但實際僅僅看到了一些片面反饋,常常選擇性的過濾教學效果和過程資料來佐證課程的成功,殊不知“欺”自己也許可以,但“欺”他人就沒那麼容易了,這是當我聽到我們的同學評論某門課程時用到“那還能算作一門課嗎”這樣的表達時所真切感受的道理。“自怨自艾”是一種療傷情緒,“早知道,當時…”是經典的口頭禪,這樣的情緒不僅不能療傷,實際上會深度“創傷”,甚至“撕裂”尚未癒合的傷口。團結和鼓勵是OO課程團隊的一個重要文化特徵,不論是老師,還是助教,雖然我們在討論問題時嚴格要求,但建設性卻是主旨,尤為欣慰。每一屆助教工作的起點是反思,結合自身體驗的反思是一種醫者思維,找教學中的問題不難,難的是我們能改變什麼。

多年的OO課教學讓我形成了一個習慣性思考模式,即關注於同學們到底收穫了什麼,而不是我們教了什麼。正如研討課上有同學很深刻的指出,OO課的理論課越來越像“哲學課”,而OO課的作業訓練越來越像“實驗課”。我真的不認為這個差別有什麼問題,甚至於我認為同學們get到了我們的設計考慮。哲學課關注的是思想、思考方式和表達方式,而實驗課關注的是在具體物件上的思考和表達實踐。我們可以看到同學們提交作業的具體程式碼以及測試通過情況,但這些只是反映同學們做了什麼,並不能反映同學們收穫了什麼。我以為收穫一定是一個“壓縮”和“精煉”的過程,把所做事情中的重複要素壓縮掉,從中精煉出核心內容,形成內心所感受到的激勵和自信。那麼OO課在乎同學們收穫什麼?就是我們的三個篤信!我們關注同學們是否和何時“看到”了軟體架構及其設計思維,我們關注同學們是否和何時“聽到”自己內心在寫程式碼時的歌唱,我們關注同學們是否和何時“嚐到”課程所講授知識點發揮作用的甜頭。

我們被戲劇性的安排在了過去和未來之間,都是一枚不足道的小小遊標,片刻不得停留滑向遠方。若干個不服輸的遊標聚在一起,真的就可能拉起了五線譜的水平線,於是為美麗音符留下了自由的舞蹈空間,這就是OO課的全部。老師和助教為同學們拉起了水平線和休止符,同學們各自演奏著自己的樂章,或抒情,或澎湃,或艱澀難懂,或直抒胸臆,都是他們自己的樂章,是歲月賦予他們的才華。OO所期望的是,他們能夠在演奏中聽到自己的內心,找到自己的方向,如果再能夠去感召別人,實乃大幸也。