在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

先簡單交代一下背景吧,某不知名985的本碩,17年畢業加入滴滴,今年下半年跳槽到了頭條,一直從事後端研發相關的工作。

之前沒有實習經歷,算是兩年半的工作經驗吧。這兩年半之間完成了一次晉升,換了一家公司,有過開心滿足的時光,也有過迷茫掙扎的日子,不過還算順利地從一隻職場小菜鳥轉變爲了一名資深划水員。

在這個過程中,總結出了一些還算實用的划水經驗,有些是自己領悟到的,有些是跟別人交流學到的,在這裏跟大家分享一下。

學會深入思考,總結沉澱

我想說的第一條就是要學會深入思考,總結沉澱,這是我覺得最重要也是最有意義的一件事。

‌先來說深入思考。在程序員這個圈子裏,常能聽到一些言論:我這個工作一點技術含量都沒有,每天就CRUD,再寫寫if-else,這TM能讓我學到什麼東西?

拋開一部分調侃和戲謔的論調不談,這可能確實是一部分同學的真實想法,至少曾經的我,就這麼認爲過。

後來隨着工作經驗的積累,加上和一些高level的同學交流探討之後,我發現這個想法其實是非常錯誤的。之所以出現沒什麼可學的這樣的看法,基本上是思維懶惰的結果。

任何一件看起來很不起眼的小事,只要進行深入思考,稍微縱向挖深或者橫向拓寬一下,都是足以讓人沉溺的知識海洋。

‌舉一個例子。某次有個同學跟我說,這周有個服務OOM了,查了一週發現有個地方defer寫的有問題,改了幾行代碼上線修復了,週報都沒法寫。

可能大家也遇到過這樣的場景,還算是有一定的代表性。其實就查bug這件事來說,是一個發現問題,排查問題,解決問題的過程,包含了觸發、定位、復現、根因、修復、覆盤等諸多步驟。

花了一週來做這件事,一定有不斷嘗試與糾錯的過程,這裏面其實就有很多思考的空間。比如說定位,如何縮小範圍的?走了哪些彎路?用了哪些分析工具?

比如說根因,可以研究的點起碼有linux的OOM,k8s的OOM,go的內存管理,defer機制,函數閉包的原理等等。如果這些真的都不涉及,仍然花了一週時間做這件事,那覆盤應該會有很多思考,提出來幾十個WHY沒問題吧…

‌再來說下總結沉澱。這個我覺得也是大多數程序員比較欠缺的地方,只顧埋頭幹活,可以把一件事做的很好。但是幾乎從來不做抽象總結,以至於工作好幾年了,所掌握的知識還是零星的幾點,不成體系,不僅容易遺忘,而且造成自己視野比較窄,看問題比較侷限。

適時地做一些總結沉澱是很重要的,這是一個從術到道的過程,會讓自己看問題的角度更廣,層次更高。遇到同類型的問題,可以按照總結好的方法論,系統化、層次化地推進和解決。

‌還是舉一個例子。做後臺服務,今天優化了1G內存,明天優化了50%的讀寫耗時,是不是可以做一下性能優化的總結?

比如說在應用層,可以管理服務對接的應用方,梳理他們訪問的合理性;在架構層,可以做緩存、預處理、讀寫分離、異步、並行等等;在代碼層,可以做的事情更多了,資源池化、對象複用、無鎖化設計、大key拆分、延遲處理、編碼壓縮、gc調優還有各種語言相關的高性能實踐…

等下次再遇到需要性能優化的場景,一整套思路立馬就能套用過來了,剩下的就是工具和實操的事兒了。大家也可以關注微信公衆號:Java技術棧,在後臺回覆:架構,可以獲取我整理的 N 篇 Java 架構教程,都是乾貨。

‌還有的同學說了,我就每天跟PM撕撕逼,做做需求,也不做性能優化啊。先不討論是否可以搞性能優化,單就做業務需求來講,也有可以總結的地方。比如說,如何做系統建設?系統核心能力,系統邊界,系統瓶頸,服務分層拆分,服務治理這些問題有思考過嗎?

每天跟PM討論需求,那作爲技術同學該如何培養產品思維,引導產品走向,如何做到架構先行於業務,這些問題也是可以思考和總結的吧。就想一下,連接手維護別人爛代碼這種蛋疼的事情,都能讓Martin Fowler整出來一套重構理論,還顯得那麼高大上,我們確實也沒啥必要對自己的工作妄自菲薄…

‌所以說學習和成長是一個自驅的過程,如果覺得沒什麼可學的,大概率並不是真的沒什麼可學的,而是因爲自己太懶了,不僅是行動上太懶了,思維上也太懶了。

‌可以多寫技術文章,多分享,強迫自己去思考和總結,畢竟如果文章深度不夠,大家也不好意思公開分享。說到分享,大家可以關注微信公衆號:Java技術棧,在後臺回覆:Java,可以獲取我寫的過的 N 篇 Java 技術教程,都是乾貨。

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

積極學習,保持技術熱情

‌最近兩年在互聯網圈裏廣泛傳播的一種焦慮論叫做35歲程序員現象,大意是說程序員這個行業幹到35歲就基本等着被裁員了。程序員究竟能幹多少年?這篇推薦大家看下。

不可否認,互聯網行業在這一點上確實不如公務員等體制內職業。但是這個問題裏35歲程序員並不是絕對生理意義上的35歲,應該是指那些工作十幾年和工作兩三年沒什麼太大區別的程序員。

後面的工作基本是在吃老本,沒有主動學習與充電,35歲和25歲差不多,而且沒有了25歲時對學習成長的渴望,反而添了家庭生活的諸多瑣事,薪資要求往往也較高,在企業看來這確實是沒什麼競爭力。

‌而如果我們積極學習,保持技術能力、知識儲備與工作年限成正比,這到了35歲哪還有什麼焦慮呢,這樣的大牛我覺得應該也是各大公司搶着要吧?但是學習這件事,其實是一個反人類的過程,這就需要我們強迫自己跳出自己的安逸區,主動學習,保持技術熱情。

在滴滴時有一句話大概是,主動跳出自己的舒適區,感到掙扎與壓力的時候,往往是黎明前的黑暗,那纔是成長最快的時候。相反如果感覺自己每天都過得很安逸,工作只是在混時長,那可能真的是溫水煮青蛙了。

‌剛畢業的這段時間,往往空閒時間還比較多,正是努力學習技術的好時候。藉助這段時間夯實基礎,培養出良好的學習習慣,保持積極的學習態度,應該是受益終身的。至於如何高效率學習,網上有很多大牛寫這樣的帖子,到了公司後內網也能找到很多這樣的分享,我就不多談了。

‌可以加入學習小組和技術社區,公司內和公司外的都可以,關注前沿技術。

‌主動承擔,及時交流反饋

‌前兩條還是從個人的角度出發來說的,希望大家可以提升個人能力,保持核心競爭力,但從公司角度來講,公司招聘員工入職,最重要的是讓員工創造出業務價值,爲公司服務。

雖然對於校招生一般都會有一定的培養體系,但實際上公司確實沒有幫助我們成長的義務。而在能爲公司辦成事,創造價值這一點上,我覺得最重要的兩個字就是主動,主動承擔任務,主動溝通交流,主動推動項目進展,主動協調資源,主動向上反饋,主動創造影響力等等。

我當初剛入職的時候,基本就是leader給分配什麼任務就把本職工作做好,然後就幹自己的事了,幾乎從來不主動去跟別人交流或者主動去思考些能幫助項目發展的點子。自以爲把本職工作保質保量完成就行了,後來發現這麼做其實是非常不夠的,這只是最基本的要求。

而有些同學的做法則是leader只需要同步一下最近要做什麼方向,下面的一系列事情基本不需要leader操心了 ,這樣的同學我是leader我也喜歡啊。入職後經常會聽到的一個詞叫owner意識,大概就是這個意思吧。

‌在這個過程中,另外很重要的一點就是及時向上溝通反饋。項目進展不順利,遇到什麼問題,及時跟leader同步,技術方案拿捏不準可以跟leader探討,一些資源協調不了可以找leader幫忙,不要有太多顧忌,認爲這些會太麻煩,leader其實就是幹這個事的。。

如果項目進展比較順利,確實也不需要leader介入,那也需要及時把項目的進度,取得的收益及時反饋,自己有什麼想法也提出來探討,問問leader對當前進展的建議,還有哪些地方需要改進,消除信息誤差。

做這些事一方面是合理利用leader的各種資源,另一方面也可以讓leader瞭解到自己的工作量,對項目整體有所把控,畢竟leader也有leader,也是要彙報的。可能算是大家比較反感的向上管理吧,有內味了,這個其實我也做得不好。但是最基本的一點,不要接了一個任務悶着頭幹活甚至與世隔絕了,一個月了也沒跟leader同步過,想着憋個大招之類的,那基本涼涼。

一定要主動,可以先從強迫自己在各種公開場合發言開始,有問題或想法及時one-one

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

‌除了以上幾點,還有一些小點我覺得也是比較重要的,列在下面:‌

第一件事建立信任

‌無論是校招還是社招,剛入職的第一件事是非常重要的,直接決定了leader和同事對自己的第一印象。入職後要做的第一件事一定要做好,最起碼的要順利完成而且不能出線上事故。這件事的目的就是爲了建立信任,讓團隊覺得自己起碼是靠譜的。

如果這件事做得比較好,後面一路都會比較順利。如果這件事就搞雜了,可能有的leader還會給第二次機會,再搞不好,後面就很難了,這一條對於社招來說更爲重要。

‌而剛入職,公司技術棧不熟練,業務繁雜很難理清什麼頭緒,壓力確實比較大。這時候一方面需要自己投入更多的精力,另一方面要多跟組內的同學交流,不懂就問。

最有效率的學習方式,我覺得不是什麼看書啊學習視頻啊,而是直接去找對應的人聊,讓別人講一遍自己基本就全懂了,這效率比看文檔看代碼快多了,不僅省去了過濾無用信息的過程,還瞭解到了業務的演變歷史。當然,這需要一定的溝通技巧,畢竟同事們也都很忙。

臉皮要厚一點,多找人聊,快速融入,最忌諱有問題也不說,自己把自己孤立起來。

超出預期

‌超出預期這個詞的外延範圍很廣,比如leader讓去做個值周,解答用戶羣裏大家的問題,結果不僅解答了大家的問題,還收集了這些問題進行分類,進而做了一個智能問答機器人解放了值周的人力,這可以算超出預期。比如leader讓給運營做一個小工具,結果建設了一系列的工具甚至發展成了一個平臺,成爲了一個完整的項目,這也算超出預期。

超出預期要求我們有把事情做大的能力,也就是想到了leader沒想到的地方,並且創造了實際價值,拿到了業務收益。這個能力其實也比較重要,在工作中發現,有的人能把一個小盤子越做越大,而有的人恰好反之,那麼那些有創新能力,經常超出預期的同學發展空間顯然就更大一點。

這塊其實比較看個人能力,暫時沒想到什麼太好的捷徑,多想一步吧。

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

體系化思考,系統化建設

‌這句話是晉升時候總結出來的,大意就是做系統建設要有全局視野,不要侷限於某一個小點,應該有良好的規劃能力和清晰的演進藍圖。比如,今天加了一個監控,明天加一個報警,這些事不應該成爲一個個孤島,而是屬於穩定性建設一期其中的一小步。

這一期穩定性建設要做的工作是報警配置和監控梳理,包括機器監控、系統監控、業務監控、數據監控等,預期能拿到XXX的收益。

這個工作還有後續的roadmap,穩定性建設二期要做容量規劃,接入壓測,三期要做降級演練,多活容災,四期要做…給人的感覺就是這個人思考非常全面,辦事有體系有規劃。

平時積極總結沉澱,多跟別人交流,形成方法論。

提升自己的軟素質能力

‌這裏的軟素質能力其實想說的就是PPT、溝通、表達、時間管理、設計、文檔等方面的能力。說實話,我覺得我當時能晉升就是因爲PPT做的好了一點…可能大家平時對這些能力都不怎麼關注,以前我也不重視,覺得比較簡單,用時候直接上就行了,但事實可能並不像想象得那樣簡單。

比如晉升時候PPT+演講+答辯這個工作,其實有很多細節的思考在裏面,內容如何選取,排版怎麼設計,怎樣引導聽衆的情緒,如何回答評委的問題等等。

晉升時候我見過很多同學PPT內容編排雜亂無章,演講過程也不流暢自然,雖然確實做了很多實際工作,但在表達上欠缺了很多,屬於會做不會說,如果再遇到不了解實際情況的外部門評委,吃虧是可以預見的。

公司內網一般都會有一些軟素質培訓課程,可以找一些場合刻意訓練。

‌以上都是這些分享還都算比較偉光正,但是社會吧也不全是那麼美好的。。下面這些內容有負能量傾向,三觀特別正的同學以及觀感不適者建議跳過。

拍馬屁是真的香

‌拍馬屁這東西入職前我是很反感的,我最初想加入互聯網公司的原因就是覺得互聯網公司的人情世故沒那麼多,事實證明,我錯了…

入職前幾天,部門羣裏大leader發了一條消息,後面幾十條帶着大拇指的消息立馬跟上,學習了,點贊,真不錯,優秀,那場面,說是紅旗招展鑼鼓喧天鞭炮齊鳴一點也不過分。

除了驚歎大家超強的信息接收能力和處理速度外,更進一步我還發現,連拍馬屁都是有隊形的,一級部門leader發消息,幾個二級部門leader跟上,後面各組長跟上,最後是大家的狂歡,讓我一度懷疑拍馬屁的速度就決定了職業生涯的發展前景(沒錯,現在我已經不懷疑了)。

‌坦誠地說,我到現在也沒習慣在羣裏拍馬屁,但也不反感了,可以說把這個事當成一樂了。倒不是說我沒有那個口才和能力(事實上也不需要什麼口才,大家都簡單直接),在某些場合,爲活躍氣氛的需要,我也能小嘴兒抹了蜜,甚至能把古詩文彩虹屁給leader安排上。而是我發現我的直屬leader也不怎麼在羣裏拍馬屁,所以我表面上不公開拍馬屁其實屬於暗地裏事實上迎合了leader的喜好…

‌但是拍馬屁這個事只要掌握好度,整體來說還是香的,最多是沒用,至少不會有什麼壞處嘛。大家能力都差不多,每一次在羣裏拍馬屁的機會就是一次露臉的機會,按某個同事的說法,這就叫打造個人技術影響力…

‌想舔就舔,不想舔也沒必要酸別人,Respect Greatness。

‌永不缺席的撕逼甩鍋實戰 ‌ 有人的地方,就有江湖。雖然搞技術的大多城府也不深,但撕逼甩鍋邀功搶活這些鬧心的事兒基本也不會缺席,甚至我還見到過公開羣發郵件撕逼的…

這部分話題涉及到一些敏感信息就不多說了,而且我們低職級的遇到這些事兒的機會也不會太多。只是給大家提個醒,在工作的時候遲早都會吃到這方面的瓜,到時候留個心眼。

‌稍微注意一下,咱不會去欺負別人,但也不能輕易讓別人給欺負了。

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

不要被畫餅矇蔽了雙眼

‌說實話,我個人是比較反感灌雞湯、打雞血、談夢想、講奮鬥這一類行爲的,這一套***治還在大行其道,真不知道是該可笑還是可悲。當然,這些詞本身並沒有什麼問題,但是這些東西應該是自驅的,而不應該成爲外界的一種強push。

我必須努力奮鬥』這個句式我覺得是正常的,但是『你必須努力奮鬥』這種話多少感覺有點詭異,努力奮鬥所以讓公司的股東們發家致富?尤其在錢沒給夠的情況下,這些行爲無異於耍流氓。

我們需要對leader的這些畫餅操作保持清醒的認知,理性分析,作出決策。比如感覺錢沒給夠(或者職級太低,同理)的時候,可能有以下幾種情況:

•leader並沒有注意到你薪資較低這一事實•leader知道這個事實,但是不知道你有多強烈的漲薪需求•leader知道你有漲薪的需求,但他覺得你能力還不夠•eader知道你有漲薪的需求,能力也夠,但是他不想給你漲•leader想給你漲,也向上反饋和爭取了,但是沒有資源

‌這時候我們需要做的是向上反饋,跟leader溝通確認。如果是1和2,那麼通過溝通可以消除信息誤差。如果是3,需要分情況討論。如果是4和5,已經可以考慮撤退了。

對於這些事兒,也沒必要抱怨,抱怨解決不了任何問題。我們要做的就是努力提升好個人能力,保持個人競爭力,等一個合適的時機,跳槽就完事了。

‌時刻準備着,技術在手就沒什麼可怕的,哪天干得不爽了直接跳槽。‌

學會包裝

‌這一條說白了就是,要會吹。忘了從哪兒看到的了,能說、會寫、善做是對職場人的三大要求。能說是很重要的,能說才能要來項目,拉來資源,招來人。

同樣一件事,不同的人能說出來完全不一樣的效果。比如我做了個小工具上線了,我就只能說出來基本事實,而讓leader描述一下,這就成了,打造了XXX的工具抓手,改進了XXX的完整生態,形成了XXX的業務閉環。老哥,我服了,硬幣全給你還不行嘛。

據我的觀察,每個互聯網公司都有這麼幾個詞,抓手、生態、閉環、拉齊、梳理、迭代、owner意識等等等等,我們需要做的就是熟讀並背誦全文,啊不,是牢記並熟練使用。

‌這是對事情的包裝,對人的包裝也是一樣的,尤其是在晉升和麪試這樣的應試型場合,特點是流程短一錘子買賣,包裝顯得尤爲重要。

晉升和麪試這裏就不展開說了,這裏面的道和術太多了。。關注微信公衆號:Java技術棧,在後臺回覆:面試,可以獲取我整理的 N 篇 Java 面試題乾貨。

下面的場景提煉自面試過程中和某公司面試官的談話,大家可以感受一下:

我們背後是一個四五百億美金的市場…

我負責過每天千億級別訪問量的系統…

工作兩年能達到這個程度挺不錯的…

貴司技術氛圍挺好的,業務發展前景也很廣闊…

啊,彼此彼此…

嗯,久仰久仰…

人生如戲,全靠演技。

‌可以多看leader的PPT,多聽老闆的向上彙報和宣講會。

選擇和努力哪個更重要?

‌這還用問麼,當然是選擇。在完美的選擇面前,努力顯得一文不值,我有個多年沒聯繫的高中同學今年已經在時代廣場敲鐘了…

但是這樣的案例太少了,做出完美選擇的隨機成本太高,不確定性太大。對於大多數剛畢業的同學,對行業的判斷力還不夠成熟,對自身能力和創業難度把握得也不夠精準,此時拉幾個人去創業,顯得風險太高。

我覺得更爲穩妥的一條路是,先加入規模稍大一點的公司,找一個好leader,抱好大腿,提升自己的個人能力。好平臺加上大腿,再加上個人努力,這個起飛速度已經可以了。等後面積累了一定人脈和資金,深刻理解了市場和需求,對自己有信心了,可以再去考慮創業的事。

本來還想分享一些生活方面的故事,發現已經這麼長了,那就先這樣叭。上面寫的一些總結和建議我自己做的也不是很好,還需要繼續加油,和大家共勉。

另外,其中某些觀點,由於個人視角的侷限性也不保證是普適和正確的,可能再工作幾年這些觀點也會發生改變,歡迎大家跟我交流~(甩鍋成功)

最後祝大家都能找到心儀的工作,快樂工作,幸福生活,廣闊天地,大有作爲。

網約車服務器端

馬士兵教育二期課程中的項目

乘客端

代表界面

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

司機端

代表界面

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

項目概述

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

講師介紹

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

網約車中Spring Cloud技術架構圖

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

代碼展示

在滴滴和頭條幹了 2 年後端開發,太真實(附網約車項目白皮書)

 

資料過多就不給大家一一展示了需要獲取這份網約車項目白皮書的可以關注+轉發後私信(學習)即可獲取!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章