匿名 ಠ_ಠ

#純靠北工程師8f1

2025-02-08

1個月前

To 8er
前陣子找工作的時候也想過換語言的問題,跟你分享一下,希望能幫上忙

我們這些五六年的開發人員,其實可以很粗暴地把手上的技能切分成兩組

第一個部分是和慣用的程式語言相關的:

你可能已經很熟悉某個語言的生態,包含框架、工具,或是某些常見功能和模式的實作方式,甚至追過熱門工具的原始碼

也可能處理過跟語言特性相關的問題,知道怎麼處理併發、怎麼處理例外,一些常見的架構怎麼用這個語言實現

實作功能的時候,大概能根據需求跟限制,知道現在該著重在效能、可讀性、維護成本、修改彈性

甚至大概知道這個語言有哪些底層帶來的先天限制、跟其他程式語言相比適合的場景和優缺點等等

第二個部分則是相對比較共通的部分:

以後端來說,你可能對常見的資料庫特性、操作更為熟悉,對 API 的設計、維護、版本迭代做法都很有心得

你可能也處理過跟作業環境、瀏覽器、監測工具、第三方套件之類的問題,有組合各種亂七八糟工具來達成目標的經驗

或是你能在抽象層面就能把架構、實作步驟、限制等等都釐清出來,給你一個白板就能整出方向

甚至已經跨出去這個位置,跟需求端溝通、從測試觀點思考、處理過機器跟環境、領導過某個專案的開發、帶過一個小團隊、對某個專業領域的知識有一定認識等等

上面只是用我的理解來舉例,這兩個部份的內容還是會根據經驗、職務、環境、產業而變動(想補充的前輩們也歡迎幫忙)

但基本上先分出跟程式語言相對有關的,跟把程式語言拔掉之後仍然適用的部份還是比較有利於後續的拆解

我們先簡單這樣拆成兩塊之後,應該就能發現:每個人在這兩塊的比例根本就不一樣

有些人可能覺得換語言「隔行如隔山」,也有些人覺得「程式語言不過是工具,想換就換」,其實是他們的技能組合、過往經驗、學習能力並不相同而已

畢竟你會發現有些人是真的超強,而有些人在他擅長的區塊就很讓人放心;也有些人會一邊說換語言、換工具都超簡單,一邊踩到一堆寫過一個月的菜鳥都不會踩的坑

問題其實只有你都累積了哪些經驗、點了哪些技能,你的技能樹到底都放了啥,然後現在派不派得上用場而已

今天我們的目標是想換個語言,那我們就可以先把我們的技能分成語言相關的、跟語言不相關的,從這個比例的資訊來想辦法提升我們投遞其他程式語言工作時的面試成功率

畢竟我們在一定程度上需要重新拓展第一塊那些跟程式語言相關的部份。雖然因為我們摸過了一種語言,可以用這些經驗來加速第二個語言的學習速度,但在一些寫法、風格、實作方式,甚至是踩坑的部份,短期內都一定要花費一些成本

即使你今天是武士刀的達人,丟一把戰槌給你去戰鬥,你還是可以靠戰鬥經驗跟身體素質取勝,但你的一些武士刀技巧就施展不出來,仍然必須得從戰鬥中摸索一些戰槌的技巧

這件事你知道、我知道、面試官也知道
所以針對跨語言的面試,可能就需要著重在第二塊共通部份的火力展示 + 重新補足第一區塊程式語言掌握力的規劃

既然你這篇提到收到了很多原本語言的面試邀約,但跨語言的面試卻很難通過
那也許可以考慮回頭看看自己在這兩個區塊的技能組合是什麼、比例如何
而在履歷、面試的包裝上,現在又是展現了哪個區塊的哪些內容

你也可以想想,如何讓面試官知道你第二區塊的觀念夠強,同時也讓他相信你重新補足第一區塊的水位的速度夠快

你有哪些過往的經驗、成效,來證明你跨語言共通的觀念、解決問題、運用工具的實力和經驗是足夠的,足夠到讓面試官願意用短期內的程式開發效率來交換?

你有沒有對新語言已經有某些筆記、研究、動手做的一些小東西,甚至是整理、比較跟你慣用語言的特性的差異、翻寫了你慣用語言做過的功能等等,藉此讓面試官知道你學習新語言的能力和規劃?

退一步來說,即使你要進去才學習,你會如何規畫你逐步掌握這門新語言的步驟?你過往又有哪些學習新東西並成功運用的經驗來證明?

這些可能都是可以打出破口的地方

本來想匿名分享一些心得就好,結果稍微囉嗦了點。但覺得既然今天都出去面試了,也的確觀察到了一些狀況(慣用語言邀約多、但非慣用語言的面試不順利),其實就是一個重新盤點自己技能樹的機會,甚至可以再想辦法補強、爭取自己需要的經驗

希望能對你或其他看到的人有點幫助,也祝福你能順利找到想要的 Go 職缺,加油