從車輛工程轉行程序員兩年,我是這麼走過來的


畢業已經兩年,這意味着從車輛工程轉行做程序員已經兩年。

這兩年來,我從一個C語言都用不熟悉的菜鳥,一步步到現在負責軟件多個模塊的開發和維護。我走過很多彎路,也踩過很多坑,當然也從中不停地學習和成長。

這篇文章把我這兩年走過的路,以及做出的選擇回顧一下。一方面是系統的梳理一下過去,另一方面希望爲糾結轉行的朋友提供一些參考。

關注我公衆號以及加我微信諮詢轉行的朋友,大多都是車輛工程專業的在讀學生,他們期望從傳統的汽車行業轉行做自動駕駛、車聯網等前沿方向。然而,這些技術與傳統的車輛工程關係不大,反而是自動化、計算機等專業更加喫香。

轉行第一年

轉行第一年也是我參加工作的第一年,從學校踏入社會,最大的感受就是車規級ECU開發的流程和步驟竟如此複雜。

在學校時,我單純的以爲ECU的開發就是在單片機上寫寫代碼,實現想要的功能即可。然而,進入公司接觸到真正車規級ECU的開發,我才知道自己的想法有多麼的天真和幼稚。

目前行業內,汽車ECU的開發遵循“V”模型開發,這是在學校很難接觸到的。此外,代碼寫完、功能實現並不算是完成工作,接下來還要進行靜態代碼檢查和動態代碼檢查,一是確保代碼符合MISR C開發規範,二是規避單片機運行過程中因爲中斷和共享變量導致意想不到的bug。

很巧的是,我剛進入公司時團隊有個項目正在處理靜態代碼和動態代碼檢查的問題。leader認爲這種事情非常簡單和低級,就分配我處理這個事情。當接到這個任務時,我內存壓力巨大,畢竟我的C語言水平很差勁,甚至有些代碼我都看不懂是什麼意思。

任務在身,我只能頂着壓力往前衝,爲了在工作中好好表現,我花一個月的時間閱讀了幾本C語言的書籍,並且系統的學習了兩個網課,至此我的C語言纔算不拖工作後腿。當然,這份任務也讓我提前結束了試用期,算是小小的意外之喜。

結束試用期後,我偶然聽說團隊中另一個項目中功能安全模塊人員不足。憑着一貫的敏感,我上網搜索了功能安全的相關信息。在瞭解功能安全後,我唯一的想法是伴隨未來汽車電氣化和智能化的趨勢,功能安全在開發中所佔的比重將會越來越大,從中我看到了這個職業光明的發展前景。因此,我積極向leader爭取希望能夠承擔一部分功能安全的工作。

之後我就跟着老師傅們一起負責功能安全模塊,直到項目最終SOP。做功能安全的大半年,我參加了一些ISO26262的相關培訓,並且通過實戰和培訓的結合學到了很多功能安全方面的知識。

目前,就我接受的教育和接觸的朋友來說,不論是本科、碩士甚至博士朋友接觸功能安全方面的人都很少。然而,整車廠現在越來越重視功能安全,這絕對是一個極好的發展方向。如果不信,去獵聘搜索“功能安全”,看看各公司開出的薪資就能明白我的意思了。

轉行第二年

但好景不長,項目SOP後,團隊並沒有接新的項目。爲了緩解人力資源過剩的問題,leader問我是否有意向轉向車聯網部門做開發。

當時leader給我兩個選擇:(1)基於AutoSAR架構做MCU開發;(2)基於高通平臺做linux C開發。

由於我剛進公司參與的項目就是基於AutoSAR架構的MCU軟件開發,我很熟悉AutoSAR架構。然而,MCU開發與硬件耦合度太高,需要軟件開發人員具備紮實的硬件知識,這是我非常不喜歡的一點。

考慮到這方面,我找車聯網部門的leader諮詢了基於高通平臺的linux C的開發情況,並且着重問了linux C開發中是否涉及很多硬件知識。

當得知車聯網部門中linux C開發主要涉及計算機網絡方面知識,並且涉及多線程和多進程開發,同時不需要太多硬件開發知識時,我很不爭氣的心動了…

此外,我自己也上網搜索了linux在嵌入式開發中的應用。linux廣泛應用於消費電子產品中,而且AutoSAR也推出了新型的Adaptive AutoSAR架構,兼容linux內核。種種證據能夠說明,linux系統在未來汽車電子設備中佔據的比例將會越來越大。

從此,我開始了漫長的linux學習之路。由於在此之前我從未接觸過linux系統,也並不懂計算機網絡的知識,僅僅是一個會用C語言寫代碼的碼農。爲了能夠快速,我買了書和網課,也從B站找了一些學習視頻。每天在地鐵上、午休、下班回家都一直在惡補工作中需要用到的知識。

那段時間很累,但在學習linux的過程中,我順帶把操作系統、計算機組成原理和計算機網絡全部學習了一遍。由於長時間的積累,某一天在工作中突然頓悟了,編程語言帶給我的困難不復存在了。雖說現在在工作中也時常遇到困難,但不會再像無頭蒼蠅一樣不知所措。

學習linux一年多,我的心得是linux纔是真正適合程序員學習的操作系統。學習linux的過程中,你會學到計算機原理、操作系統、編譯原理和多線程多進程通信等知識。這些知識能夠協助日常軟件開發,同時使你能夠從更高的層級來看待軟件開發。

總結

如果你現在有志於轉向汽車電子,並從事軟件開發工作。那麼我有以下建議:
(1)考取研究生(至少211
(2)利用空閒時間,學習C語言和python(python作爲工具語言,能夠提升工作效率
(3)爭取找到研究方向前沿的導師,並參與到相關項目中(這決定你第一份工作的方向,重要
(4)鍛鍊自己快速學習和處理問題的能力(重中之重
(5)對軟件開發有興趣(最最重要

**Note:**早就是優勢,越年輕、試錯成本越低。

ps: 歡迎關注我的公衆號[酷酷的coder],分享轉行菜鳥程序員成長過程彙總的煩惱和反思.
在這裏插入圖片描述

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