四個月過去了,來找我學程式的學生們怎麼樣了?

2018 年 9 月 29 號,我、小老師以及學生們,課程唯一一次的實體見面會
2018 年 9 月 30 號,如果你看到重複的臉孔就代表他們兩天都來

程式導師實驗計畫第二期差不多告了一個段落,從九月計畫開始到十一月我做了期中檢討,再到現在一月底,四個月的計畫結束得比我想像中還快。

原本對這計畫的預期是四個月學完我規劃的課程,接著再花一至兩個月找到工作,所以四個月是「學習」的時間,整個計畫其實是六個月,但這次的嘗試讓我知道課綱跟時間的分配其實是有問題的。

先說一下,這一篇基本上不太會有學生求職的成果,而是比較偏向課程本身的檢討跟學生的狀況,簡短的原因是大部分學生都還沒把課程修完所以無法找工作,文章後面會說明更詳細的理由,總之想看成果的話要等到 3 月中。

在檢討整個計畫以前,先帶大家來回顧一下從我寫下期中心得(十一月)再到期末(一月)這段期間發生了什麼事。

(前面大部分篇幅其實比較像是報告,詳實記錄發生了什麼事情以及檢討,想看我個人心得的可以直接拉到最後面)

從期中到期末

期中檢討時我就有說過,課程的問題之一是難度太高學生跟不上,所以在期中時我調整了一下進度,挪出四週來講解 PHP 的留言板並且親自示範 coding,希望能靠著這樣的舉動讓大家繼續往前。

這樣做的成效如何?還行,但不夠好。

我後來補充的那些 PHP 留言板資源讓他們對留言板的理解有幫助,但問題在於留言板本身其實是一個不太適合初學者的東西,它前面還有更多基礎要補(PHP 以及資料庫基礎),所以對進度在前面的學生幫助滿大,但是對那些進度較落後的學生幫助很有限。

那四週過後,我繼續按照著進度開始講 React 跟 Redux,但還是有很多同學卡在前面留言板的部分。在這時那些同學又會有種被拋下的感覺,而這種心理壓力會連帶影響學習,一直持續在這個狀態就會變得愈來愈沒有動力繼續下去。

十二月初的時候我眼看這樣不行,一定要想個辦法試圖在課程結束以前再拚一次,我不甘心課程就這樣子結束,於是我把課程再次做了一些調整:

第一,能力分班

靈感來自於前陣子看的韓國節目 Produce48(Produce 101 跟創造 101 我也都有看),裡面把學生按照能力分成 A 班到 F 班,並且針對不同的班級給予不同程度的教學。

講到能力分班,一般的擔憂都是會不會 F 班就變成了放牛班,畢竟在學校裡面都是這種情形比較多。Produce48 裡面的評審給了一個我覺得很好的回應,她說分班並不是真的要把你們按照能力去分,然後 A 班就永遠是 A 班,永遠比 B 班厲害,不是這樣的;而是每個人的程度本來就不同,所以也需要有不同的教法,分班的目的是為了讓每個人都能得到最適合的教學。

在第十三週的時候,我把學生按照目前作業的進度分成以下幾組並且幫每一組設定了目標:

A班:6人(完成第十一週作業)
目標:在今年結束(12/31)前把 React 學完,明年初開始求職

B班:6 人(完成第八週作業)
目標:在結業日期(1/14)前把課程全部修完,接著開始求職

C班:13 人(完成第五週作業)
目標:在過年(2/1)前把所有課程修完,過年後開始找工作

D班:4人(完成第四週作業)
目標:在結業(1/14)前把留言板這個作業徹底搞懂

F班:4人
目標:需討論

(原本 36 人,扣掉 3 個工程師加強班的之後一共 33 人)

這計劃有兩個時間點很重要,第一個是結業也就是 1/14,從開始到結業一共是四個月;第二個是再往後兩個月:3/14 也就是計劃整個結束的時間。

所以往前推回來,儘管現在進度落後,我還是希望大部分的學生都能在計畫結束以前找到工作,所以才會訂立了那些目標。

我給自己的目標是:在 3/14 以前讓 ABC 班的學生(共 25 人)找到工作。至於 D 班跟 F 班狀況比較特殊(例如說 F 班基本上只寫過一兩次作業或甚至根本沒寫過),所以需要再看看個人的進度來調整一下。

分班的第一個目的我剛講了,因材施教,第二個目的則是讓學生有個明確的目標可以往前努力,我覺得這點滿重要的。有目標才有動力才知道自己要游到哪裡,如果沒有分班還是維持舊的目標,那在比較後面的學生一定吃不消,就會覺得一定跟不上然後很沒有動力。

第二,課程內容重新調整

在分班的消息公佈以後,我有發一個問卷給大家填,希望能知道大家主要卡關的點在哪裡。而根據這些回饋,最多人卡住的地方可能就是課程本身不夠詳細,導致很多東西都要往外去尋求資源,可是學生們又不太知道該如何篩選資源導致花的時間過長。

這一點就是以前我一直提到的,我還是抓不到課程內容到底要講多細,待會會再針對這點來做探討,這邊就先簡單帶過去。

總之為了解決這個問題,我把課程內容重新做了調整,在 PHP 的部分新增了三個專案會由我一步步帶,在 React 的部分也這樣做了。簡單來說就是我自己錄好一些基礎的課程,讓他們可以不用再去花心力篩選外面的資源:

像是這樣的課程,這是 PHP 與 MySQL 基礎的課程

目的是為了減輕學生的負擔,藉由一步步帶著實作讓他們至少能有最基礎的概念,接著還會提供一些進階練習,讓他們嘗試看看自己實作出一些附加功能。

這些課程算是在 PHP 基礎與課程主要作業留言板中間的銜接課程,所以先看之前的影片理解基礎跟原理,再來跟著這個課程做練習,最後才去寫原本課程裡最重要的一個作業:留言板。

第三,寫題目維持手感

不知道哪天突然有的 idea,那就是我想寫一個 online judge system 讓學生玩。先花兩分鐘幫大家介紹一下,這種 online judge system(以下簡稱 OJ)比較有名的就是 leetcode 或者是 UVa,上面有很多道題目,你可以自己 submit 你的答案然後系統會幫你批改,改完之後可以知道正確與否。

這類的題目不一定要很難也不一定要學過演算法才能寫,也可以有一些簡單的題目,接著我就想到我國中時參加的 NPSC,是一個台大舉辦的給國中生與高中生參加的比賽,裡面很多題目的難度其實都很適合給新手練習。

原本想用現成開源的系統,可是要嘛就是不支援 JavaScript,要嘛就是輸出入方式弄的有點複雜,只好自幹了一套簡單的 OJ,用 function 的參數跟回傳值當作輸出入以降低複雜度。

自幹的簡單 OJ,還算堪用

所以 OJ 的目的有兩個,第一個是想讓學生們練習這些題目維持手感,題目簡單歸簡單,但一不小心還是很有可能會出錯。

第二個是希望讓他們覺得這個計畫是一直有在動的。每一個禮拜都會有新的題目,而且進度在後面的學生也一樣可以來解題,不會有被拋下的感覺。

原本的課程規劃後面四週都拿來做 final project,但目前學生基礎都還沒打好,更別談什麼 final project,因此就挪用那些時間拿來重新把基礎打好,而以上三個改動大約在第十三週的時候提出,希望剩下的四五週內大家可以重新燃起鬥志。

提出這些改動以後,有許多學生都感謝我沒有放棄,因為我不想也不能放棄。教學是一場團體賽,任何一方先放棄了,比賽就結束了。就像打 LOL 一樣(還是我應該換成傳說對決,畢竟 LOL 過氣了),我一個人再強也沒辦法一個打九個。

大家有聽過木桶理論嗎?一個木桶由很多木板組成,最後可以裝多少水是由最短的木板來決定,而不是最長的。意思是如果只有我一個人強是沒有用的,大家一起變強比較實際。

以上就是整個課程從期中到期末大致上的發展,我再次調整了課程以及新增一些資源,試圖讓大家繼續保持學習的動力。

那現在呢?學生狀況如何?

以原本計畫來說,一月中應該要修完所有課程以及完成 final project,那有做到這個的有幾個人?零個。

沒錯,就是 0,走入零度空間等到一切分裂的那個零。

原因有兩個,第一個是能跟上進度的學生少之又少,第二個是有跟上進度的同學已經找到工作了,在寫 final project 之前就找到工作了。

儘管沒有依照計畫來跑,但其實也不是件壞事。原本在課程裡規劃了四週的時間讓大家做 final project,到後來我跟大家說不要管 final project 了,原本的課程都上不完了,也沒什麼好寫的,先把課程上完比較實在,所以後來那四週就一樣繼續把前面沒跟到的進度補完,對學生來說多了四週的時間學習。

以這十五週的課程來說,上到最後,幾乎所有學生都能順利修完六週的課程,半數的人可以修到第十週,25% 的人可以修到第十三週,幾乎沒有人能夠全部修完,如果純粹以這個當作指標來看的話,其實還滿慘的,而且可以認定課綱的規劃有問題。

課綱的確是有地方需要調整,這我也絕對承認,之後會有一些部分在講課綱應該要怎麼調整比較好。

那學生現在還是繼續在學嗎?對,當然有一些已經消失滿久了,甚至有些幾乎從頭消失到尾,但依舊有些學生繼續努力著,所以我跟他們說就不要管原本計畫的那些學習的時程了,現在只有一個目標:「3/14 以前找到工作」。

以學生人數大約 30 個來看(扣掉 F 班),有 3 個人已經順利找到工作,5 個近期會開始投履歷,5 個還在持續學習且進度在比較前面,我覺得有希望達成目標,所以計畫結束前希望能有 13 個人(四成)順利找到工作。其他還有大概 11 個人一直在努力著,有望在 3/14 的時候「修完」課程,如果能在那時修完的話,大概 5 月前有機會找到工作。

原本在改動計畫時提出的「希望 ABC 班共 25 人都能在結業前找到工作」看似是不太可能了,可能只有一半也就是 13 人能在 3/14 以前達成這目標,但若是再給其他人一兩個月,我相信他們也很有機會找到工作。

以上的數字只是個大略的估計而已,因為現在樣本數有點少,所以詳細的數據會在 3/14 的時候再 po 一篇心得跟大家分享這個計畫的成果,現在能跟大家說的就是從計畫開始到現在四個月多,有大約 10% 的學生找到工作,薪水範圍是 35k~45k。

所以學生的狀況差不多就是這樣,原本計畫的時程太過於樂觀,實際狀況是大部分人都還在努力學習著,本來是三個月學習 + 一個月 final project + 兩個月求職,現在看來會是五個月學習 + 一個月求職。

我滿期待 3/14 那天跟大家分享這個計畫最終的一些數據,畢竟上一期沒什麼可以分享,這一期人多了樣本數就多了,可以分享的東西也變多了。

講完這些以後,來為自己的課程做些檢討吧。

教學細節的拿捏

上面有提到過我一直認為自己在教學細節的拿捏上這塊做的不是很好,不知道該教多少才是好的。

可以把這些細節看成是光譜,最右邊是教太多,會造成學生只會跟著教學做,一拿掉就不會;最左邊是教太少,學生根本無所適從,光查資料就花一堆時間。

根據經驗證明,如果學生本身能力夠強(像第一名的)或是時間拉長(像從第一期跟到第二期的),現在的課綱是完全 ok 的,但現在課綱的問題在於對大部分人來說還是太快了,梯子的間隔也更大,需要花好一段時間才能往上爬一階。

以前我一直認為你只能在這兩者之間找一個平衡點,教太少就往右移一點,太多就往左移一點,直到你找到那個平衡點為止。可是換個角度想,為什麼不能兩者並行?我是笨蛋嗎?

我以前開始學程式時老師也不會什麼都沒教就直接叫我寫一個留言板,這樣我連怎麼開始都不知道。學習的第一步是什麼?是模仿,所以一開始的教學應該能夠多詳細就多詳細,把你的步驟你的思考方式一步步拆解然後全部示範出來,手把手帶學生做出第一個東西。

在這一個階段,是處於最右邊的,教學詳細的程度將近 100%,每一個步驟、每一個原理、甚至是每一行程式碼都講解,學生幾乎不用自學任何東西。

接著呢?加幾個練習題讓學生根據現有的東西新增功能,所以難度就降低了,這時候不是從零到一,而是從一到一點一,如此一來就能兼顧前面那段完全不會的時光以及後面那段需要放手讓他們自由飛的時候。或者老師也可以先完成一部分的專案,剩下的一部分讓學生填空。

這時候在光譜上是處於中間偏右大約 0.75 的位置,你教了很多但是留一些東西沒有教,那些就是學生必須去自學的部分。

所以當我在帶著做的時候,你就跟著做就對了。做一次不懂,就砍掉再跟一次,還是不懂就再做一次,真的有哪邊不知道是什麼意思的話請務必要來問我。我會盡量做到每一行都讓你理解。有了這個經驗之後,碰到新的東西就不至於這麼迷惘。

再來呢?再來調整成 0.25 的位置,只跟你說我想要怎樣的產品,然後大概有哪些功能,可能會用到哪些技術,其他的東西你都要自己搞定。

我可能只會寫一些 code,或甚至什麼都不會寫。這個階段學生就必須自立自強,但我相信是沒問題的。雖然會碰到很多困難,但因為已經有之前打下來的基礎,解決問題會容易許多。反之,如果一開始就把學生放在這個位置,那寫作業就會變成一件困難又痛苦的事情。就好像我教了 Hello world 然後叫學生寫一個部落格來給我。

總結以上的概念,我認為教學可以分為三個階段。

第一階段溫室期

什麼都教,細節說有多細就有多細,不過一但脫離了這個溫室,學生就什麼都不會。在這個階段的目標是讓學生理解基本運作以及學會基礎技能。

第二階段探索期

基礎漸漸細節越講越少,著重在延伸功能以及一些概念,不會像溫室期那樣手把手教學,目標是成為下一階段之前的緩衝,培養自學能力。

第三階段撞牆期

把學生實際放出去,只給大方向的東西完全不提細節,要自己串 API 串 library 以及看文件,途中一定會繼續撞牆,但有了溫室期跟探索期的培養,受傷就不會那麼嚴重。

以改版之前的課程來說,其實是屬於直接從探索期開始而忽略了溫室期,所以對一些有基礎或是對程式比較有概念的同學其實是 ok 的,只要多花點時間一樣可以搞定。但是對另外一群同學就不是了,需要花很多很多時間在上面,才能自己慢慢跟上進度。

課程的優缺點

一直以來我都很喜歡研究其他人的課程,一方面想看別人怎麼教,另一方面能吸收他人的優點再轉化到自己的課程上。每次看到別人的課程我都會想一下自己的課程到底跟其他人的差在哪裡?跟其他人的課程比較,也可以更凸顯出自己課程的優缺點。

缺點

先講缺點好了,我吃飯的時候也習慣先把不喜歡吃的吃掉,喜歡吃的留在最後面。

第一點:社群

其實滿多線上課程都很強調社群這個概念,而我自己也知道社群之於線上課程的重要性。畢竟傳統課程你每天都會見到同學,但是線上課程不會,所以沒有刻意去做這塊的話,同學之間的連結就會比較弱,也會缺乏一些彼此砥礪的動力。

在社群這塊我做得很差,這點我自己也知道。我想原因之一是我自己本來就沒有很喜歡參與社群,更偏好一個人獨來獨往,所以在自己的喜好之下便沒有把社群這點給帶進課程裡。當然,如果學生自己主動的話還是可以跟其他人有互動,但課程本身並沒有類似的機制去觸發這個流程,所以學生之間的互動就來得比較少。

第二點:課程難度過高

這點我之前也一直有提過了,我只給大方向就要他們自己生出一個作品來,對初學者來說難度過高,所以課程後半段針對這點做了滿多改動,最理想的情形是自己錄手把手教學影片,在前期時讓學生能夠跟得上,而後期才讓學生培養自學能力自己去找資源。

第三點:課程安排太過緊湊

搭配前面講到的課程難度過高,就很容易導致學生進度跟不上,而且還不是一兩個學生,而是幾乎所有的學生都沒辦法跟上。

這一點有同學給了一個建議很不錯,那就是加入一個複習週在中間,那一週讓大家複習之前的進度,當作之間的緩衝,這提議很好。

再來如果把課程安排的鬆一點,可能進度比較快的同學就會覺得這樣反而太慢,所以可以致敬 CS50 把作業加上一個 hacker edtion,難度升高。如果有人進度超前,就可以自己去做 hacker edtion 練習。

第四點:作業強度

如果可以的話,我希望課程裡面出現的那些專案的強度能夠更接近業界一點。有些同學會問我說現在這樣寫作業跟以後工作寫程式到底差別在哪裡,我以前也有過這樣的問題。

而我自己對這個問題的答案是:「細節跟規模」,像是作業的留言板可能堪用就好,可是如果你今天是一間公司推出一個留言板產品,你必須保證它可以承受一定的流量以及有一定的品質,這些都是作業無法比擬的。

所以之後希望能把作業變得更複雜一點,讓整個的感覺更貼近在工作的時候。

優點

第一點:在意資訊安全

我一直認為身為一個做 Web 的工程師,資訊安全絕對是超級重要的一點,至少你一定要對 SQL Injection 跟 XSS 有一定程度的理解才行。

在我的課程裡面還講了 CSRF,也在其中一週帶同學看了 OWASP 的十大安全漏洞,偶爾也會分享 Orange 大大的一些文章,我會帶著學生們稍微看一下那些文章,雖然我自己也不是完全懂,但至少可以讓他們跟著我一起開開眼界,增廣見聞。

在資訊安全的部分我希望能提高他們的眼界,讓學生知道說原來這樣子也會被攻擊,原來連那些超級大網站也有這種漏洞。當他們有這種概念時,在寫程式時就會特別去注重這種安全性問題,在 render 的時候會注意有沒有 XSS,在存取資料時會注意有沒有 IDOR。

不過老實說,在教資訊安全這件事情上我做的沒有很好。之前有個好心的朋友聯絡我,說我學生放在履歷上的作品有 XSS 的漏洞。檢查以後我就跟學生再宣導了一次資訊安全的重要性,我相信他們也能理解,但有時還是會不小心寫出有漏洞的程式碼。

說起來滿諷刺的,我自己覺得課程優點是在意資訊安全,可是教出來的學生寫出來的東西有一堆資安漏洞。以後這方面我會更加注意一點,希望可以把資訊安全的概念深植在他們心中,每寫一行 code 的時候就會考量到是否有被攻擊的風險。

第二點:在意基礎

我的教學路線就是從基礎一路往上打,在學 React 之前會讓你把需要的基礎都先學完,在打好基礎以前不往上走。

這也是為什麼網頁後端我會從 PHP 開始,這個程式語言至今依然是我認為最適合初學者的語言,因為它夠簡單,而且幾乎沒有任何「魔法」在背後。當 PHP 的專案變大而且你又不採用任何框架或架構時,程式碼會變得很亂,而這就是我要的,這就是我想讓學生感受到的。

我認為比起一開始就學框架,從 PHP 先開始會得到更好的成效。因為你進入框架時心中是有一個問題希望被解決的。

但如果是從框架開始,你根本不知道為什麼要用;或是你可能知道,但對這個理由沒有共鳴(kerokerokerokero)。

第三點:在意原因

每一週的作業都會有一個簡答題,你必須回答我們在這週為什麼要用這個技術以及不用會如何。這其實就是我之前寫過的:當我們在學程式時,要學的應該是什麼?

課程的安排是有順序的,每一週都是在為了下一週鋪路。有了前面的鋪陳,才會更理解接下來為什麼要學習這個技術。要用它必須是要有理由的,不然為什麼要用?而且這理由不是:「因為剛好看到」、「因為主管叫我用」,這些理由不夠「強」,必須要有一個強而有力的理由,才能證成使用的合理性。

第四點:透明

我盡可能地把課程的教材、課程的心得跟學生的心得都完整公開出來。沒什麼好不透明的,連課程的缺點我都很樂意直接跟你講。我自己覺得這樣做很好,把優點跟缺點都放在你面前,由你自己去選擇,而不是隱惡揚善試圖去把你拐進來。

關於學生的心得,我很討厭那種內容農場標題的心得文,而且有的不只標題是內容農場,內文也長得很內容農場,一直「這個」、「那個」到底是在公三小。我要的不是農場文,是你的心得;我要的也不是課程的業配文,而是誠實的心得。

我跟學生邀稿寫心得的時候,一定會跟他們說你寫什麼都可以,內容不限,長度不限,好的壞的都可以寫,盡量把缺點給寫出來,因為這樣我才能知道怎麼改善課程。

我從來不怕把這堂課程的缺點展現在大家面前,因為這樣才真實。如果你只想看優點或是只看得到優點就不真實了,那叫做假象,更甚者是欺騙。

我也不會說什麼你沒學程式就是魯蛇,來這邊轉職成工程師就可以變為人生勝利組。不是這樣的,寫程式沒有比較高尚,職業跟薪水不是讓你拿來做比較的,比起這些無謂的比較,找一份讓你能開心的工作比較實在。

如果你寫程式感到開心那當然很好,如果是為了錢想要轉職成工程師那也可以,因為錢可以讓你覺得開心。可是工程師這個職業跟其他職業都一樣,沒有高下之分,沒什麼好比的,人比人,氣死人;蛋糕比蛋糕,氣死蛋糕。想當工程師也很好,不想當工程師也很好。

下次能怎樣改進(如果還有下次)

第一點當然是多錄一些影片並且把課程大綱調整成我前面說的那三個階段,這樣子在課程的進度上應該大家會比較一致,對於進度較快的同學也必須提供加強版的作業讓他們練習,避免他們覺得無聊。

第二點是記得要加上複習週這個很棒的 idea,畢竟休息也是很重要的,在往下一個階段邁進前來個複習週讓大家複習一下,也可以讓進度落後的同學趁著這個複習週追上一些進度。

第三點是可以把 Lidemy OJ 給放進去,從第二週開始就每週指定幾題讓大家去寫,維持手感並且培養這種程式解題的觀念,如果順利的話可能到後半段還可以教一些簡單的演算法像是 DFS 跟 BFS 之類的。

第四點是一二週可以把網頁簡易爬蟲也加進去講,因為我後來發現很多同學搞不清楚 HTTP,這部分我花了滿多心力去解釋,但如果先教爬蟲相關的一些概念,我覺得可以幫助學生們去理解網路這個東西,會知道其實瀏覽器也就只是一個程式而已,任何人都可以發 request 到任何位置去。

第五點是專案的改進,目前貫穿整個課程的是留言板這個作業,我覺得以留言板作為主軸還是很不錯的,但還可以再加上幾個簡單的小專案分散在各週,例如說 Job board 或者是簡易的部落格等等。

課上完了,然後呢?

課程學習的時間結束了,我教學的部分也告一段落,但整個計畫還沒。

要到三月中這個計畫才會正式結束,有許多學生還在努力著,而我也會跟著一起。在這段期間應該是持續提供協助,然後想想我還有什麼可以做的,順便調整一下課程大綱為下一期作準備(如果有下一期的話)。

最近有些學生出去面試,根據他們出去拿到的回饋我自己也想了很多,覺得除了教學這段重要以外,最後出去求職的面試指導也很重要,畢竟有能力是一回事,你有沒有辦法把能力在面試時展現出來又是另外一回事,有些人技術 60 分面試 90 分,有些人技術 90 分面試 60 分,沒有好好表現的話滿可惜的。

第二期這樣帶也把課程又上了一次,大概也抓到幾個一定要調整的地方,覺得課程的前後端比重可以再調整一下,課程的時間長度我也有在考慮調整,總之可以調的地方還滿多的,這期收穫滿滿,人多果然就是收到的回饋比較多也會更容易知道怎麼調整。

心得感想

原本文章其實到上面就結束了,但我先貼給學生看以後有人反映説這篇很像報告比較硬一點,想看一些我的個人感想,我仔細想一想的確也是,所以最後補了這段。

老實說我已經差不多忘記當初開這個計畫時的心情了,不是說初衷忘記了,而是當初的那種衝勁或是那種感動被時間沖淡了。

我只記得我覺得自己有能力設計比別人好的課綱也有能力教,但「我覺得」是沒有用的,我有責任證明這件事情,所以這個計畫的最根本原動力是自我實現,這我之前也講過滿多次的了。

可是儘管現在 4 個半月過去只有 10% 的人找到工作,我依然沒有被打擊到。我認為這件事情只是在告訴我說:「用我的教學四個月找到工作是有可能的,但不是對大多數人都有用的方法」,所以我有可以優化的空間,讓這整個計畫變得更好。

結果對我來說其實沒那麼重要,重要的是中間學習到的過程,重要的是結束以後要如何把課程改得更好。我對教學這件事情是有信仰的,而有無信仰的差別就在於你是否會為了結果而改變。

「我可以幫助幾乎任何想要轉職工程師的人變成工程師,因為我很會教」,現在事實證明我目前無法達成這件事,但我會認為是「我可以做得更好」而不是「我做不到」,這就是為什麼我說這是信仰,或你要說我自我感覺良好也行。

我還是認為我的課綱跟教法相較於其他人有獨特的優勢,但以結果來說目前還無法把這個優勢突顯出來,所以我只能不斷改進以此證明我是對的。但有時候我也會想説這個好像也沒那麼重要,我證明這個要幹嘛?但想了想,我應該只是想證明給自己看,證明我是做得到的。

教學的路程中一直都處於一個迷惘的狀態,不知道自己是不是真的教得好、不知道自己是否真的有幫助到人,每次最開心的時候都是收到學生傳來的訊息與心得,例如說「那個 XXX 的地方教得真好」、「我在你身上學到很多」等等,就跟我看到部落格下方的評論講說我寫得很好也會很開心一樣,無論收到了多少次稱讚,每次都還是同樣地開心,因為我知道我有幫助到人。

我覺得老師跟學生是相輔相成、互相成長的關係,我自己就真的從學生的回饋上面學到很多,無論是做人處事上的或者是教學上的。教學這件事情談課綱談教材都只是基礎中的基礎,你還得留意學生的心理狀況,偶爾來個精神喊話,試圖讓他們維持動力繼續學習,在教學的過程中會突然理解以前自己當學生時為什麼有些老師會那樣做(例如說補習班老師講笑話之類的),角色互換之後滿有趣的。

學生感謝我,我也感謝學生們,教學相長不只是說說而已,我相信我們彼此是真的都學到了很多。

而關於教學我前陣子也想了很多,有想過投靠別人把資源整合、有想過自己跳出來專心創業弄教學,也有想過先把從零到一這塊放著,轉而專注在從基礎到進階,提升其他工程師的實力。不過無論怎麼想,好像都沒想過放棄這回事,不是因為我不想放棄,而是放棄教學這件事我沒辦法想像。

寫部落格跟教學對我來說就是吃飯喝水,不會特別花費心力也不會特別感受到它的存在,算是我生活的一部分,所以我考慮的只有:要寫什麼、要教什麼,而不是要不要寫、要不要教。一定會繼續教,但可能形式不一樣(寫技術部落格也算是教學的一種)。

或許就是這樣才有趣吧,永遠都會進步的空間,永遠都能不斷地調整讓自己變得更好。我目前最期待的就是 3/14 那天計劃第二期結束,相比第一期可以有更多的樣本來跟大家分享第二期的成果究竟為何,無論結果是好是壞我都很期待。

就像以前高中考模擬考時我巴不得考完就直接看到成績,結果是好是壞都無所謂,因為至少我看得到結果。能看到結果就代表你有東西可以衡量,能衡量就代表你能夠調整。考得好你可以自豪、可以整理有哪些地方做得好;考不好你可以檢討、可以想說下一次要怎麼做得更好。無論結果如何都是好的,因為你終究會變得更好。