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