蛻變

心靈

butterfly

去年這個時候,因為 burn out 的關係我離職了,在進行下一份工作之餘我開始思考我該以什麼為目標,說繼續鑽研前端的話我自己感覺是沒啥興趣的,尤其是在這種混沌的生態底下學什麼好像都不對,簡直就是個無底洞,於是我在想有什麼是我學了可以提昇我的思考而不被潮流所影響。

喜好與職位的拉扯

雖然我一直都是前端工程師的身份,不過我老是在不務正業,喜歡到處學我感興趣的東西,不過大部份都是玩玩也沒闖出什麼名堂,似乎我不是真的想學會什麼(有學會當然是最好),而是某個過程我很喜歡。但這樣漫無目的的學習似乎也不是辦法,總得有個目標去追逐才有動力,我對做個工具產品什麼的沒想法,得往更高層次的方向去鑽研,那會是什麼?

似乎就是 Function Programming ,我一直對在 JS/TS 使用 FP 手法非常執著,因為那就是我多巴胺的來源,同時 FP 思維不僅僅能用在程式裡,也能用在一般生活上遇到的大大小小的問題,但單純只是學怎麼用是沒辦法過我這關的,我想找出背後的意義來解釋為什麼用,這樣才能說服我,也能說服別人,所以我想以一個工程師的角度出發去探索 FP 背後理論。

SICP / Racket

SICP (Structure and Interpretation of Computer Programs) 是我 2023 年初接觸的一本書,而Racket 是讀這本書我選(學)的一個語言,雖然只讀了前兩章,但內容實在讓我驚嘆,是用程式在化簡問題而不是算出答案,也讓我對遞迴有不同認知,習題偏向在分析數學公式,這為我打開了學習 FP 數學理論的第一道大門。

fp-ts

雖然是學習理論,但總是要應用到實際程式中,而 fp-ts 就是我第一個使用的 lib,而大家抱怨 fp-ts 的問題就是 DX 太爛,學習曲線太高,但是直到我真正理解一些代數、Functor、Monad 概念時,fp-ts 成為了連結所有知識的橋樑,即使它不是最實用的 library,也是很好的學習資源。

Algebra Chapter 0

這是我第一個接觸數學書,我也是斷斷續續的讀 😅,不過有讀進去總比隨便帶過來得好,這是我讀這本書的策略,老老實實的把每個地方弄懂,而不是被進度追趕,這也是自學的一個優勢吧,就要有點自制力就是了,目前學習到了集合、函式的基礎概念,也對我之後學習範疇論、Functor、Monad 有不少幫助。

Lean 4

因緣際會下被推坑覺得還不錯的語言,剛好符合我想要理論跟程式同時進行的需求,lean 4 也對工具鍊做出很大的改善,讓我無痛在 VS code 做嘗試,目前還在交替讀官方提供的教學文件。

從冷門中找出對自己有用的東西

前面提到的東西對於一般的工程師都很陌生,我自己也很明顯感覺的到我和周遭的人前進的方向不同,也質疑過自己再這樣搞下去我是不是要失業了🥹,但我仔細想想,之前下定決心苦讀 Rust 一年(好語言值得一學再學),不做任何 project ,就只是好好看他們語言哲學與 std 設計,最後也是沒用上,但我有因此沒學到任何東西嘛?我覺得還是有的,只是這些知識以某種形式應用到當前使用的語言。

或許學了有沒有用這件事對我而言我根本不在乎,覺得有趣就一頭栽下去,我總能從中找到有用的東西,這個有用並不是真的去用它,而是把想法帶走,現在的我比起實際用它,我反而更期待能學到新的思考模式,好讓我嘗試套在其他事物上。

前端混沌生態的生存策略

回到本業,我相信大部分人對前端生態已經感到厭惡以及疲乏,我也不例外,而我在漸漸覺察到自己的能力之後所採取的策略是,「只要我能模仿一個簡單的模型出來就不繼續深入下去」,能模仿不代表我不用,而是避免哪天它退潮流了你還能以他的思考模式下去修,而那些模仿不來的只有真的需要才使用它。

面對技術的盛行與衰敗只能「盡人事,聽天命」,盛行的會被人們持續壯大,而那些漸漸衰敗的最終會留下有用的部份,由盛轉衰或者由衰轉盛通常是人們想法變了,沒有什麼對或錯,JS 天天都有人抱怨(那些跑來向我求助的人,10 個 11 個是被現實所逼,被迫寫 JS 好讓他的作品更好),但誰也沒料想到它會紅起來,。

注意,這是我評估過自己的能力所採取的策略,不一定適用於所有人。

如果代價只有時間,為何不嘗試看看

這是我在做每件事時跟自己說的話,以前不僅僅考慮的是時間,而是我會不會用到,即便我可能很喜歡,但通常最後都因為我覺得用不到而放棄了,現在不一樣了,做任何事的代價都有時間,我在猶豫的時候也是時間,如果感覺到一點興趣為何不直接開始呢?

或許之前會考慮實不實用是被其他人所影響,大家所追逐的事物好像都很實用,只有我老是在幹一些奇奇怪怪的事,不過在思維有所提昇後,這個不安定感減少許多。

世俗成功觀念帶來的影響

不管是現實、社交媒體、新聞等等,多多少少都會帶來別人的成功觀念,我自己都會嘗試去抵抗,不過還是隱隱約約對我造成了一些影響,我過得很不自在,好像被束縛住了一樣,直到我拋開成功這個概念,才舒服許多,繼續走自己選擇的路。

我們總是想著要複製別人的成功,因為這樣失敗了可以有個人給你怪罪,不願面對現實的自己,況且條件不同怎麼會有一樣的結果呢,找一條自己認為最好的道路或許是唯一的辦法,找不到就嘗試,試到最後也給你試出一條路來。

未來

我是一個不喜歡去規劃未來的人,所以問我幾年後想成為什麼樣子我通常答不出來,但這樣也給我帶來的不安定感,所以還是得擁有一個核心價值才走得下去。

如果是職涯的話會是「不管我的職稱是什麼,我將會是一個帶別人了解一個事物背後意義的人」。

以現階段的話目前暫定的方向是繼續拓展 FP 相關知識,從理論層面具體落實到實際的程式設計中,讓開發者都能親身體驗到 FP 帶來的獨特魔力,並且使人理解在適度的使用的情況下是不需要掌握多深奧的理論知識,只是需要運用一點想像力。