最近由於校招如火如荼,一些小夥伴在後臺以及知乎上問我,在開發和演算法之間猶豫,不知道如何抉擇,想要問問究竟哪一個崗位更好?
恰好我之前在知乎上回答過“對於技術崗位而言,開發崗累還是演算法崗累呢?”的問題,於是將它搬運了過來,希望能給大家一點啟發和幫助。
瞭解我的朋友可能都知道,2015年的時候我在阿里媽媽的演算法崗位實習,然而找工作的時候我陰差陽錯地去了某公司的開發崗位。做了一年之後,由於各種原因,有點後悔當初的選擇於是又想辦法轉回到了演算法崗位上。所以說這兩個崗位我都待過,所以就各自來談談它們的缺點。有的時候我們不知道我們想要什麼,但往往清楚我們不能接受什麼。
這兩個崗位雖然說起來都是工程師、技術崗,但是兩者的工作內容和性質差得真不是一點半點。從業當中,也都有心力交瘁的時候,但是體驗和觸發條件都不太一樣。簡單說一說。
首先說開發,我個人在做開發的時候,蛋疼點主要有以下幾個。
開發篇
on call
on call可以理解成隨時等待召喚的意思,一般來說重要專案的開發人員都是7 x 24小時on call的。
只要線上有問題,一定會有電話打進來。凌晨兩三點也不是沒有可能,而且很多時候,這些問題未必是你的鍋,很有可能只是因為某某專案的負責人上有你的名字。
這點我想應該大小公司都有,之前和螞蟻的同事聊天,他給我吐槽說他凌晨起夜已經成了習慣。因為好像螞蟻到了晚上還有很大的流量,經常hbase抖動,每次抖動都會有電話打過來。還有什麼燒烤吃了一半突然線上GG了,狂奔回公司查問題的,都不算是事。
不僅工作日如此,週末、假期都必須響應。所以基本上電腦隨身攜帶是肯定的,哪怕是過年回家、出國旅遊基本上也都要帶著電腦。而且根據墨菲定律,千萬不要有僥倖,我僥倖過兩次,都中招了。最誇張的一次,在香港太平山上拿著手機看程式碼。。。
什麼?線上故障的時候,你睡得太死了沒聽到電話?
Emmmm,輕則被leader說上幾句,重則,可能你需要準備一下簡歷了。
大促熬夜
**只要是電商公司,沒有不大促的,只要大促,沒有不要熬夜的。**所以可以簡單理解成只要是電商公司,那麼一定會有熬夜。
大促意味著巨大的流量,自然對系統的穩定性是一個頂級的考驗。就拿雙十一舉例,你以為只要在雙十一當天多準備幾臺機器就好了?too young,在真正大促到來之前我們需要做很多輪的模擬流量檢測,怎麼模擬呢?就是搞一堆虛假的請求過來傳送到伺服器,看看伺服器能不能抗住。這種模擬測試在行內稱為壓測,也叫壓力測試。
一般來說每次大促至少兩輪壓測,由於壓測可能導致系統問題,所以不能放在流量高峰期,也就是白天,只能晚上夜深人靜的時候搞壓測。那麼你想嘛,熬夜就是必不可少的。
就算兩次壓測好了,兩次壓測加上大促當天的值班,至少每次大促都需要熬三天夜。每次熬夜,至少要兩三點才能睡覺。
來來來,你告訴我,這樣的大促一年有幾次?
光數的出來的大促就有四次,321, 618, 11.11, 12.12……而且現在這個大促的次數還有明顯地增加的趨勢。
併發工作
工作當中最令人感受不好的就是併發工作,也就是一件事情你還沒忙完,甚至剛剛做出一點眉目,立刻就被其他更加緊急的事情打斷。
比如你在查一個bug,剛剛鎖定了大概導致bug的程式碼區域,還沒有具體檢查出來,突然測試就告訴你她發現了新的bug。或者是產品過來跟你聊一個新的需求,或者是有人找你問一些關於你們系統的問題。這種連軸轉的感覺是最痛苦的,只要很短的時間就會讓人心力交瘁。
當然這個問題並不只是在開發崗位出現,其實任何崗位都有可能出現這個問題。但是相對來說,開發崗位出現這種情況的概率更高。因為開發往往負責的是一個或者多個系統,系統大了可能出現的各種各樣的問題就很多。並且還會有很多使用系統的人問你問題,很容易出現這種情況。
其他問題
除了上面三點之外,其他蛋疼的點也很多。不過相比之下沒有那麼嚴重,所以我就放在一起說了。
比如大多數公司文件都不健全,對於開發來說接收陳年專案非常容易踩坑。而且很多時候需要直接去讀原始碼,如果碰到之前的工程師程式碼能力不行的話,會導致程式碼非常難讀,就跟眼睛被針紮了似的。
還有就是肝deadline的現象非常嚴重,每一個產品提的需求總會給你設一個deadline。有時候總會有各種各樣的意外發生,導致你需要爆肝才能趕得上進度。比如線上出了故障排查了兩天,或者是臨時加了一個緊急的需求等等,無休無止地爆肝真的會讓人崩潰。
另外一點是經常重複性工作,今天增刪改查,明天改查增刪。面試的時候高併發、分散式,進去工作之後curd。經年累月沒有成長,如果是大公司的話,很多人幹幾年也沒有過從0開始真正搭建專案的經驗。
有時候產品或者運營或者是老闆不好溝通也是一個問題。要麼是不懂技術溝通成本很高,要麼就是無腦強勢,不懂裝懂,我不管你覺得,我要我覺得。
演算法篇
SQL boy
很多人被演算法崗吸引,就是覺得演算法崗高大上,機器學習,人工智慧。但其實真正從事之後,會發現根本不是那麼回事。
如果在小公司,整天為資料發愁,不是這個資料沒有,就是平臺或者工具稀爛。如果在大公司,資料、平臺、工具都有了,但是每天當SQL boy。你和業務談演算法,業務說明天上線,先統計上一版。老闆整天告訴你,我想看這個、這個和那個,你去幫我跑一下。
你想說抽空能把某個模型優化一下,結果發現手上排的SQL根本寫不完。機器學習、深度學習的模型我明明會一堆,但是眼下的事情永遠只有SQL和資料。
問題難定位
做演算法的過程,很多時候是一個和自己較勁的過程。
因為模型和開發的程式碼不同,開發用程式碼實現的功能結果是明確的,原因是可追溯的。但是模型不是,經常在別人場景下效果好的方法到你這裡一團稀爛。特別是你老闆報以期望的方法,你很難解釋……太多的可能性導致模型效能不好了,可能是訓練資料有問題,可能是特徵有問題,有可能是流程有bug,但是老闆不管這些,他們需要的是確定的結果。
並且很多人覺得查問題很簡單嘛,你找幾筆資料來看一下不就知道了?還有一些不懂裝懂的路人,哎呀你用這樣這樣不就可以了?
大資料時代,只有相關性,沒有因果性。幾筆資料能夠代表全部嗎?我抽了幾筆看了沒問題,就能代表全部資料沒問題嗎?換句話說幾筆資料有點小問題,就能代表這個是導致模型不行的原因嗎?千萬別信,信了就是大坑等著你。
我最頭疼的就是老闆讓我去查某個問題,簡直是玄學,如果是明顯的問題還好,如果不是,你可能跑一堆SQL,看一堆資料還是一無所獲。更蛋疼的是,可能一切都沒問題,但就是效果不好,你也不知道為什麼,畢竟神經網路是個黑盒。
忽悠和大忽悠
演算法行業的忽悠很多,心態不好的人很有可能會扛不住。
也是因為現在演算法太火了,很多不明就裡的人會用仰望的目光來審視。某些時候這個是好事,比如當和投資人聊錢的時候。但大部分情況下,則未必。
比如某些決策者會有錯覺,會有幻想,比如會提出一些他們自己都不信的口號。喊口號不是問題,但問題是口號裡的指標要你去落實。你會發現你很有可能忍不住想要打人的衝動,其實老闆也不是白痴,他們心裡葉門清,可能也是為了應付更高層的老闆或者是投資人而已。有點像是晚晴鴉片戰爭時期的官員,從上到下都知道打不過英國人,但是總得想出點辦法來去寫篇“捷報”,不然怎麼升官發財?
以前遇到過這麼一檔子事,說是公司的日活使用者一直在降低,公司希望用機器學習的模型來篩選一批貪財的使用者,給他們發5塊錢紅包。這樣他們為了貪這5塊錢就會一直活躍,也就帶來了日活的增長,這樣就可以和更高層的老闆交差了。看起來這個邏輯非常清晰,毫無破綻。
但問題是,當時的日活有三百萬,每天發多少紅包呢?只有幾萬個。你說應該怎麼辦,即使演算法選出來的每個使用者都不流失了,那難道就能增長了?入不敷出的成語學過沒有?老闆才不管,你只管去做,做不好就是你能力不行。這種情況怎麼辦?
同樣,這行吹逼的情況非常嚴重,簡直章口就來。反正別人不知道你到底怎麼做的,面試的時候有些人吹得那叫一個天花亂墜。當很多人都這麼做獲得好處,而你堅持底線,一直默默無聞的時候。你很難不對你的信念產生懷疑,究竟錯的是你呢,還是這個世界?
以上,只是我一家之言,如果言中,請勿對號入座。
最後,世上沒有完美的職業,總要有所得有所失。如果你能明白可以忍受什麼,不能接受什麼, 我想,你一定可以做出不後悔的選擇。
今天的文章就到這裡,衷心祝願大家都能找到稱心如意的工作。如果還喜歡今天的內容的話,請來一個三連支援吧~(點贊、關注、轉發)
本文使用 mdnice 排版