那些年我們學不會的程式設計

程式設計似乎真的很簡單,不管是學校,補習班,參考書或教學影片,個個都宣傳幾個月,幾星期甚至幾個小時就可以學會,而且連小孩子也可以,不像談戀愛還要等到18歲。

今年 Apple 的開發者大會有個 9 歲開發 iOS App 的小女孩

(圖片來源:FastCompany )

坦白說,以彼得潘之前教 iOS App 程式設計和寫書的經驗,並不是每個人都能學得好,還是有學不會學不好的例子。

所以到底是什麼原因造成的呢 ? 難道真的像 JJ 唱的,”總是學不會,再聰明一點。” 嗎 ? 其實真的跟聰明才智或傳說中的程式基因無關,彼得潘自己整理分析後,列出以下幾點可能的原因和大家分享 :

1. 疏於練習和複習,中了遺忘曲線的詛咒。

我們都經歷過小時候學習數學英文時,由於疏於練習和複習,愈來愈跟不上進度,老師從一開始說人話的地球人變成說火星文的外星人。然而當我們變成大人後,似乎就忘了這些慘痛的教訓,天真的以為只要付出昂貴的學費,準時地坐在教室椅子凝望帥帥的老師,就能自然地吸收老師的功力,學會程式設計。其實程式的學習就像爬山,是段由淺入深,愈來愈難的過程。後面的課程要聽懂,往往需要理解前面教過的內容。程式學不會從來不是因為聰明才智不夠,而是因為遺忘。

科學家早已做過實驗,發現所謂的遺忘曲線。1小時後 56 % 被遺忘,一天後 74 %被遺忘。而且程式一定要自己思考,從無到有親手打才能記住,用看的或是複製貼上完全像相思一樣無用。想要克服遺忘曲線的詛咒其實很簡單,只要記得每天撥出一點時間複習練習實作,效果即可倍增。

維基百科上的遺忘曲線介紹

2. 程式尚未學成,英文仍須努力

學程式所需的英文真的不難,不用 TOEIC 900 分,但是至少要有國中程度,了解基本的單字和文法。剛開始學習時尚可依靠中文教材,或者挑選像彼得潘這樣講中文的文青老師,但是程式學習的過程時常會遭遇各式各樣的問題,需要看懂英文才能解決,比方幫助我們實現軟體功能的各種API (應用程式界面),程式開發工具顯示的錯誤訊息,Google 大神在網路上幫我們找到的解答和教學文章等,總不能每次都找外文系的同學幫忙翻譯,除非你想要追她,因為她是你的沈佳宜。

就現實面來說,完全不懂英文還是能夠學會程式設計,但將面臨以下缺點和瓶頸:

(1) 學習的速度比較慢,因為時常需要停下腳步查詢英文技術文件的單字。

(2) 只能學習過時的第二手技術,比較難自學,因為第一手的酷炫技術和教學文件常常都以英文撰寫,而且說實話,程式界的大神以金頭髮和沒頭髮的居多。

(3) 可以成為一個月三萬多的新手工程師,但比較難成為月入十萬的高級工程師。

3. 不敢問老師,只能一顆心撲通撲通地狂跳

學生在課堂上不敢發問,其實是非常嚴重的問題。一般程式課程一堂都要兩三個小時,如果前半段的內容不懂,後半段就像鴨子聽雷一樣,很難接下去,除非你會神回應。

的確舉手發問就像表白一樣,需要勇氣,有太多太多的害怕,害怕被同學老師笑,害怕拖慢上課進度,但是就像書籍 “你所煩惱的事,有九成都不會發生。” 寫的,你害怕的事彼得潘教課時從來沒遇過。相反的,同學們會敬佩你問問題,覺得你很勇敢,感謝你問了她不敢問的問題,解開她心底的疑惑,甚至因此愛上你也不一定。至於上課進度的問題,那是老師該煩惱的。一個好的老師應該懂得適可而止,了解何時該停止解答繼續上課,若有需要也會課後為你耐心解答,直到你開始懂了他才捨得離去。

問題就像腳掌上的一根刺,唯有拔出刺,解決了問題,我們才能繼續往前走,學習進階的技術,就好像不懂數字的加減,想學九九乘法表根本是癡心妄想一樣 ! 倘若是報名上課的學生,請一定要勇敢地發問,別讓學費丟到了水裡。不管在課堂上,課前或課後,都可以照三餐問候老師。只要老師沒有被你問到流淚,你都可以放心發問,因為 “不問你為何流眼淚 ~ “。

4. 自學遇到問題卡關

現在有許多現成的程式教學書籍和影片,一輩子也學不完,而且學程式的人都很孝順很有愛心,大家都想省錢孝敬父母和男女朋友,所以最近有愈來愈多人採用自學的方式學習。雖然大家都自學不上課,彼得潘也許就要餓死在路邊,不過說實話,自學真的好處多多,諸如省錢,何時何地皆能學習,學習速度自己掌控等。(對自學和上課的比較 PK 有興趣的,可參考 App 怎麼學? 上課還是自學?)

然而,遇到問題卡關可說是自學者學不會的最大阻礙。因為他們沒有老師可以問,所以卡關時如何破關就成了成功與否的關鍵。以下彼得潘列出兩個可幫助你化身關羽,過五關斬六將的方法:

(1) 在網路上發問

網路上有許多方便發問的平台,像是 Stack Overflow,FB 社團和粉絲團,Slack 聊天室,PTT 等。其實大部分的人都很願意回答問題,因為可以享受英雄救美的感覺。根據彼得潘研究,正妹照片發問的效果會更好,大家下次卡關問問題時不妨換個大頭照試試。(關於台灣程式設計相關的 FB 社團和粉絲團,彼得潘整理了一份清單,歡迎大家參考。)

(2) 參加技術社群和讀書會,多認識看得到摸得著的朋友,面對面交流發問。

雖然網路很方便,不過已讀不回其實還滿常發生的,而且有些問題還是得面對面討論才能解決。建議多參加一些技術社群和讀書會,多認識一些看得到摸得著的朋友。就像古人說的,”聽君一席話,勝讀萬卷書”,有時候短短十分鐘的面對面交流,就能讓你豁然開朗,眼睛為之一亮。

5.沒有興趣

很多人覺得程式很無聊,不有趣,提不起勁學習。其實程式只是工具,有趣的是學會程式後,我們可以做的事情。以學習 iOS App 為例,大家可以想想你學會技術後,想開發的有趣 App,想像 App 帶給你的金錢和成就感,想像其他人用了你的 App 後得到的快樂和臉上的微笑。古時候有句名言,”錢不是萬能,但是沒錢卻萬萬不能。” 程式真的是項偉大的發明,推翻了古人說的話。只要學會寫程式,就算你沒有很多錢,還是可以改變世界 !

Apple 大大告訴我們,每個人都可以學會寫程式改變世界 !

如果能克服以上五點,彼得潘相信你應該不太會再日日夜夜做著學不會程式設計的惡夢。大家在學習程式設計的路上,倘若遇到任何問題,也歡迎隨時聯絡彼得潘。當彼得潘回答大家的問題時,其實也在找答案的過程中精進學習,增長了自己的功力,和大家交了朋友,獲得再多錢也買不到的回報和收獲。最後送給大家一句網路界的名言,「你不需要很厲害才能開始,但你需要開始,才會很厲害!」

如果有任何問題,也歡迎在下面留言交流!