當前位置: 華文星空 > 知識

對於技術崗位而言,開發崗累還是演算法崗累呢?

2019-11-03知識

很多同學都會覺得科研是很迷人的,而工程是無趣的。 其實對應演算法崗和工程崗很多人會誤以為前者需要更多的對未知的探索就像設計房子,而後者更多的是按照計劃圖紙來施工 。因此前者有意思,而後者是新時代的體力勞動者。

從工業界的角度來說,演算法崗一般的目的是在穩住ABC指標的前提下提升D或者降低E。而所謂的演算法一般指的 不是有固定解的傳統電腦最佳化問題,而是玄學的機器學習 。因為後者的解不是deterministic,你做100次可能得到答案都不相同。為了確定一個新演算法真的有提升,人們開始做A/B測試,開始把一個新演算法分解為多個部份做ablation study(透過控制變量法去理解一個新演算法中到底是哪個部份起效)。

因此我部份贊同「演算法崗是心累,開發崗是身體累」的觀點。但我不同意的是演算法崗的程式碼量會小,核心原因是因為對於結果的不確定性需要大量的調整、實驗、以及測試。這種不確定性帶來的額外工作量真的不如純粹的開放崗需求明確的工作量小。

我覺得(機器學習)演算法崗其實更像實驗科學,需要大量的排列組合,並期待其中某個配比能有效。我知道理論可以指導設計,但很多理論放在現實場景下真的不奏效。 實話實說,我搞研究這幾年感覺自己衰老速度全面加速了,大概這是心累和身體累的雙重加持。程式碼一點不少寫,還得做大量的嘗試得到能用的結果。

所以不要誤以為演算法崗不需要編程,它需要大量的程式碼嘗試各種排列組合。可能你的1萬行程式碼最後有用的也就幾百行,但為了找到這幾百行,你不得不試1萬行。 而很多時候大家不在話你是不是寫了1萬行程式碼,而只是在乎最後的幾百行是否奏效 。除此之外,很多能用的演算法你還真不一定想得出為啥它有效,還得為了證明它有效胡吹一些技術上的創新。

但很有可能你只是手動/半自動的搜尋到了一組不錯的參數

所以我其實覺得演算法崗比較適合實驗科學+商科背景的同學,既熟悉各種排列組合又熟悉包裝內容,更符合演算法工程師的描述。而喜歡嚴謹的1+1,不喜歡做無用功的同學還是開發崗更好,那種一步一個的腳印的感受,其實是挺踏實的。