上一篇文章 木城:聽說你想做一個(gè)
汽車軟件工程師?(上) 閱讀量挺好,于是我打算趁熱打鐵,加一個(gè)番外篇。在本篇文章里,我們來探討一下一位汽車軟件工程師的成長過程。還是那句話:一家之言,姑妄聽之!想當(dāng)年還在校園的時(shí)候,我們都被安排好了固定的課程和培養(yǎng)方案,一年一年只要按部就班地選課,最后總能拿到那張畢業(yè)證、開始人生的下個(gè)階段。即便是研究生時(shí)寫論文,也總歸有大老板/中老板/小老板們給出方向。等走出了校園才暮然發(fā)現(xiàn),自己再也沒有“培養(yǎng)方案”了,每個(gè)人的路都是那么的不同,瞬間就被卷在了滾滾紅塵之中,零落成泥呀。不過呢少年,既然已經(jīng)陰錯(cuò)陽差地選擇成為了一名汽車軟件工程師,那成長道路終歸還是有那么一些軌跡可循的。下面我們就來仔細(xì)品一品。由于自動(dòng)駕駛技術(shù)
的興起,汽車軟件行業(yè)最近正處于一個(gè)幾十年未見的巨變之中,將來發(fā)展的方向仍未可知。但是就未來幾年而言,無論你具體從事汽車哪個(gè)系統(tǒng)的軟件開發(fā),軟件的基本構(gòu)成并不會(huì)有太大差異。具體而言可以分成以下幾個(gè)最重要的模塊:
- 傳感器軟件
- ECU底層驅(qū)動(dòng)
- BootLoader
- 內(nèi)存管理/內(nèi)存分配 (Memory Layout)
- 操作系統(tǒng)調(diào)度
- 通信模塊/通信協(xié)議
- 診斷模塊/失效管理
- 應(yīng)用層軟件
汽車ECU軟件架構(gòu)示意基于這種軟件模塊的劃分,根據(jù)自己的經(jīng)驗(yàn),想成為一個(gè)優(yōu)秀的軟工程師,我認(rèn)為需要經(jīng)歷三個(gè)階段:
- 某一模塊的專才
- 在擅長某一模塊的基礎(chǔ)上,對(duì)軟件整體比較熟悉
- 技術(shù)管理人才
某一模塊的專才:這是汽車軟件工程師的第一階段。初出校園的時(shí)候,我們總是從接觸某一個(gè)具體模塊開始職業(yè)旅程的。比如通信/診斷工程師
,自然就開始接觸通信、診斷模塊。而應(yīng)用層工程師
會(huì)從應(yīng)用層中的某個(gè)具體功能入手。即便是需求工程師
或
測試工程師,也會(huì)先負(fù)責(zé)某個(gè)具體模塊的需求或者測試工作。在這一階段,小白們需要做的是迅速掌握自己的模塊。對(duì)于通信/診斷工程師而言,這個(gè)過程比較輕松,半年到一年足夠了。所以我在上篇文章里說這個(gè)職位很好上手;但是對(duì)于應(yīng)用層軟件
的工程師而言就比較蛋疼了,真正上手某個(gè)功能模塊可能會(huì)持續(xù)一年以上,甚至兩到三年。因?yàn)閼?yīng)用層軟件耦合性很強(qiáng),往往要對(duì)整個(gè)應(yīng)用層都有了解,才能做好其中某個(gè)模塊的開發(fā)。測試工程師也是同樣道理,上手會(huì)比較慢一些。總而言之,這一階段一般是職業(yè)生涯的第一到三年,也是每個(gè)工程師都要經(jīng)歷的階段。在擅長某一子系統(tǒng)的基礎(chǔ)上,對(duì)軟件整體比較熟悉 :職業(yè)的成長在這一階段發(fā)生分化了。在熟悉了自己的模塊以后,我的建議是一定要抓住各種機(jī)會(huì),對(duì)汽車軟件的所有關(guān)鍵模塊都有了解。只有這樣才能進(jìn)一步提升自己綜合解決問題的能力,使自己的價(jià)值獲得進(jìn)一步提升,為以后成為架構(gòu)師
或者技術(shù)管理人才做準(zhǔn)備。測試/診斷工程師和驅(qū)動(dòng)工程師
第一個(gè)死在這一關(guān)。因?yàn)樗麄儧]有什么好的機(jī)會(huì)去深入了解別的模塊。如果企業(yè)比較開放的話,可以多去讀別的模塊的需求和代碼, 然后多向其他工程師請(qǐng)教,這就看少年你自己的技巧了。如果可能的話,這個(gè)時(shí)候也可以考慮轉(zhuǎn)崗。需求工程師和
測試工程師情況稍微好點(diǎn),也趕緊開始行動(dòng)吧。對(duì)于應(yīng)用層軟件工程師而言,此時(shí)就可以堂而皇之地熟悉各個(gè)部分的功能和代碼,梳理整個(gè)軟件的內(nèi)在關(guān)聯(lián)。你們有足夠多的機(jī)會(huì)對(duì)整體軟件都有了解。所以我說
應(yīng)用層軟件工程師
的成長性和靈活性是最好的。除了對(duì)軟件本身的了解,在這個(gè)階段也要盡量熟悉功能安全。說功能安全是現(xiàn)在全行業(yè)最熱的話題也不為過,一定不要覺得自己不是安全工程師就不需要去了解它。熟悉功能安全也能顯著地提升軟件工程師的競爭力。如果順利的話,這個(gè)成長的第二階段會(huì)是你職業(yè)生涯的第二到五年。有的同學(xué)會(huì)說,我就想做個(gè)螺絲釘,干好自己的本職工作,也不想做管理,熟悉好自己的模塊不就完了嗎!這個(gè)說法我覺得沒毛病,但是呢,如果對(duì)整體軟件都熟悉,第一是可以顯著提升你自己在就業(yè)市場上的競爭力,同時(shí)肯定能夠反哺你自己的模塊,讓你做得更優(yōu)秀。我始終覺得這是職業(yè)成長必不可少的。職業(yè)成長的第三個(gè)階段是技術(shù)管理人才
在經(jīng)歷了第二階段以后,一小部分工程師會(huì)進(jìn)入職業(yè)生涯的第三階段,也就是成為項(xiàng)目主管??梢哉f,這是一個(gè)全新的職業(yè)階段,除了
軟件工程師本身的工作以外,項(xiàng)目主管還要肩負(fù)很多新的挑戰(zhàn),包括并不限于:
- 軟硬件選型
- 客戶溝通
- 招投標(biāo)/報(bào)價(jià)/談判
- 項(xiàng)目管理
- 團(tuán)隊(duì)管理
- 功能安全
- 信息安全
- 質(zhì)量管理
- 法務(wù)、合規(guī)
可以說至此已經(jīng)不再工作在軟件開發(fā)的第一線了。如何從第二階段進(jìn)入第三階段是個(gè)玄學(xué)問題。常見的方法有祈禱公司開展新業(yè)務(wù)、祈禱原項(xiàng)目主管跳槽/高升(大霧.....)、換去新部門、換公司等等,總之就是可遇而不可求了。前些年中國的汽車軟件行業(yè)發(fā)展蓬勃,從無到有、從弱到強(qiáng),只要有心,跨入第三階段也是不難的。現(xiàn)在行業(yè)整體不景氣,加上
汽車軟件行業(yè)的從業(yè)人員越來越多,確實(shí)要麻煩了些,但比起國外還是容易的。如果一直沒機(jī)會(huì)或者自己不想成為項(xiàng)目管理人才,在工作四到五年以后可以考慮換一條產(chǎn)品線,來豐富自己的簡歷。至于選擇怎樣的部件,可以看看我的下一篇文章。