pcman 在前面已經講了一個很讚的評估法了
這邊我想就我個人的經驗, 從「興趣」這個角度再多講一點
首先, 我是非常推薦有興趣的人勇敢嘗試的
這邊說的有興趣不只是對寫程式有興趣這麼狹隘, 只要是對電腦有興趣都可以算
有沒有興趣在學習的動能上的差異是非常巨大的
pcman 在分享經驗的時候, 很多人看到的是他醫學院的背景
但我必須要說興趣在裡面也佔了極大的比例
各位可以捫心自問, 自己有沒有信心
在無償的狀況下啃完整份 ANSI escape sequences 文件
自幹出相容 VT1000 終端機的 telnet 連線程式
這個工作是非常需要耐心的(講白話一點就是有點無聊)
但是人家當初靠自學就生出來了, 由此可知興趣帶來的能量有多巨大
OK, 那怎麼樣才能算是有興趣呢?
我認為最重要的一點就是, 你有對電腦的原理好奇過嗎?
你有曾經好奇過, 敲一敲鍵盤寫出來的程式是怎麼讓電腦動起來的?
為什麼大家說電腦只看得懂 0 跟 1? 那電腦是怎麼做加減法的?
為什麼超級瑪利歐 1 代加超過 127 命數字會變成亂碼?
為什麼一堆遊戲的數值上限是 2147483647 這個數字?
為什麼檔案壓縮過之後就變小了?
為什麼沒辦法在 MacBook 上執行 iPhone 的 App? (然後 M1 之後的版本居然可以!)
為什麼 y2k 對舊電腦來說會是一個問題? 2038 問題又是怎麼一回事?
為什麼電蝦常說多核心對遊戲的幫助不如高時脈? 執行緒究竟是什麼東西?
...
..
電腦上會發生的獨特現象實在太多了, 這裏沒有辦法一一列舉
但這些現象都有一個共通點, 那就是背後都隱藏著電腦原理的細節
要是你曾經對這些現象感到好奇, 有曾經嘗試自己找過解答並試著理解原因
那恭喜你, 你可以算是一個對電腦非常有興趣的人
也許有人會想說誰沒事這麼無聊會去查這些知識?
但我必須要說, 這些其實不算是很冷僻的知識
就像機車迷雖然不是機械工程師, 但這並不妨礙他吸收有關機車引擎的知識
像是 360, 180, 270 三種並列雙缸曲軸角度對機車動力輸出有什麼影響?
SOHC, DOHC 兩種凸輪軸設計各有什麼優缺點?
汽缸的點火角度又會有什麼影響?
如果一個機車迷有機會從玩家轉職成工程師, 那他過去累積的知識也是可以繼續沿用的
寫程式也是如此
當然也有人會說, 上面提到的那些東西都是很底層的電腦知識
現代的程式語言都這麼抽象, 工程師平常的工作離那個太遠了
大家討論的是 OO, FP 這些 paradigm 有什麼優缺點
討論框架, 討論 design pattern... 還有各種讓人眼花繚論的方法論
那些知識對轉職, 對工程師的職涯有什麼幫助?
雖然這些基礎知識好像被一層又一層的抽象隱藏起來了
但是他總是會以你想像不到的方式出現在你的面前, 把你炸個滿頭包
最有名的例子應該就是浮點數了
我不只一次聽到過有人因為踩到浮點數的坑而發出哀嚎(當然也包括我自己)
當你遇到 0.1 + 0.2 != 0.3 這個經典問題時
任何框架, 語法糖, 類別與介面等等高高在上的東西都救不了你
唯一的救贖只有啃完 IEEE 754 標準, 才能真正了解如何隨心所欲的使用浮點數
這時興趣的價值就出現了, 對大多數的人而言 IEEE 754 堪比有字天書
但你如果是一個曾經出於興趣自己研究過電腦如何處理數字的人
雖然讀 IEEE 754 仍然是一個痛苦的歷程, 但你會更懂得欣賞浮點數設計的巧思
同樣是學習, 別人可能充滿痛苦, 但對有興趣的人來說卻可以在其中找到樂趣
進而變成一個正向循環
所以我會說, 如果你是一個對電腦有興趣的人
真的是不用想太多, 寫程式什麼的學下去就對了
在寫程式的時候你快樂的時間絕對比痛苦的時間長
喜歡電腦絕對是這個世界上前幾划算的興趣
一個再怎麼喜歡機車的人, 他也很難打造自己心目中理想的酷炫機車
但是一個喜歡電腦的人, 絕對是可以從無到有寫出自己專屬的酷炫程式的
--
◤
▏▊ ◤◥ ̄◆ ̄◤
▅▂◣ ▉▊◥ ̄▼ ̄◤
◥◣ SHITEYANYO◢◤▅▅▊--