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

Image for post
Image for post

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

Image for post
Image for post
Apple 的 WWDC 開發者大會有個 9 歲開發 iOS App 的小女孩

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

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

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

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

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

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

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

你不需要聽力,口說或是寫作很好,但是最好認識常用的英文單字,因為寫程式會用到很多別人寫的東西,比方 Apple 幫我們寫好實現講話跟地圖功能的東西,這些東西都以英文命名,單字意思知道的話比較看得懂跟記憶。

以講話為例,寫 iOS App 時,我們可使用 AVSpeechSynthesizer 讓 App 講話,若我們明白 speech 是講話,synthesizer 是發出聲音的合成器,將能更容易記得 AVSpeechSynthesizer 是拿來講話的。

Image for post
Image for post

程式學習的過程還會遭遇各式各樣的問題,需要看懂英文才能解決,比方幫助我們實現軟體功能的各種 API (應用程式界面),程式開發工具顯示的錯誤訊息,Google 大神在網路上幫我們找到的解答和教學文章等。總不能每次都找外文系的同學幫忙翻譯,除非你想要追她,因為她是你的沈佳宜。

學程式所需的英文真的不難,不用 TOEIC 900 分,但是至少要有國中程度,了解基本的單字和文法。剛開始學習時尚可依靠中文教材,或者挑選像彼得潘這樣講中文的文青老師,

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

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

(2) 學過的東西容易忘記,因為程式的那些東西也是用英文寫的,認得英文單字比較不會忘。

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

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

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

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

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

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

4. 自學遇到問題卡關。

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

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

(1) 在網路上發問。

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

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

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

5.沒有興趣。

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

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

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

Image for post
Image for post

彼得潘的 Swift iOS App 開發教室

學習 Swift iOS App 開發的學生作品集

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store