為什麼你可能不需要「寫程式」補習班?

Denny
The Bayesian Trap
Published in
9 min readAug 8, 2017

隨著資訊流通速度更快,知識變得更容易取得是一件好事,但是利用別人的一時迷惘來取得利益就是另一回事。

  • 我會以自己曾經做傻事、學習以及工作的經驗出發,來說明為什麼不該鼓勵「迷惘」年輕人去寫程式。
  • 如果你正打算花下大把的費用、時間去上課,或是你跟我一樣對這種現象有一些意見,也許這一次在網路上的交流會對我們彼此都很有幫助。

還是一樣先說明我想說的:

真的不要再叫迷惘的年輕人去學寫程式了。

這裡指的「寫程式」並不是指「程式教育」,而是所謂的「程式速成補習班」,(以下簡稱「補習班」)同樣是在做程式教學的,還有另一種根本就是在做良心事業的「教育機構」,看完文章後應該很容易做出判別來。

真的想試試看寫程式,網路上很多資源可以看,看個心裡有底之後再砸錢也不遲。

關於迷惘

要談到為什麼「學程式」會是一個精神鴉片,就得從問題的根源開始說起。

很多人大學一畢業,或是到大四時候會發現自己很迷惘,不知道自己以後能做什麼。

這些人大多會以為自己的問題在於:「自己沒有培養一個專業能力」,但實際上是:「大學四年,甚至是人生的這 20 多年來,可能都沒有想過自己到底想做什麼樣的工作、成為什麼樣的人。」

這些東西是書本上找不到,老師也沒辦法教你的,套一句愛因斯坦說過的話:

The value of an education in a liberal arts college is not the learning of many facts, but the training of the mind to think something that cannot be learned from textbooks.
大學教育的價值不在於弄懂許多已知的現象,而是培養你的心去思考那些無法從課本上學到的東西。

講到這裡,明白人應該都知道重點不在於技能,在追求「專業能力」之前,搞清楚自己到底想幹麻才是更重要的事情。而只有一件事情比沒有獨立思考的能力更可怕,那就是以為自己有。

在臉書上有看到一位朋友,非常喜歡轉貼羅輯思維、李笑來之類的文章,整天都在談論增長「見識」的重要性,可是他的文筆卻奇爛無比,以至於沒有人看得懂他在講三小;這樣的人到底是見識高到大家看不懂,還是單純沒見識,答案很明顯了。

為什麼要想清楚才來學習寫程式?

程式語言專家、大評論家王垠說:

編程不過是一門失傳的藝術的別名,這門藝術的名字叫做“思考”。
—— 王垠 《
我為什麼不在乎人工智能

思考才是寫程式的本質,但盲目的鼓勵從事這一行顯然不是鼓勵思考的行為。

有人會覺得自己至少學到一門專業技能;但也就是因為這樣,低估了去參加這些特訓班所付出的機會成本。

可能有人會覺得不過是幾個月的時間?有差嗎?

很久之前投資有一句玩笑話叫做「住套房」,意思就是買完股票之後,股價下跌,不甘願認賠賣出,繼續持有這些股票,意即這些股票「套牢」了。

上完這種「程式補習班」,可能會有以下幾種理由讓你無法放棄(就像在住套房一樣):

  • 「已經花錢投資自己」
  • 「手上已經有一些技術,如果現在放棄就太浪費」
  • 「老師告訴我每個人都可以成的,一定是我還需要一些磨練而已。」

還有一個也很常被拿來當廣告主打的理由就是「學程式可以跟上科技的浪潮」,說真的,一知半解的話還不如不會,平生工作最害怕就是遇到說:「我以前也有寫過程式」、「我以前也有技術背景」的人,了解科技的進展有很多種方式,許多人不需要寫程式也可以跟上科技的浪潮。

總之,到最後浪費的時間絕對不是半年一年就可以解決。

學技能跟買東西很像,只是花的是時間、是你一部分的人生;花錢之前好好想一想,會知道自己根本不需要;消耗你的人生在某些事情上前好好想想,可以讓人生順遂一些。

說到廣告,我認為除了「美的好朋友」之外,應該也要有一個「宅的好朋友」,因為這些廣告的話術並不會比那些誇大效果的化妝品來的好多少。接下來就來看個常見的套路。

為什麼「OO 小時,成為全端工程師」以及「實戰班」不實際

雖說一定有例外,但可以講一講普遍的情況是怎樣。

如果學習的終極目標只是要讓東西動起來,那絕對沒什麼問題,但這離真正的工作還非常、非常的遠,但補習班會告訴你:「未來基礎可以慢慢補,東西會動比較重要」。

「東西會動就好」這句話沒有錯的前提是有基礎能做好,但時程安排卻不允許所做出的 trade-off;說得誇張一點,選擇「會動就好」其實也是一種基於專業經驗所做出的判斷。

這些經驗並不是由套路所養成,而是實戰之後所累積。真正的教育應該要給予你的是那些能深入了解的知識、以及掌握後能達到什麼程度。不只給你釣竿、教你釣魚,還告訴你很會釣魚之後可以怎樣,才是真正的做「教育」,如果一切都講求實戰的話,還真不需要特別跑去花錢上課。

偏偏這種 OO 小時的時數都不會太長,畢竟要看起來很輕鬆才行,所以能教的都只是一些基本套路;時數雖然不是越長越好,但一些比較優質「教育機構」所開的通常都不強調時數,而是強調其內容。

再來就是另一個爭議的點:「全端」,補習班所謂「全端」指的通常是「網頁前端」、「網頁後端」。

這些補習班有個很取巧的部分,就是他們通常會教一個網頁框架,叫做 Rails(Ruby on Rails)。如果你不知道什麼是「框架」,可以把「框架」想像成一個神奇工具箱,只要輸入幾個指令,就能夠快速生出一個網站來。

我不否認學習這套框架的話能夠「簡單」地生出一個包含前端跟後端的網頁來,但使用跟活用是兩回事。事實上他們只是會用這個工具箱,對於網頁的「前端」跟「後端」幾乎是完全不了解,只要需求一變動,往往就被殺了個措手不及,而這樣的情況只是被框架所框住,而不是真正的在運用框架。

那需求到底多會變動呢?看到這句話不知道為什麼笑著笑著就哭了⋯⋯嗚嗚

Few things are guaranteed to increase all the time: Distance between stars, Entropy in the visible universe, and Fucking business requirements
-
Modern Software Over-Engineering Mistakes
少數幾個東西是一定會隨著時間流逝而持續增加的:
星星間的距離、可觀測宇宙中的熵⋯⋯還有幹他X的商業需求。

更不用提部署、測試,以及各種運維的事務都是要有實際的環境才能養成。

總之這些技能都沒有好或不好,但 「OO 小時成為全端工程師」的課程單純就「內容」上,以過去自學的經驗來說,真的是看文件、google 大概一周內能解決的事情。

他們所謂的「實戰」,跟羅胖的那種「知識付費」其實有一點像,都是讓你感覺有在思考,感覺好像很上進、努力,仔細思忖卻會發現自己其實沒有任何長進的虛耗。

總之,稍微瞭解之後會明白自己到底需不需要花這麼多錢和時間去「上課」,唯有明白自己的「需要」後,去「上課」才會有收穫。

薪水

不避諱地說,其實很多人選擇轉職工程師的原因就是薪水。

之前在 ptt 上看到 Dr.Tech 寫下影響薪水的因素,可以供參考一下:

地區 >>>>>> 產業 >>>> 公司 > 個人能力

如果這是唯一的考量,我完全覺得沒有問題,不是每個人都能夠把興趣跟工作結合,但其實軟體工程師跟其他職業並沒有那麼大的不同。而且如果認為本來就是平庸的人,只是換個職業薪水就要三級跳,那真的就是癡人說夢。

這裡不說豬屎屋或是高級大外商,只說普通的純軟,而且限縮在程式補習班最盛產的網頁前後端。

講白一點,大部分公司做的事情都沒有任何技術上的挑戰性,只是需要便宜的人力來把事情做完而已。(這不是一種批評,真的是這樣嘛)而這些剛從程式補習班畢業,需要地方「實戰」的人自然就被盯上了,薪水大概就是 30,000 到 50,000 之間(中南部可能更低一些)。

聽起來好像比服務業或其他職位薪水高一點,發展性呢?

前述的那種經驗其實就是在撿屎而已,撿屎雖然辛苦,但放在履歷表上還是屎,除非你撿的是有名氣的屎,否則並不會加分;還有這一行並不是年資越久就代表資深,技術的東西迭代的速度可能超乎你的想像,「套路」這種東西,一年前學的東西,現在可能就已經過時不能用了。

所以,想要投機地能有一個不錯的職涯,隨著技術不斷演進、隨時有可能被淘汰的工程師顯然不會是一個好選擇。

最後一個角度是「出國工作」,「寫程式」相較之下不需要那麼多「語言能力」。想想是還不錯,走向國際又有競爭力。

除非你超厲害或是超便宜,不然為什麼要找一個不太會講當地語言的?前者值得驕傲,後者的話就點到這裡為止好了 QQ

那我們需要課程嗎?

需要,好的老師絕對能讓你事半功倍。至少我在實習時,就因為遇到幾位貴人(顆顆、陳楷、潘大、 Ethen 的指導),讓我在學習上能進展的快速很多。

前面提到的許多「程式補習班」其實都有優秀的師資,但被這種「行銷」手法吸引進來的人,往往在掌握套路上就已經花光力氣,根本用不到這些師資。

所以在學寫程式之前,除了要學會獨立思考外,還要學會找資料。至少在「寫程式」之前,先弄清楚「寫程式」到底指的是什麼、學會後能達成什麼,否則你根本無法判斷自己到底是不是應該把人生投資在上面。

推薦我很喜歡的一本書:「How to design programs」,這本書才是真正為了沒有任何背景的人所設計的程式書,裡面教你如何去「設計」程式,從入門的將腦中想法轉成具體程式碼,一直到讓你深入去思考「寫程式(programming)」的本質到底是什麼。

如果真的要去上 Rails 相關的課程,可以先跟著這本書(為你自己學 Rails)做一次試試看。

人工智慧

最後,很多人喜歡講說人工智慧的時代來臨,很多工作會被取代⋯⋯(中間不知道略過多少字),結論居然是每個人要有寫程式的能力,幹,第一個被取代的明明就是完全不懂思考的人好嗎?

叫每個人都去寫程式而不去探索自己的價值完全是在害大家被取代啊!

補充資料

這是我在網路上找到一篇不錯的參考,比起各種奇怪網路媒體所建議的路線,這條顯然踏實的多。不是一定要唸 CS 才能當軟體工程師,但要理解他們在大學裡付出的努力,以及他們掌握的是什麼樣的知識,才能更有方向的探索這個產業。

這其實是一門課程的教材,從環境架設到更深入的理解都有。敢把教材放出來足見教學者仍然對收費課程很有信心,就算把這個教材公佈出來也不減課程本身的價值。

哈佛的 CS 入門課程。不是一門輕鬆的入門課,從理念到實作,以及我前面所說「學會這樣知識之後能做到什麼事情」都包含在裡面。

--

--