氣餒止步!該怎樣教文組的人寫程式?

註:文中九成內容是我在課程結束後今年一月寫的,還有文長慎入….

我一直都在想,為何來哥大新聞所The Lede Program這邊三個月到半年,贏過我自己瞎試兩年?同個領域的朋友也(逼)問我這個學程是否有機會移地到台灣複製?答案是可以的,只要有心,用對方法,不管是教程式的老師或學程式的文組人,都可以少走些枉路。

學程結束後,我和The Lede Program 計畫主持人和教師Jonathan Soma 聊過,比對我對暑期密集課程所觀察到的,和他設計課程的邏輯以及其他學生的反饋,總結了其他學習方式很難提供的三點。

教初學者立竿見影的東西

課程大部分專注在「應用」而不是解說「原理」,每個教師對各種主題給學生「最小可懂性解釋」,就快速進入實作。打個比方來說,就是老師可以把你教到很會用錘子,但你還是完全不懂槓桿原力。

以Soma教Regular Expression例子來說,他可能花兩分鐘講就像是進化版頁面搜尋,類似一般你按command + F的功能,再示範兩個簡單例子後(他自己示範的時也示範如何google查詢,和示範出錯如何修bug),就丟給你希拉蕊被外洩的幾千封email文字檔,給你一個任務叫你找出所有提及Obama的email,並匯出成另一份文字檔。提醒你別忘了email是人打的,名字可能會是obama, Barack, President Obama等,而煩人的事,別忘了是人都會打錯字喔!然後露出啾咪表情,等你在課堂上做出來。

當時我心想:「靠,這要做到天荒地老吧…不對,用他剛剛的例子改一改應該做的出來,來試試好了。」估狗兩回,再問隨堂上課TA,叫隔壁同學貼一小段code給我後,連自己都不相信硬是做出來了,頓時有種「新技能get」感覺。算一算從新概念到實作,前前後後不出一節課,而且天天重複這種快而小的「新技能get」感覺,加上社科人會有興趣的範例,讓我開始覺得「寫程式真的有用耶」,漸漸累積興趣。

強大的支援系統(淚推)

初學程式的人,猶如亂入陌生星球。很多疑惑會完全不知道該怎樣問,原本以為是我英文不好,但班上美國人同學也抱怨道:「如果我知道該怎樣好好問問題,我也會估狗解決啦。」這種無助有點像是你遞給一個外星人朋友一罐可樂喝,他卻盯著拉環發愣,不知從何下手,也不知道該怎麼求救。

所幸班上20人左右,卻配有兩個極富耐心與同情心的TA一到四天天隨班上課,上課中有問題就跑到你身邊立馬解決,讓我跟著上課實作時不會落後。因為我們天天有小練習,周周有大作業,下午他們也會每天坐鎮三小時以上的Lab Time,同學們一邊做功課,一邊解答,問題不帶回家。

這些聽起來很普通,但對初心者來說,入門的環境有沒有隨手可得的幫助是極為重要。因為很多時候只是少了標點符號這種雞皮蒜毛的bug,讓人卡關很久,小氣餒又不解除的話,累計起來可是會讓人想完全放棄的。

Role Model活跳跳在你面前授課

我們教程式的老師背景很多元,一半不是哥大的教師,且大多數是來自社科背景,用程式做各種好玩事的人。有研究科技史的學者、數位藝術家、紐時編輯…等,他們會用自己做過的計劃簡化成上課教材,因為不是只做case study的人,所以無論同學問技術或問設計動機,都有問必答。

多元的教師群完全打破我對會寫程式的人的職涯成見,被他們教了之後心裡第一個想法是「啊,原來除了當阿宅工程師,我還有很多路可以走啊~真是太棒惹 ❤」(恕罪勿鞭)

對於我來說,給紐時編輯Chase Davis上課最讓我看到希望和學習動機,講的例子全都是紐時的例子,上課舉例就直接開紐時未公開的Github資料夾或點開紐時文章給大家看,機器學習怎樣幫助他們做新敘事。

但上課的教材不會拿紐時的用,太複雜不可能在課堂內做完。課堂實作的難度大概像是這個:老師用大學城附近的犯罪紀錄(資料已整理乾淨),用clustering找出犯罪類型的熱點聚落。讓後他再告訴同學,身為一個編輯看到這樣下一步是打算怎樣做,是要繼續用更多資料mapping?還是派記者去針對某聚落報導找出成因?

這樣教對於一個想用程式搞新聞的人如我,他完全不需費唇舌說他的有多有用,我大腦自動提起興趣來,變得很好學。

「Role Model活跳跳在你面前授課」這點放第三點,原因一來是最重要,二來是移地實行有難度。哥大在紐約,實在是太有條件找這種跨領域人才,儘管如此,Soma也沒有說找的不費吹噓之力。會教會做又有經驗的人才,很搶手檔期也頗滿,但至少紐約能提供很多人才的備選選項。我混入過很多台灣技術社群,以服務新聞為目的的技術,這些人技術面是完全超格的,但能不能用新聞人懂得語言教學,我就不確定了。

— — 我是分隔線:後記開始 — —

前面囉哩八嗦,不如直接給大家看(獻醜)我學到啥又做出啥,挑了幾個算還可以看的。

第三個月(暑期課程結束)

  • 把紐約市民專線抱怨電話的內容釘到地圖上,包含清理資料、分析、用工具做地圖

第六個月(全部課程結束)

第九個月(閒晃找工作期)

— — 我是分隔線:一點點關於我的程式學習之路 — —

有鑒於太多神人講如何成功學程式,沒有人寫不斷嘗試卻屢屢失敗的困境,所以在介紹紐約哥倫比亞大學新聞所開的The Lede Program的特色前,我要先講講冗長的說一下身為一個社會科學/文學主修的人學程式的坎坷故事,你當然可直接跳到下一個分隔線閱讀,因為真的蠻囉唆的。

拿著水杯的N大男教授:「你一個念英語系的,為什麼要學寫程式啊?」

我:「痾痾痾…. 我想要拿來搞新聞。(搔頭羞赧貌)」

我大學時候亂入外系混進兩門C和Python的課,每次電梯或茶水間(不巧)遇到老師們隨口一問這樣輕巧的寒暄問題,我都支支吾吾,只能擠出敷衍了事的答案。(好答案請參考這篇《為什麼記者要學程式?》)這兩門課雖然都拿了八十幾分,但都是老師念在我是個外系的怪人選修該課程,網開一面給的同情分數,學不起來自然是課上完我也都忘光光。

看了某篇文章說學程式不一定和數學有關,是「邏輯」的問題。嗯,一定是這樣的,我邏輯爛所以程式學不起來,以一個頭痛醫頭、腳痛醫腳的心情,又去選修了邏輯課,想說要好好學,那就從根救吧!拼了心思拿到夯課的授權碼,手上握著授權碼的紙條以為勝券在握,一定能就此學邏輯救程式,殊不知邏輯竟成了我這輩子被當的第一個科目。

大學課堂說不定不適合我愚鈍的體質,又輾轉試了幾家付費或免費的線上課程(你現在估狗到的結果第一頁我應該都有試過了),瞎忙一場,程式還是半行都寫不出來,又氣又餒,不會的東西還是不會,糟糕的還對這事心生恐懼,想說這輩子應該跟寫程式無緣了,那些外國新聞圈做出來又酷又炫的東西,我是做不來了。(兩~行~清~淚~)

憑著再爛不可能比現在爛,拐騙雙親投資我背水一戰做最後嘗試,在紐約讀了哥大新聞所的新聞資工認證學程The Lede Program,半年後現在能用Python做資料分析,用JavaScript做互動圖表,重點是對寫程式重拾(不知哪來的)信心。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.