會想寫這一篇是由於我發現在學習程式的時候,幫助我最大的,很多其實都不是那些很專業的文章或是影片,這會有一點反直覺,寫的太好太詳細的,有時反而沒辦法讓我理解。

反倒是像我一樣,學習程式沒有很長時間的人,他們所寫的心得或是筆記,竟然我吸收起來會比較快,這到底是什麼神奇的魔法,我開始思考了起來。

理解所需要的養分

曾經有人跟我說過這樣一句話:

「要怎麼證明你已經完全懂了一個概念,你就去找完全不懂這個概念的人,講給他聽,他如果能因為你解釋完後就能懂,那就代表你真的懂這概念了。」

也就是所謂的,今天要是把專業用專業解釋,那還是只有專業的人能聽懂,但如果把專業的東西用很白話來解釋,那麼就不會侷限專業的人,而是所有人都有辦法懂。

學習時可以去看定義是最為正確的,但是要解釋給別人聽時,就得轉化成簡單的語言,其他人才能聽得懂,這是很重要的能力。

在電影《三個傻瓜》中,有一個場景是老師問學生們對「機器」的定義,主角用非常簡單的方式解釋:

任何讓工作變得簡單或是省時間的就是機器。
熱的時候按一個按鈕,電風扇,機器。
和很遠的朋友聯絡,電話,機器。
每秒幾百萬次運算,計算機,機器。

但老師不買單,老師想要聽的是「機器」的定義,所以把主角當作一個問題兒童。

我就學時代其實也有發生過類似的事情,教授在台上各種專有名詞滿天飛,但台下的我是鴨子聽雷,雖然說聽不太懂,但我會想可能是教授講的內容過於硬核,所以才會這麼難懂吧。

於是我回家抱著非得要搞懂的精神,拿起來書起來狂讀猛讀,經過了好幾個小時的努力,我把教授台上講的那個章節搞懂了!但同時我也發現一件令我訝異的事情。

其實弄懂之後,根本沒有我想像的難,然後思考當時候教授在台上的教學,竟然把很多簡單的地方也給複雜化,這樣難怪會讓人很不好懂,後來我就試著把我所理解的概念跟其他一樣課堂上沒聽懂的同學講,他們也很快就聽懂了,那時候我就發現,有時候不是知識很深入就代表最容易讓人聽懂。

理解所需要的本身,除了最正確的知識之外,跟你越靠近距離的語言,越容易被吸收。

所謂越靠近的語言,其實就是學習東西時自身所佔的位置越近越好,有點抽象,比喻來說小明正在學習JavaScript,小明已經學了50天,那今天對他靠近的語言,可能就是同樣是學習了60天的JavaScript的人,而不是已經學習了好幾年的人。

首先,先不論學習了好幾年的人,是不是已經跳過了很多初學會碰的東西,最重要的是小明學習了50天卡住的東西,可能對學習了好幾年來說,已經沒有辦法理解他為什麼會卡住了,因為對他來說已經變得太稀鬆平常。

對我來說,這種人已經失去了「新手」的學習思維視角,就像是打LOL來說,打到牌位菁英的人,已經變成了不管再怎麼想亂打,也沒辦法跟銅牌一樣爛的境界。

這就是我要提到的,寫程式資淺比資深厲害的核心。

老手什麼都好,你確定嗎?

就像是很多時候,往往沒有所謂的「最優解」,得依照情境,去使用符合那個情境最好的解法。

資淺跟資深,新手跟老手也是如此。

當然,資深的寫程式老手,技術力肯定遠遠凌駕於剛學習程式不久的小菜鳥,這是無可厚非,但是要說所有的情境都是,我覺得也不是這樣。

資淺去跟資深尋求幫助,渴望自身能早點也到達資深的領域,這不是一件壞事情,但我想說的是,其實我觀察下來,資淺的新手,也有很多可以幫到資深老手的狀況。

先拉回去剛剛小明的例子,誰才能很有效幫助已經學習了50天JavaScript的小明,我的答案是已經學習學習了60天的JavaScript,而只學了60天的人,那也還在新手的範圍中,為什麼他反而才能有效幫助呢?

我的想法是,因為他才剛度過50天的階段,他最能知道學50天時會卡住什麼,他不需要去猜測剛學50天的新手可能會犯的哪些問題,因為他自己就是剛經歷過來的,所以不管是看他的學習心得,或者是筆記,由於程度相近的關係,會讓其他新手看完的感受很深,更好去做吸收。

這是在很多大神文章看不到,因為大神筆者雖然也想寫的很仔細,但是撰寫的時候他就已經是技術很強的人,所以有些地方,他自己已經覺得寫得最簡單了,不知道還能怎麼再更簡單,但對新手來說跳了太多步驟看不懂,也許等到程度上來之後,這篇大神的文章就會幫助很多,但對於初學者來說這種技術文章就幫助不大,不是不好,只是不適合。

對我來說,這就有點像是小孩大人的感覺,有人會覺得大人各方面都比小孩好,所以渴望自己能夠趕快長大,我當初也是,恨不得一天多一歲。

但是許多大人,在他們長大的同時,也失去了一些東西,像是天真、單純,還有快樂,雖然大人也會快樂,但跟小孩的快樂又不太一樣,離開了那個階段,同時一些東西也會回不去。

那不離開就是好的嗎?

也不盡然,一輩子都是小孩,那就永遠沒辦法體驗到大人才會有的東西,假如永遠停留在新手階段,那麼老手的視角將會沒有可以接觸到的一天。

所以我覺得我們應該去珍惜每個階段所擁有的東西,只是可以把哪個階段一定好的想法先放下,而既然彼此都擁有不同的東西,試著去想是不是有可能每個階段彼此可以互相互補,這樣說不定就可以雙贏。

那程式新手的你,可以做些什麼?

寫程式新手的我們是最多的,但同時也是往往最容易被低估。

被其他人低估,甚至被自己給低估。

程式高手的文章隨便網路上抓就一大堆,但程式新手的踩雷心得或是筆記卻跟日本的壓縮機一樣,非常稀少。

可能是覺得自己不強,不敢寫到網路上讓大家看,不敢展露出自己學習的結果。

或是覺得應該留給高手來寫,才對其他人會有幫助。

那我在這邊,就要站在「新手」的角度跟各位「新手」講:

「沒有這回事,我覺得你們的心得筆記更有給新手看的價值,因為要讓人看懂除了專業程度之外,最重要就是只有新手最了解新手,所以儘量多寫吧,寫很爛也可以幫助得到人,寫很簡單也是很寶貴的新手文,這也是只有我們這個階段才能做得到的事情!」

要記得你在哪邊跌倒,別人通常就會有那邊跌倒過。

所以第一,程式新手應該要多多的在網路上發心得筆記,可以學我一樣創個blog,開始文章寫起來。

第二,儘量去教與你學習時間相近的人吧。

你學兩個月,那你就是學一個月的人最好的導師,同時如果你想要請教,也可以去尋找學三個月的人,所謂的「名師」,不是技術多強多厲害的人,你得變得很厲害,才會開始學很厲害的技術,另外,程式技術很深的人跟很會教的人,是兩回事,很會教的人可遇不可求,而且要記住,很會教的人不代表他就可以理解你所有卡住的問題,這個會在程度差距越大越明顯。

最後,程式新手的你,要做到一件事情,

不要覺得自己現在很爛,要趕快脫離這個狀況,到老手變成高手。

這樣反而對導致變成一個想要速成的心,結果反而會有反效果,或是就直接放棄了。

要想辦法獲得自信心及創造反饋感,像我剛剛提到的前兩點都是好方法。

總結

學習程式的新手很多,而就停留在新手,放棄了也大有人在。

因為看到了似乎有種新手假如變不成老手就沒有意義,以及新手其實都害怕自己太弱的風氣,所以才想來講講我的看法。

我覺得得要知道,就算是新手,也有很多只有新手才辦得到的事情,老手也做不到,要對自己有信心。

新手弱是正常的,但假如你是一個堅持又愛分享的新手,那就非常棒。

要有概念是:

新手也很好呀,大家都是從新手慢慢變過來了。
新手的心得筆記更好吸收呢,裡面的採雷簡直感同身受。

享受自己身為新手的時光,然後透過分享來產生回饋機制,堅持跟持續,這樣的話,每天慢慢就會變得越來越好。