DEV Community

Neil
Neil

Posted on

[閒聊] 學習一門程式語言不應該如此辛苦

學習一門程式語言不應該如此辛苦。

初學程式語言的人總是會習慣性的到網路上問過來人的經驗,想要藉由前人的經驗來加快學習進度,少走點冤枉路。有如約定成俗般,新手和老手們的話題總是圍繞著「練習」打轉,因此焦點不外乎是多看書、大量範例、大量實戰演練、寫題庫、做小遊戲、做專案⋯⋯等。

會有人鼓勵你,要有信心、耐心和毅力,每天不停的練習。十年寒窗苦讀,終會有出頭的一天。有時也會有人喜歡打擊新手,說得經過痛苦的試錯和累積的過程才可能學得會。

我們都有過這樣的經驗,一件事情努力了半天、無論試過多少種方法都只能原地踏步;但某人經過時看了看,指出你思考上的盲點,頓時問題變簡單了,解法再明白不過,甚至當下就能產出結果!

已故的蘋果老闆 Steve Jobs 曾說過:『每個人都應該去學一門程式語言,因為它能教你如何思考』。我認為學習程式語言的重點不在練習而在「思路」,也就是思考的方式。思路對了,只需適量的練習即可掌握核心知識,且能加以運用,可以開始寫真正有用的程式。大量練習只不過是加深肌肉記憶罷了!寫程式又不是運動比賽,不需要那麼即時的反應。

那些走過來的老手們很幸運,經過了幾十道的練習題之後,他們的思路就被打磨成可以實戰的模樣了。『我當年也是天天寫程式才學會的』,他們句句屬實,我毫不懷疑。聽到這,也許你開始落入負面思維之中,想說自己都練過上百題了,但是卻沒有成就感,遇到實戰腦袋就瞬間當機⋯⋯。

這是傳統教育制度的問題。近百年來成立學校的目的是為了要培訓出一批又一批的工人以符合工廠端的需求。那是以「硬體」為主軸的年代,一個工廠所生產的產品種類是非常有限的,也因此反覆地練習、大量的考試和背誦成為了主要的教育手段而顯少注重思考,因為在工廠裡工作的工人只需要「執行」而不是思考。

但是我們現在所處的是以「軟體」為核心的時代,這樣的教育方式就顯得格格不入,它與現代程式設計的需求相去甚遠。因為除了寫 code,我們還得交替地在規劃、歸納、整理和精煉等行為之間來回切換,需要大量的運用思考能力。我們所設計的軟體不但要功能豐富,還得具有變形能力以適應不同客戶的需求,更要能與第三方軟硬體相互搭配來實現更強大的綜合效果。因此這樣的學習環境需要被改變、被升級。

我在想,假如有辦法能把程式設計的「學習門檻」降低,那會是怎麼樣的場景!?不再有一直卡關的新手,他們能快速的跨過這個門檻,有更多的時間來學習其他技能(在軟體業工作不是只會程式就好),而不是把時間耗費在枯燥的解題地獄之中、或是困在沒有盡頭的語法迷宮之中,每天瞎忙卻不知這對自己有何幫助。

我認為我們需要跳脫傳統教育的框架。不可否認的,這世界仍然需要工人,因此傳統教育還是有存在的必要。但是既然我們身處軟體界,那麼我們就應該採取有別於傳統的教育和學習方式來增強自己的技能樹,讓對軟體有興趣的人們能發揮各自的專長來創造出更多更有趣的應用。

那是我所期望的未來。我會利用這樣的一個平台分享我個人的知識、經驗和技能,從 Python 這門程式語言作開端,讓想要開發應用程式的新手們能儘快脫離新手村,使用有別於傳統的思考方式來解決問題,讓軟體延伸到生活的每一個角落。

如果你對此有同感、或很有感觸,歡迎在下方留言,分享你過往的經驗和對未來的看法!

Top comments (0)