如何成為一名成熟的軟體開發工程師?

2022-01-04 有個理想

尊重別人和自己不一樣,也尊重自己和別人不一樣。這是我們在理想汽車學到的。

9月,理想ONE的OTA 2.2發布,我們上線了全新的應用中心App,網易雲音樂等熱門應用軟體終於「上車」。「有個理想」找到智能駕艙應用軟體負責人老張,想聊聊背後的故事。

結果,他沒講故事,而是提了一個問題:如何成為一名成熟的軟體開發工程師?跟老張的首次見面,他穿著一件超人「鑽石logo」T恤,很典型的IT男打扮。問:「你是超人的粉絲嗎?」答:「不是啊,隨便穿的。」他認為,長期持有某一隻股票,需要邏輯+信念,但全靠信念是不行的,很多人剛開始信念很強,可能過兩天別人說的不一樣了就堅持不下去了。「還是要有很強的邏輯去支撐。」老張喜歡一部叫做《黑鏡》的英劇,主題是科技對人性與生活的重構。問:「如果有一個人工智慧的完美女友,你會選擇她嗎?」答:「不會,我更喜歡活生生的人。」但談到自己軟體開發的工作,老張則是另外一種態度:「寫代碼很簡單,對就是對、錯就是錯,一旦錯了那99%就是自己錯了,機器不會錯。現實世界太複雜太累了,我喜歡代碼世界。」

就類似這樣,我們整場5個小時的無休息對話都洋溢著一種「放輕鬆」的氛圍,老張看起來不熱血,不喪,不企圖控制,不過度依賴某一種觀念,總是能看到相反的意思,頭腦冷靜,幽默。

總之,是跟「強迫症」完全相反的樣子。

「之前有個朋友,天天曬娃,我覺得他有病,再說那娃長得也不好看。後來自己有了娃,就理解了曬娃的人了,這種幸福沒道理,單身的時候不可能理解。」 很多時候,立場決定看法。觀點A:你要堅持自己的特點;觀點B:你堅持的東西不一定對。二者矛盾嗎?李想常說,當基於一個價值取向的時候,就可以堅持自己和別人不一樣。理想汽車鼓勵團隊不要輕易改變自己,因為在一個網狀組織裡想彌補一個人的缺點太容易了,價值是優點,但往往優點和缺點就是硬幣的正反面,把硬幣另外一面毀掉了,這個硬幣也不能用了。產品經理與工程師有天然不同的視角。比如,工程師會吐槽產品經理「既要也要還要」,但資源是有限的;產品經理會吐槽工程師「喜歡炫技」,自己的代碼一定要很高級很完美,否則不想交付。老張有個標尺,認為各方力量的博弈過程,標示了不同軟體開發工程師之間的差別:


單純滿足產品經理的需求,是一個合格的開發者,但不是一個合格的工程師;接受凡是工程皆無完美,工程師要尊重市場節奏,理解公司、理解成本。老張說,「我們是為用戶服務的,不是為強迫症服務的。」——代碼能力是基本盤,但代碼永遠不如人重要。養成如上思維習慣,可能與認知有關,也可能與性格有關。對老張來說,與和諧的家庭也有關。「我老婆她之前給老闆做助理,從一個全新的子公司一點點做起,很了解一些人事處理、公司運作的事情,她溝通能力很強,教我很多事情。」家庭關係對他來說是一種養成,夫妻倆讓彼此成為更好的人。對孩子也是養成:「我倆有一個觀點,就是不要給小孩設置任何限制,她想嘗試什麼都可以去。我們大人其實無形之中給自己設了很多限,你可能在意別人怎麼看你,可能不想再了解舊的事物,就很容易就固步自封。」

「保持一個開放的心態」,這是他與世界相處的方式。36歲,他說自己依然在探索世界、探索自我。

我是誰——老張1985年在東北出生,後在河北長大,小時候喜歡看《電腦報》(很多80後的科技啟蒙讀物),高中時代經常在學校的機房和校外網吧轉悠,大學修了計算機科學與技術專業,「當年也不知道將來要做什麼,反正就是有點興趣。」我要去哪——職業選擇,跟隨國內的幾次科技浪潮:網際網路-移動網際網路-智能電動車,一直在賽道上,2017年加入「車和家」。「每個人都被時代大潮裹挾著前行,有的『流』是上升的,有的『流』是下降的,重要的是識別並選擇上升的『流』。我畢業的前十年趕上了安卓這個上升的『流』,現在在智能電動車這個『流』。」做一名軟體開發工程師,老張出於許多程式設計師的共同之愛:「享受造物的快樂。」如今,智慧型手機的應用已經相對成熟,沉澱出行業共識的標準,工程師可發揮的空間在縮小。而智能車機時代大幕開啟,場景更為複雜,工程師有大把空間去探索和創新,各個品牌也可以趁機做出自己的差異化優勢。當然,代碼是對現實的抽象,現實永遠不能窮舉,尤其是智能車機的使用場景比手機要複雜得多,焦慮常伴左右。軟體開發工程師最大的痛苦,就是飄忽不定的需求。我們見過很多軟體工程師「躺平」,一位知乎用戶寫:「加班就算了,還要忍受重複勞動、無效產出,誰是真的愛技術呢?還不是為了活著。」描述了許多從業者的現狀。團隊前一陣子剛剛有一位夥伴離職,就是上述原因,「需求來回改了好幾次,中間做的一些工作重複而無意義,他有點接受不了。」如何評價和處理此類事件,老張有雙重身份:1、一名軟體開發工程師;2、一名管理者。作為1,「把『自我』縮小——站在一個更大的視角看待這類問題(損失),否則當你沒辦法理解的時候,一定會掉在自己的牛角尖裡,只有走出來,才能看到整體,知道事情的來龍去脈,才能做到理解。看待問題有很多個角度,自己的角度、別人的角度和整體的角度。這是我這幾年入職理想汽車學到的。沒有這個心態,麻煩會非常多。」作為2,「我心裡知道是什麼樣的事情是對的,什麼樣的事情是不對的,但是不對的事情要幹,對的事情也要幹。很多時候都是一種『模糊的正確』,沒辦法一刀切。」「模糊的正確」是一種投資理念,有時候也是生活的體感。形容這種體感就是,不強求某一種結果,保持開放的心態,去認識、去接納,去體驗這個複雜世界的多樣化事實。就像投資股市。交易江湖歷來有兩大門派,一派是追漲殺跌,一派是抄底摸頂,背後可能都是性格使然。但無論是哪一派,都有人賺,都有人賠。我們要接受哪種理論?能否有足夠強的信念去堅持?「歸根結底,這是找到一個適合自己的方法論的過程。世界很大,人和人都不相同。」

‍‍

在理想ONE SOP(開始量產)之前,老張團隊做過一次長達幾個月的性能調優,盡全力消除軟體卡頓。最開始砍一波(內存佔有率)大家都比較容易,優化一下都會有效果,但是越往後就越難了,所有應用軟體都優化過,還要想其他的辦法繼續優化,「真的是一點一點摳著優化出來。實際上,大家單拎出來一個自己的應用都沒問題,但放在一起就有問題。那時候我們幾個天天晚上9、10點跑一圈機場高速,看看卡不卡。」這是老張所能講出的「最難忘的故事」。一如其他話題,沒有情緒細節,沒有導向特別精確的結論,或者說,拒絕沒有特定條件約束的結論。當被問到「如果滿分100分,你給自己的生活打多少分?」他想了想,回答「80分。」「扣了20分,是覺得應該更合理地安排業餘時間,寫一個股市分析的應用程式。這個程序可能有用,也可能沒用,重要的是寫的過程的快樂。就像談戀愛。」

相關焦點

  • 「高級工程師」沒用!你應該成為一名 「成熟的工程師」
    AI 前線導讀:在開發者職業晉升的過程中,大家更為熟悉的 Title 應該是「高級工程師」、「資深工程師」,但在 Etsy 前 CTO John Allspaw看來,「高級工程師」並不等於「成熟的工程師」。那麼到底怎麼樣才算是真正的「成熟的工程師」?你能在 5 年時間內成長為一名 「成熟的工程師」 嗎?
  • 如何成為一名優秀的iOS開發工程師
  • 如何成為一名優秀的軟體工程師
    成為一名優秀的軟體工程師是每一個軟體工程師的目標,但是在實際中,優秀的軟體工程師和一般的軟體工程師的表現肯定是參差不齊的,這是什麼原因造成的呢
  • 如何成為一名射頻工程師?
    那麼如何成為一名射頻工程師呢?首先,什麼是射頻工程師?射頻工程師是電子工程師的一種,主要處理射頻頻率的器件/系統設計,是無線設備系統工程師,其主要工作範疇是收發信機除了數字之外的所有工作,如下圖所示,包括上下變頻,調製,放大,濾波,天線。從工作範疇上,射頻工程師也包括射頻系統工程師,TRX工程師,PA工程師,濾波器工程師以及天線工程師。
  • 如何成為主力軟體開發工程師?
    其實,軟體開發人員的工作職責遠遠超過單純的計算機編程。在參與軟體開發的整個生命周期中需要開發人員擔當多個角色,努力通過研究和替代技術等解決問題的方法來實現產品研發目標,從而改進整個產品。要想成為軟體開發的專家,需要我們完整了解軟體開發的流程,並在關鍵部分掌握豐富經驗。
  • 如何成為一名全棧增長工程師?
    (文末有驚喜)記得我們在《RePractise前端篇: 前端演進史》中提到技術在最近十幾年的飛速發展,當然最主要的就是:技術的複雜度不斷地從應用層抽象到了框架層
  • 怎樣成為一名合格的VR遊戲開發工程師?
    而怎樣能夠成為一名合格的VR遊戲開發工程師呢?一、對遊戲世界做一個新穎的設定這裡主要包括故事背景,遊戲場景,人物模型等,這些要素組成了一個遊戲的主要框架。而如今各種遊戲層出不窮,各種的遊戲設定已經讓遊戲愛好者沒有了什麼新鮮感,所以如果VR遊戲開發者的遊戲設定做的有特色的話是會非常吸引人的。
  • 如何成為一名合格的數據工程師?
    根據 hired.com 發布的數據,2019 年該崗位 需求量已上漲 45%,在舊金山灣區,數據工程師的平均工資可達 16,000 美刀。那麼,成為一名合格的數據工程師要滿足什麼條件呢?數據工程師的工作與數據息息相關,這一點光是從名字上就可窺見一二。與從已有數據中提煉信息的數據分析師不同,數據工程師要做的是搭建用於傳遞、存儲和處理信息的架構,負責數據的收集、轉移、存儲,以及數據準備工作。
  • 新手碼農如何成為一個首席軟體工程師
    程式設計師書庫(ID:CodingBook)編譯 連結地址:https://levelup.gitconnected.com/a-guide-to-become-a-lead-software-engineer-753331de8fa9經常有應屆生問我如何成為一名首席軟體工程師
  • 如何成為一名大數據工程師?
    導讀:大數據工程師是做什麼的?怎樣才能成為數據工程師?我們一起了解這個有意思的領域。
  • 如何成為一名卓越的前端工程師
    最近我收到一封讀者來信讓我陷入了思考,信是這麼寫的:Hi Philip,您是否介意我問您是如何成為一名卓越 (great) 的前端工程師的?對此您有什麼建議嗎?我不得不承認,我很驚訝被問這樣的問題,因為我從來不覺得自己是個很卓越的前端工程師。甚至我入行頭幾年時並不認為自己可以做好這一行。我只確定自己比自己想像中還才疏學淺,而且大家面試我的時候都不知道從何問起。
  • 硬體工程師 VS 軟體工程師
    也就是說,招軟體工程師的職位比硬體工程師的職位要多的多,而且軟體工程師找工作上來說會比硬體工程師更容易先從企業的角度來講講。我個人認為造成這個差異的原因,第一個是基本上所有的公司,從初創公司到全球百強,都有對軟體工程師的需求。現在哪個公司不需要幾個碼農來開發app,或者做個web。但是做硬體這種工作並不是所有公司會去做的。
  • 軟體工程師 VS 硬體工程師
    想成為一名軟體工程師找到工作的門檻遠比成為一名合格的硬體工程師低很多。要想以軟體工程師的身份混到個飯碗,能學兩門語言學好常用的數據結構刷點題就基本上能找到薪水小几千的崗位。我甚至知道國內有專門的軟體工程師培訓機構,那種專門教java和算法,兩個月速成班,而且所聲稱的學生就業率還挺高的。
  • 成為一名 AI 工程師永遠都不晚
    如果這一波AI大潮只是空喊幾句口號,空提幾個戰略,空有幾家炙手可熱的創業公司,那當然成不了什麼大氣候。但風浪之下,我們看到的卻是,Google一線的各大業務紛紛改用深度學習,落伍移動時代的微軟則已拉起一支近萬人的AI隊伍。而國內一線大廠的情況,恐怕也是差不多的。這一跡象,對於廣大程式設計師來說,特別是對即將走向技術一線的準程式設計師而言,還是值得重點關注的。
  • 如何成為一個成功的軟體工程師
    在這篇文章中,我們將討論成為一個成功的軟體工程師需要注意哪些要點,以便於鞭策自己也成為一個成功的軟體工程師。
  • 如何成為一名黑客?
    作為 Jargon File 的編輯和 一些其他有名的類似性質文章的作者,我經常收到充滿熱情的網絡新手的郵件提問(確實如此) 「我如何才能成為一名出色的黑客?」非常奇怪的是,似乎沒有任何的FAQ或者網絡文檔來說明這個十分重要的問題,因此我寫了一份。
  • 如何成為合格的Web前端工程師呢?
    隨著Web前端行業的火爆,越來越多的人選擇成為Web前端工程師作為自己的職業,但想要成為符合企業需求的合格Web前端工程師並不容易。那麼,如何才能成為一名合格的Web前端工程師呢?下面,千鋒上海就給大家分享一名合格的Web前端工程師具備哪些技能。
  • 如何成為一名系統架構師
    很多做軟體開發的小夥伴都立志想成為一名系統架構師,卻不知怎麼樣才算是一名合格的架構師,是在某一個技術領域有深刻專研的技術達人?還是在技術面上涉獵廣泛的通才?抑或有個五六年的工作經驗之後就自動變成了「架構師」?下面從以下幾個方面聊聊「架構師」這個高大上的職業。一、架構師需要具備什麼能力?
  • 編程入門--如何成為一名軟體工程師
    ▲點擊上方「CocoaChina」關注即可免費學習iOS開發
  • 硬體工程師 VS 軟體工程師:我學得這麼難,為什麼薪水沒你多?
    還記得當初我們學校的初創公司招聘會上幾十家公司只有一家招硬體工程師,而且還是偏軟體的硬體工程師,剩下的公司裡98%都在找會碼代碼的人;大企業的招聘會上才能見到nvidia, arm, intel, TI 的身影,但是哪怕是這樣基本上所有的公司招牌上都會有大寫加粗的招computer science的字樣。。再從個人的角度來講。想成為一名軟體工程師找到工作的門檻遠比成為一名合格的硬體工程師低很多。