或許這樣的標(biāo)題,應(yīng)該是由像Linus或Greg KH這樣的大師級(jí)的高手才有資格寫(xiě)的吧。但是作為我來(lái)說(shuō),也許我更想把這個(gè)標(biāo)題作為一個(gè)疑問(wèn)句來(lái)使用,整理一下自己的認(rèn)識(shí),用來(lái)勉勵(lì)自己,和大家一起努力實(shí)現(xiàn)這個(gè)目標(biāo)。認(rèn)識(shí)膚淺的地方,還請(qǐng)大家見(jiàn)諒。
何謂優(yōu)秀的驅(qū)動(dòng)開(kāi)發(fā)工程師
首先要定義,我所認(rèn)為的一個(gè)優(yōu)秀的驅(qū)動(dòng)開(kāi)發(fā)工程師,應(yīng)該具備什么樣的能力,這里列一下按照從易到難的順序,個(gè)人認(rèn)為應(yīng)該會(huì)有幾個(gè)方面的要求吧:
1、能夠獨(dú)立完成驅(qū)動(dòng)的功能開(kāi)發(fā)任務(wù)
2、能夠分析和優(yōu)化驅(qū)動(dòng)的性能,針對(duì)特定硬件揚(yáng)長(zhǎng)避短
3、能夠充分了解模塊相關(guān)軟硬件能力、發(fā)展方向,輔助應(yīng)用工程師最大化利用硬件能力
4、能夠輔助硬件工程師規(guī)劃硬件設(shè)計(jì),預(yù)防問(wèn)題,謀求功能模塊的最佳方案
5、能夠協(xié)助定義系統(tǒng)架構(gòu),合理規(guī)劃軟硬件,謀求產(chǎn)品實(shí)現(xiàn)的最佳方案
作為一個(gè)驅(qū)動(dòng)工程師,很多時(shí)候不是完全從頭開(kāi)發(fā)一個(gè)完整的子系統(tǒng),而是針對(duì)特定硬件和平臺(tái)移植驅(qū)動(dòng),增加功能,解決Bug等等,如果從這方面外在的表現(xiàn)來(lái)看:
解決問(wèn)題的境界,大概會(huì)有這么幾個(gè)階段:
1、不知道哪里存在BUG
2、不知道如何解決BUG
3、知道如何解決BUG
4、 知道如何發(fā)現(xiàn)BUG
5、 知道如何規(guī)劃BUG
知道如何發(fā)現(xiàn)BUG(而不是撞上BUG)其實(shí)并不簡(jiǎn)單,需要你對(duì)系統(tǒng)有足夠的了解,能夠察覺(jué)可能出問(wèn)題的地方。 而規(guī)劃Bug更難,需要你能對(duì)問(wèn)題的輕重緩急做出準(zhǔn)確的判斷。沒(méi)有的完美的世界,只有適當(dāng)?shù)娜∩?,?guī)避和預(yù)防。
而從解決問(wèn)題過(guò)程的角度來(lái)看,我認(rèn)可以分為幾個(gè)階段:
1、BUG發(fā)生 -》 大量跟蹤調(diào)試代碼 -》 終于發(fā)現(xiàn)并解決BUG
2、BUG發(fā)生 -》 理論推測(cè)可能原因 -》 迅速定位并解決BUG
3、 閱讀代碼 -》 預(yù)測(cè)可能出現(xiàn)的BUG -》 證實(shí)并解決BUG
號(hào)稱(chēng)能光憑瞄一遍代碼就找到問(wèn)題的高手,我想我是沒(méi)希望了。
應(yīng)該具備怎樣的素質(zhì)
那么要達(dá)到上訴最佳境界,需要具備和發(fā)展哪些素質(zhì)和能力呢?
足夠的硬件知識(shí)
能看簡(jiǎn)單的原理圖,能夠分析硬件異常的可能原因,能夠使用常見(jiàn)的硬件調(diào)試工具,我想這是做為優(yōu)秀的驅(qū)動(dòng)工程師,區(qū)別與其它軟件工程師,所不可避免、必須具備的專(zhuān)業(yè)素質(zhì)。當(dāng)然取決于你具體從事的工作,對(duì)這方面的要求不盡相同。
對(duì)于驅(qū)動(dòng)開(kāi)發(fā)者來(lái)說(shuō),不了解所開(kāi)發(fā)驅(qū)動(dòng)外設(shè)的硬件原理和相關(guān)背景知識(shí),也許很多時(shí)候,也能夠完成一些移植,修補(bǔ)的工作任務(wù),但這就好比無(wú)源之水,無(wú)根之木,我相信是很難走遠(yuǎn)的。
多多益善的操作系統(tǒng)知識(shí)
做驅(qū)動(dòng)開(kāi)發(fā),特別是純粹的外設(shè)的驅(qū)動(dòng)移植工作,剛開(kāi)始的時(shí)候,也許你并不需要了解很多操作系統(tǒng)本身的知識(shí)(像內(nèi)存管理,進(jìn)程調(diào)度,鎖,各種內(nèi)核子系統(tǒng)的原理框架等等),也能順利完成手頭的一些工作。
但是,如果一但需要優(yōu)化驅(qū)動(dòng),需要完善軟件框架,或者是遇上疑難問(wèn)題需要跟蹤解決,對(duì)操作系統(tǒng),內(nèi)核本身的了解,就體現(xiàn)出它的價(jià)值了。
對(duì)于Linux內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)者,尤其如此,首先,代碼是完全開(kāi)源的,你有條件去了解背后的運(yùn)行機(jī)制,其次,Linux內(nèi)核和各個(gè)組成子系統(tǒng)總是在迅速的進(jìn)化發(fā)展中,不進(jìn)則退,你也有必要跟上時(shí)代發(fā)展的腳步。
強(qiáng)烈的好奇心,持續(xù)的熱情
如果驅(qū)動(dòng)開(kāi)發(fā)不僅僅是你的愛(ài)好,更是你養(yǎng)家糊口的途徑,我想,很多時(shí)候,你大概不會(huì)有機(jī)會(huì)專(zhuān)注于一兩個(gè)你最有經(jīng)驗(yàn)的模塊的開(kāi)發(fā)和維護(hù)。隨著能力的成長(zhǎng),勢(shì)必會(huì)要求你接觸和掌握越來(lái)越多的各式各樣的驅(qū)動(dòng)模塊的開(kāi)發(fā)。
對(duì)于這件事,包括我自己,有時(shí)候大概都會(huì)有如下幾種反應(yīng):
哇,原來(lái)的工作做太久了,太乏味了,很高興能做不同的工作。
啊?又要做別的模塊?。课沂诸^的工作已經(jīng)太多了!
這個(gè)模塊沒(méi)意思,我不想做。
相信多數(shù)有志青年們都是第一種表現(xiàn)了 8 )不過(guò),有些時(shí)候,我發(fā)覺(jué),很多人的這種熱情其實(shí)并不持久,一個(gè)新的模塊沒(méi)做多久,就再次厭倦了,是已經(jīng)爐火純青了么,未必,或許只是修改了幾個(gè)BUG以后不甚其煩。很多時(shí)候,我面試前來(lái)求職的工程師時(shí),發(fā)現(xiàn)簡(jiǎn)歷上這個(gè)也做過(guò),那個(gè)也做過(guò),但是一但問(wèn)到解決了什么問(wèn)題,所做過(guò)的驅(qū)動(dòng),框架、流程、原理之類(lèi)的問(wèn)題的時(shí)候,就一問(wèn)三不知了。
我覺(jué)得如果自己的目標(biāo)是優(yōu)秀,那么最起碼的標(biāo)準(zhǔn)應(yīng)該是對(duì)具體驅(qū)動(dòng)模塊相關(guān)的子系統(tǒng)的整體工作流程,框架,具備足夠的好奇心,樂(lè)于去了解和學(xué)習(xí),而不僅僅是為了完成任務(wù)而工作,否則的話(huà),很難積累下扎實(shí)的經(jīng)驗(yàn)和技術(shù)。
清晰的邏輯思維能力
這一點(diǎn),也許是個(gè)軟件開(kāi)發(fā)人員都應(yīng)該具備吧,不過(guò),做為驅(qū)動(dòng)開(kāi)發(fā)工程師來(lái)說(shuō),有時(shí)候,大多數(shù)情況下,工作的硬件環(huán)境并不是完美的,遇到問(wèn)題需要分析判斷錯(cuò)誤的原因是硬件問(wèn)題還是驅(qū)動(dòng)Bug,這時(shí)候,清晰的邏輯思維能力尤其重要。
良好的工作習(xí)慣
大多數(shù)人都不是天才,要成為優(yōu)秀的開(kāi)發(fā)工程師,一需要持續(xù)努力,二需要時(shí)間積累經(jīng)驗(yàn),而這過(guò)程中,很重要的一點(diǎn),就是要有良好的工作習(xí)慣。譬如,注意設(shè)計(jì)文檔的維護(hù),對(duì)工作中遇到的問(wèn)題的記錄,過(guò)往經(jīng)驗(yàn)的及時(shí)記錄,適當(dāng)?shù)能浖_(kāi)發(fā)流程等等。文檔工作,可能很多人很不愿意去做,它的確很花費(fèi)時(shí)間。不過(guò),唉。。。老啦,好記性不如爛筆頭啊 8 )。 當(dāng)然,其實(shí)設(shè)計(jì)文檔更多的是為你提供思考的機(jī)會(huì),而過(guò)往經(jīng)驗(yàn)的總結(jié),也可以起到和大家交流技術(shù),共同進(jìn)步的目的。
英語(yǔ)
這個(gè)也是必須的啦,沒(méi)有辦法,郵件列表,技術(shù)文檔,社區(qū),精通英語(yǔ)肯定是很大的優(yōu)勢(shì),做開(kāi)源項(xiàng)目尤其如此。閱讀各種Spec標(biāo)準(zhǔn)文檔之類(lèi)的速度還是很重要的。閱讀無(wú)障礙是一回事,能和母語(yǔ)一樣一目十行,那才爽呀,唉,人生苦短,效率啊!光讀文檔,就不知道要比老外多花多少時(shí)間。。。。
編輯:hfy
-
Linux
+關(guān)注
關(guān)注
87文章
11497瀏覽量
213311 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7126瀏覽量
125328 -
開(kāi)發(fā)工程師
+關(guān)注
關(guān)注
1文章
91瀏覽量
15111
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
一個(gè)優(yōu)秀的射頻測(cè)試工程師需要具備哪些技能?


如何成為一名合格的KaihongOS南向驅(qū)動(dòng)開(kāi)發(fā)工程師
如何成為一名合格的KaihongOS北向應(yīng)用開(kāi)發(fā)工程師
如何成為一名嵌入式軟件工程師?


如何成為一名合格的南向驅(qū)動(dòng)開(kāi)發(fā)工程師
如何成為一名合格的北向應(yīng)用開(kāi)發(fā)工程師

不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過(guò)于真實(shí) #YXC晶振 #揚(yáng)興科技
為什么嵌入式驅(qū)動(dòng)開(kāi)發(fā)工程師可以拿高薪?

評(píng)論