如何成為優秀的驅動開發工程師

2021-06-13 10:59:16 字數 2084 閱讀 1558

email:

[email protected]

blog:

主頁:

或許這樣的標題,應該是由像linus或greg kh這樣的大師級的高手才有資格寫的吧。但是作為我來說,也許我更想把這個標題作為乙個疑問句來使用,整理一下自己的認識,用來勉勵自己,和大家一起努力實現這個目標。認識膚淺的地方,還請大家見諒。

首先要定義,我所認為的乙個優秀的驅動開發工程師,應該具備什麼樣的能力,這裡列一下按照從易到難的順序,個人認為應該會有幾個方面的要求吧:

作為乙個驅動工程師,很多時候不是完全從頭開發乙個完整的子系統,而是針對特定硬體和平台移植驅動,增加功能,解決bug等等,如果從這方面外在的表現來看:

解決問題的境界,大概會有這麼幾個階段:

知道如何發現bug(而不是撞上bug)其實並不簡單,需要你對系統有足夠的了解,能夠察覺可能出問題的地方。 而規劃bug更難,需要你能對問題的輕重緩急做出準確的判斷。沒有的完美的世界,只有適當的取捨,規避和預防。

而從解決問題過程的角度來看,我認可以分為幾個階段:

號稱能光憑瞄一遍**就找到問題的高手,我想我是沒希望了。

那麼要達到上訴最佳境界,需要具備和發展哪些素質和能力呢?

能看簡單的原理圖,能夠分析硬體異常的可能原因,能夠使用常見的硬體除錯工具,我想這是做為優秀的驅動工程師,區別與其它軟體工程師,所不可避免、必須具備的專業素質。當然取決於你具體從事的工作,對這方面的要求不盡相同。

對於驅動開發者來說,不了解所開發驅動外設的硬體原理和相關背景知識,也許很多時候,也能夠完成一些移植,修補的工作任務,但這就好比無源之水,無根之木,我相信是很難走遠的。

做驅動開發,特別是純粹的外設的驅動移植工作,剛開始的時候,也許你並不需要了解很多作業系統本身的知識(像記憶體管理,程序排程,鎖,各種核心子系統的原理框架等等),也能順利完成手頭的一些工作。

但是,如果一但需要優化驅動,需要完善軟體框架,或者是遇上疑難問題需要跟蹤解決,對作業系統,核心本身的了解,就體現出它的價值了。

對於linux核心驅動開發者,尤其如此,首先,**是完全開源的,你有條件去了解背後的執行機制,其次,linux核心和各個組成子系統總是在迅速的進化發展中,不進則退,你也有必要跟上時代發展的腳步。

如果驅動開發不僅僅是你的愛好,更是你養家餬口的途徑,我想,很多時候,你大概不會有機會專注於一兩個你最有經驗的模組的開發和維護。隨著能力的成長,勢必會要求你接觸和掌握越來越多的各式各樣的驅動模組的開發。

對於這件事,包括我自己,有時候大概都會有如下幾種反應:

哇,原來的工作做太久了,太乏味了,很高興能做不同的工作。

啊?又要做別的模組啊?我手頭的工作已經太多了!

這個模組沒意思,我不想做。

相信多數有志青年們都是第一種表現了 8 )不過,有些時候,我發覺,很多人的這種熱情其實並不持久,乙個新的模組沒做多久,就再次厭倦了,是已經爐火純青了麼,未必,或許只是修改了幾個bug以後不甚其煩。很多時候,我面試前來求職的工程師時,發現簡歷上這個也做過,那個也做過,但是一但問到解決了什麼問題,所做過的驅動,框架、流程、原理之類的問題的時候,就一問三不知了。

我覺得如果自己的目標是優秀,那麼最起碼的標準應該是對具體驅動模組相關的子系統的整體工作流程,框架,具備足夠的好奇心,樂於去了解和學習,而不僅僅是為了完成任務而工作,否則的話,很難積累下紮實的經驗和技術。

這一點,也許是個軟體開發人員都應該具備吧,不過,做為驅動開發工程師來說,有時候,大多數情況下,工作的硬體環境並不是完美的,遇到問題需要分析判斷錯誤的原因是硬體問題還是驅動bug,這時候,清晰的邏輯思維能力尤其重要。

大多數人都不是天才,要成為優秀的開發工程師,一需要持續努力,二需要時間積累經驗,而這過程中,很重要的一點,就是要有良好的工作習慣。譬如,注意設計文件的維護,對工作中遇到的問題的記錄,過往經驗的及時記錄,適當的軟體開發流程等等。文件工作,可能很多人很不願意去做,它的確很花費時間。不過,唉。。。老啦,好記性不如爛筆頭啊   8 )。 當然,其實設計文件更多的是為你提供思考的機會,而過往經驗的總結,也可以起到和大家交流技術,共同進步的目的。

這個也是必須的啦,沒有辦法,郵件列表,技術文件,社群,精通英語肯定是很大的優勢,做開源專案尤其如此。閱讀各種spec標準文件之類的速度還是很重要的。閱讀無障礙是一回事,能和母語一樣一目十行,那才爽呀,唉,人生苦短,效率啊!光讀文件,就不知道要比老外多花多少時間。。。。

如何成為優秀的驅動開發工程師

或許這樣的標題,應該是由像linus或greg kh這樣的大師級的高手才有資格寫的吧。但是作為我來說,也許我更想把這個標題作為乙個疑問句來使用,整理一下自己的認識,用來勉勵自己,和大家一起努力實現這個目標。認識膚淺的地方,還請大家見諒。首先要定義,我所認為的乙個優秀的驅動開發工程師,應該具備什麼樣的...

如何成為優秀的測試工程師

軟體測試員的目標是找出軟體缺陷,盡可能早一些。軟體測試員的乙個基本素質是 打破沙鍋問到底。大多數軟體測試員應具備的素質 1.探索精神 軟體測試員不會害怕進入陌生環境。有較強的學習能力,可以用最快的速度成為乙個新的行業的專家 2.3.不懈努力 軟體測試員總是不停嘗試。他們可能會碰到轉瞬即逝或者難以重建...

努力成為優秀的工程師

華為諾亞方舟實驗室首席科學家李航結合自己的親身經驗,提出了成為優秀工程師應該遵循的五項原則 面對問題,解決問題 系統地解決問題 站在使用者角度看問題 以最小的代價獲得最大的效益 磨在細處。我一直在it企業的研究部門任職,迄今經歷了三家公司 nec 微軟 華為。工作都是既有基礎研究,又有產品開發。其實...