時間過得好快,上一次更新課程相關的東西是去年十月的這篇:程式導師實驗計畫第四期課程做了哪些改動?,轉眼間就已經過完年,然後整個第四期就這樣結束了。

開頭一樣直接破題,先給一些數字。

之前在上一篇(十四週尾聲時)有提過:

課程正式開始後剩下 110 位同學,其中 77 人選擇 A 求職方案,剩餘 33 人選擇 B 買斷方案。

在課程結束(二十六週)之前,有些同學選擇退出,有些選擇轉成 B 方案,至結業時還在 A 求職方案的同學剩下 60 個。而這 60 個同學中,

  • 有 20 個跟完課程(33%)
  • 有 11 個跟到最後一部分(React)的課程(18%)
  • 其餘 29 個學生進度都在課綱的 20 周之前(49%)

而最後找到工作的人數為 21 人(35%,分母為 60),薪水的部分以中部來說大約是 35k,北部的話範圍大概是 42k~45k,這邊只是給個大概,因為最多人落在這個範圍,但是當然也有低於或是高於這個範圍的同學。

求職成功人數(定義:學習半年之後的兩個月內找到工作)跟第三期的比例是差不多的,一樣都是 35% 左右,算是持平。

求職成功的基本上都是落在有跟完課程或是快跟完課程的那 31 位同學,也就是說如果有把課程跟完,應該就有六七成的把握可以在結業後的兩個月內找到工作。

因此這個計畫要改善的地方很明顯就有兩個:

  1. 提升跟完課程的人的求職成功率
  2. 提升跟完課程的比例

可以量化的數字給完了,接下來講一下我個人心得。

人數的差別

第三期剛開始時總人數大概 60 幾個,而這一期則是幾乎翻倍,有 110 個人。但其實多出來的人不少都是 B 買斷方案,這跟第三期比較不一樣,第三期求職方案大概有 55 個左右,而第四期 A 方案的人數接近 80 個,約為 1.45 倍。

相較於一二期來說,第三期的人數也是翻倍,而第三期的整個氛圍都很不錯,無論是線上的或者是線下的實體空間都是。這讓我在第四期開始的時候也滿期待的,期待會出現同樣是第三期的那種氛圍,至於是哪種氛圍,大概就是有固定幾個人可能很樂於分享,然後算是課程中的領頭羊,可以帶著大家前進。

第四期會有助教的原因之一,也是因為第三期有這些人,我才覺得助教是可行的。

但第四期結束之後我才意識到一件事,課程中的氛圍跟人數無關,而是跟人本身有關,跟每一個人的個性有關。並不是說人數多就會有那種氛圍,也不是人數少就一定沒有,還是要看每一期計畫中的學生是怎樣的。

而第四期跟第三期比起來,我覺得就少了一些這種感覺。當然還是有同學符合我心中所說的那個樣子,只是就比較少一點。這可能是可遇不可求吧,要剛好有這些個性的同學,然後還要剛好在同一期,剛好又覺得個性差不多處得來。

我講這些也不是在說第四期跟第三期比起來有比較差或是比較好,真正能比的只有那些可以量化的數字,而「每一期的氛圍如何」,只是一個陳述,它是中性的,「第三期小樹屋比較熱鬧」、「第四期小樹屋人比較多」,這些都沒有好壞之分。

而其實我們真正要想的問題應該是,如果這種氛圍只能靠特定的某些個性的人,或甚至是靠「緣分」,那是不是太消極了?是不是這種氣氛應該由我們(我與助教們)試著營造出來,而不是倚靠緣分?

助教制度

如同有同學在心得中寫到的一樣,有了助教之後,我有種退居二線的感覺。作業幾乎都是助教改,同學有問題也跑去問助教,會看到我的場合只有教學影片、直播跟每週的隨意聊時間。

而我在之前的文章中也有寫過,我其實是不喜歡這種感覺的。

對於有些人來說,可能覺得這樣很棒,會想說:「這樣太好啦,你有助教就可以運作了,你就多找一點助教,就可以招更多學生,就能躺著賺錢啦!」,如果以賺錢為首要目標的話,確實是這樣沒錯。

但這不是我想要的。我不想變成補習班招牌上的那個名字,然後偶爾露個臉當吉祥物。在某些人眼中這是可以規模化的象徵,是成功的開始,但在我眼中卻正好相反。

我想當的是第一線的老師,是在教學現場教課的那種。而第四期確實讓我有種,我好像漸漸遠離那個現場的感覺。不過助教改作業是必然會發生的,因為學生人數變多了,我一個人沒辦法負荷這麼多作業。而且我改作業其實也不一定會比助教好,因為助教程度其實更貼近學生一點,許多地方會比我做得更好。

想要把自己移回教學現場,可以想想看除了改作業以外有沒有什麼其他方法,例如說不定期直播帶 workshop 之類的,或者是多錄一些教學影片?

然後在提問的部分,下一期會把同學盡量導向公開的 Lidemy 討論區,針對想匿名的同學,我們也還在想要不要提供匿名的機制,最後沒有提供的話,可能會請真的一定要匿名的同學自己額外辦個帳號,反正是公開的,大家都可以來留言。

我想鼓勵這種公開討論的風氣,因為這才是對自己也是對整體來說都有利的提問方式。私訊提問的優點就只有一個,那就是不會被其他人知道你有提問而已。但公開提問的好處是:

  1. 有更多人可以回答你的問題(對自己有利)
  2. 以後的人可以透過搜尋找到這個問題(對他人有利)

還有一個好處是強迫你把問題講清楚,沒講清楚的話就會被回錯誤的答案或者是等待答案的時間會變長,把問題講清楚也是極其重要的技能。

下一期我會跟大家說明,有問題的話請發在討論區,私訊問助教的話,助教也只會叫你去討論區發文,除非是真的私訊才能解決的問題。

期末專案

第四期大概有三、四組同學有做期末專案,一組大概三到四個人,所以這樣算就是大概有十幾個同學都有專案。第三期的話都是個人專案,而且大概才兩三位同學有做而已。

有大家的期末專案其實都有一定的完整度,而且我會要求或建議 GitHub 的 README 寫完整一點,開發時的各種文件也都可以保存起來,底下附上其中幾組的專案連結:

  1. Give++ 二手交易平台
  2. hit the road
  3. Parlando

課程中的期末專案一直以來都是可選的,想做就做不想做就不做,因為既然是合作的專案就可能會碰到那些大學分組報告都碰過的問題,要找到合適的組員其實也是一件要有點靠運氣的事情。

如果時間許可,那當然是有做專案比較好。但許多人光是把課程跟完就已經沒什麼時間了,在這樣的狀況下,我就會建議先在沒有專案的情況下去求職看看,真的不行再說。

講到這個,就要講一下課綱的安排。整個計畫學習是六個月,大概是 26 周左右,而最後兩週是留給大家做 final project 的時間,不過兩週應該是不夠的,大多數可能都花了一個月左右或是更久。而且前面的課程有可能會 delay,所以真正做完 final project 又是更久以後了。

或許之後可以把 final project 提前,在 20 周或更早就讓大家做點籌備?這樣好像更不錯一點。

課程系統

這一期也領悟到了一件事:

該用系統擋掉的就用系統來擋,不要相信自己

例如說我一再跟大家強調每週作業的挑戰題等你一般作業寫完有餘裕再去寫就好,但可能有些人看到有題目就是會手癢想寫,也沒在管進度的先寫再說,然後就拖慢了進度。

或者是覺得自己挑戰題沒解完,這週的學習就不 ok 之類的。

儘管我一再強調過沒這種事,但效果還是有限。這種其實就應該透過系統來解掉,你作業沒寫完就是看不到挑戰題,或者是進度落後就不讓你解挑戰題之類的,讓你看不到題目。

這些應該都可以用系統面來擋掉。

有一個自製的學習系統我覺得滿必要的,因為很多需求一定都是客製化產生的,所以沒有現成的可以用。就算有現成的一定也是只打中幾個需求,沒辦法完成涵蓋到所有的。

下一期的目標之一就是加強學習系統,補上一下我想加的東西。

學習模式

其實我一直在想一件事,那就是我們到底該不該限制學生的學習模式?

例如說有些人可能卡關很嚴重想要跳關,我們是該讓他跳,還是強迫他一定要先做完前面的?

或者是有些人就是很想解挑戰題,是該讓它解(儘管會讓進度落後),還是不讓它解?

我目前還沒有一個明確的答案。但如果要限制的話,我應該會在課程簡章中註明:「這不是一個讓你自由學習的課程,我們會在某些地方限制你的學習方式,因為我們覺得這種學習方式比較好,請你照著做即可。如果不喜歡這種學習方式,那可能就是不適合這個課程」

總覺得怪怪的,但好像又不會。

關於金錢

前面有提過說這個課程的首要目標並不是賺錢,以前也有提過這件事,A 方案的付費模式不是因為「這樣收比較好賺」(事實上也沒有),而是因為「我只想收心甘情願付的學費」。

不過我可能也沒有大家所想的這麼佛系,有時候其實還是會在意這個的。舉例來說,A 方案是建立在互信的前提之下,我相信你每週都有付出足夠時間,也有求職意願,才符合找不到工作免學費的機制。

在這個前提之下如果看到有些付出時間不符合 A 方案卻還繼續待著的同學,心裡難免會有一點小介意。不過這件事我其實也沒有跟大家說,因為我知道有些同學其實想轉 B 方案但還沒跟我說,或者是可能真的有付出足夠的時間,但我不知道。

這部分我自己也還要再調適一下,畢竟可能真的有選了 A 方案但不符合資格又不想付錢的人,但那是少數。如果只為了這少數人而犧牲其他多數人的權益,或者是被少數人影響而導致課程變得不一樣了,那其實是損失更大的一件事。

第四期把原本的每週 40 小時調整成 30 小時其實是個錯誤,是我低估了課程的負荷。下一期會調成 45 或是 50 小時,這才是我覺得該有的負荷量,因為課程就真的是這麼重。

關於求職

這期的求職其實有兩個小問題:

  1. 大家的求職時間撞在一起
  2. 碰到過年

第二點我原本就有預期到了,我想說過年前找好工作,讓大家過個好年,然後年後去上班,聽起來十分合理。但今年也有受到疫情影響,職缺變少了一些,而有些公司可能是年後才會開缺。

然後第一點我倒是沒有預期,因為上一期大家就自然而然地比較分散,頂多兩三個同學面到同一間。這一期聽說有公司收了十份這邊出來的履歷,這是我當初沒有預料到的。

不過想一想,結業時間類似的話會有這種情形好像滿合理的,其他培訓班也都一樣,同時間結業就會這樣,跟其他同學競爭是不可避免的。既然競爭不可避免,那重點就不是「該怎麼不要競爭」,而是「該怎麼提升自我」。

如果能夠把自己的實力提升到超越其他求職者,其實就不用擔心競爭的問題,這是我們需要去思考的。

加強實作過程

在以往,我對作業的要求很簡單,就是:

寫得出來

對於學生實力的強弱,我可能是以作業是否能寫出來來判斷的,寫出來之後再看 code 的品質如何。但第四期我跟助教有幫幾個學生做了面試檢測,我只考一題簡單的實作題,需要 live coding 分享螢幕寫 code,沒想到這成了一個,意料之外的,我覺得很適合檢測的指標。

直接講結果,我覺得滿慘的。而且這個慘的程度,讓我一度懷疑自己的課程是不是走錯了哪一步。

第四期的同學們如果看到這裡,不用懷疑是自己的問題,因為好多個同學都是這樣,所以我覺得是教學跟課程的問題,而不是個人的問題。

那些同學們作業都寫得出來,程式碼品質我覺得也都 ok,在我心中程式實力是 ok 的,可是等到了 live coding 的時候,我跟十億人一樣驚呆了。有可能是太久沒碰原生的語法,也有可能是緊張,也可能是平時就這樣,但總之那個寫 code 的過程,對我來說是不及格的。

我在想有一種可能,那就是平時寫作業可能是一樣的模式,平常也沒感覺到什麼不對,只是時間花比較多。透過時間來彌補了「寫 code 能力」這件事情。但是在 live coding 的時候可能只給 30 分鐘,所以才會看起來滿慘的而且寫不出來,但如果是給三個小時,應該就能寫出來。

而平常看作業的時候,我跟助教們都是看到寫出來的成品而已,成品是合格的,但我覺得過程不合格。之前只要求寫的出來,但這次的經驗讓我開始思考,只有要求結果是不夠的,還要要求過程。

什麼是過程?過程就例如說是:

  1. 看到題目以後,你會怎麼思考?
  2. 你會怎麼查資料?查到資料之後你會怎麼判斷是不是你要的?
  3. 複製貼上之後你會怎麼修改?
  4. 你是先做哪個功能?
  5. 錯誤訊息會怎麼解讀?
  6. 輸出不如預期時,你會怎麼 debug?

這些寫程式的過程其實都是很重要的一部分,但問題是我們平常根本不會看到。因為我們只會看到結果,看到寫好的作業跟程式碼,但看不到它是怎麼被寫出來的。

或許這也有可能是寫作業速度慢的原因,因為這些過程沒有被好好培養,所以就用沒有效率的方式不斷寫著程式碼。而且因為自己也不知道,所以就一直這樣下去。

我把這個視為是以前課程都沒有思考到的一個層面,希望能在下一期試圖找到可以改善的方法。

其他可加強項目

這邊簡單列一下順便附個理由或是背景知識,否則未來的自己會看不懂:

#1 有關於範例

在寫範例的時候應該按照自己在 alg101 教的那套,先拆分成 function 然後再填空,以及開始做之前先分析整個結構。直接開始寫 code 加上 debug 雖然可以忠實重現我平常寫程式的情形,但以教學來說不一定有幫助。或可以兩個版本都附,一個是 live coding 版,一個是規劃版。

另外記得附上範例程式碼。

#2 有關於部署

部署還是很卡,而且大家部署完還是不知道自己在幹嘛。像是這種的東西,雖然說大家查完資料都可以成功部署,但我不禁想問的是,這樣真的算是有學習到嗎?

雖然說本意就是想讓大家查資料自己學習,但有些東西並不是查查資料就能很快學會的。當你沒有任何背景知識的時候,就算把事情做完你也不知道在幹嘛。

在這種情況下,其實直接教學會是比較好的選擇。這樣的話第五期的部署我覺得好像可以直接教大家怎麼做,可能會更好一點。或者不要把部署當做作業,而是「部署後改一些什麼」當做作業,這樣既可以學會部署,也可以透過練習更熟悉這個過程。

#3 有關於課程

考慮再次像第三期那樣把前後端分開變成兩條路,否則以第四期來說,滿多人會在 week17/18 卡關,但那邊其實以前端工程師來說沒有很重要。

但我其實還是滿想留的,我覺得長遠來看其實滿重要的。但或許可以一樣變成選修,覺得有興趣或是有要用到再修就好。

總結

以課綱來說,其實我覺得經過這幾期的改動,第四期算是比較穩定的一個版本了,大致上的順序我覺得沒太大問題,只差一些細節要調整。所以第五期的課綱應該會跟第四期長差不多。

不過最難的也就是這個細節啦,細節本來就一直有東西要調整,然後系統也是,學習系統也有很多地方可以補強。另外,第五期沒意外的話會是「舊制度」的最後一期,第五期結束之後我想把整個課程的東西砍掉重練,整個變不一樣。

這類的規劃之前已經有寫過一點,總之我想做的事情是,把一些基本的部分獨立出來,例如說簡單的 JS、HTML 跟 CSS,我想把課綱中前八週的內容變成免費的,任何人都可以隨時來上的課程。

因此之後要報名程式導師實驗計畫的人,一定都要會這三個東西。評斷標準或許是提供一個整合的作業,要先完成那個作業才能報名。改成這樣有兩個好處:

  1. 為期六個月的程式導師實驗計畫可以教得東西更多,因為有八周空出來了
  2. 可以保證來報名的人都有自學能力(或至少是願意花時間學習的)

在其他課綱部分,我也有幾個想法但是還沒有決定一定要這樣做,其中一個想法是把原本的一連串的課綱拆成「可以跑兩次的課綱」,例如說 24 周,前兩週 CSS 加強,三四五週 JS 加強,六複習周,七八週 PHP,第九周到第十二週 React。這樣十二週就是一個循環,然後十三週開始就照原本的順序跑,十三十四 CSS 加強,十五六七 JS 加強,十八複習周,十九二十 PHP,21~24 React。

這樣有什麼好處呢?好處是課綱自帶複習的效果,你不用怕前面那些原生的東西忘記,因為你之後還會再學到一遍。而且這樣可以儘早加快知識的互相融合,你在學 React 意識到不足的 JS 基礎,可以再第二次 JS 循環時學到,那時你就會更知道為什麼要學習這些。

而且第一遍的循環課程內容可以不用這麼深,把目標放在實作上,讓大家加強實作能力,第二遍的循環才把背後的理論知識補強。

自己寫一寫覺得看起來滿不錯的,搞不好日後就會這樣來設計課綱。

其實看第四期的同學回饋的意見,評價普遍是滿正面的,不過從一個課程設計者的角度來看,太多東西可以再加強了,因為這篇是檢討所以都只寫我覺得可以改進的地方,做得好的上次好像已經寫過了。

一直都有要改的,該如何取捨以及安排順序是值得思考的事。

話說有關於第五期,如果命運的齒輪沒有出差錯的話,這禮拜會開放報名,到時候會公告於 Lidemy 粉專上面,有想要報名的朋友們可以關注一下。