當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 行業(yè)百科 > 嵌入式學(xué)習(xí)經(jīng)驗(yàn) 老外Bruce Douglass專訪
Bruce Douglass是嵌入式與UML應(yīng)用資深專家,這個(gè)擁有30余年的嵌入式從業(yè)經(jīng)歷,看看他的嵌入式領(lǐng)域經(jīng)驗(yàn)與嵌入式學(xué)習(xí)感悟分享內(nèi)容有哪些?
是什么吸引你加入嵌入式學(xué)習(xí)過程,從此開始編程的職業(yè)生涯?
表面上看,編程就是想要實(shí)現(xiàn)什么就寫什么代碼;但事實(shí)是,敲代碼只是軟件開發(fā)過程中很小的一部分,程序員的工作還包括安全分析、責(zé)任分析、產(chǎn)品驗(yàn)證、產(chǎn)品分析等。
在嵌入式從業(yè)開發(fā)過程中,應(yīng)該如何來提高自己的技能?
重要的是實(shí)踐,就像要練好標(biāo)槍就必須勤加練習(xí),編程也是一樣。在我的書中,我一直都嘗試加入更多的實(shí)例設(shè)計(jì);從我參與過許多系統(tǒng)的開發(fā)——計(jì)算機(jī)斷層掃描、醫(yī)療(如心臟起搏器、呼吸機(jī))、無人機(jī)、自動(dòng)化、航空航天、運(yùn)載火箭系統(tǒng)等——我發(fā)現(xiàn)不同行業(yè)有著不同的應(yīng)用環(huán)境,但同時(shí)也有共通性,我們需要在不斷的實(shí)踐中總結(jié)知識(shí)。經(jīng)歷會(huì)帶給人財(cái)富,有一次我兒子問我,怎樣才能成為作家,我告訴他,首先你要開始寫作。
在不同領(lǐng)域嵌入式開發(fā)的過程當(dāng)中,得到了哪些經(jīng)驗(yàn)總結(jié)?
一是要發(fā)散思維克服目光短淺。我做顧問時(shí),經(jīng)常看到一些根本不可能實(shí)現(xiàn)的案例,當(dāng)事人卻置身其中毫無察覺。面對(duì)問題時(shí),我們需要走出定勢(shì)思維,從不同的角度尋找解決辦法,并通過思考尋找問題的底層機(jī)理所在。比如,大學(xué)時(shí)我基本沒上過化學(xué)課,但能通過推測(cè)解答試題的辦法通過了考試。我們要學(xué)會(huì)看到事情之外,退一步想想事情發(fā)生的根本原因,總結(jié)所做過的嘗試、預(yù)測(cè)以及終成功的方法,然后在確保成功的前提下嘗試更多的解決辦法.。我們需要制定相應(yīng)的度量標(biāo)準(zhǔn),用來記錄并展示過程中的成與敗及總目標(biāo)。
二是要建立數(shù)學(xué)思維,提高準(zhǔn)確性。一些人常常固執(zhí)己見,忽略事實(shí),即使現(xiàn)實(shí)已經(jīng)證明他們的理論和想法不實(shí)際,他們卻依然堅(jiān)持——這是沒有意義的行為。理論需要實(shí)踐來驗(yàn)證對(duì)與錯(cuò)。在做開發(fā)工作時(shí),我們需要一套度量標(biāo)準(zhǔn)用于評(píng)測(cè),要以取得進(jìn)步為目的,而不只是實(shí)現(xiàn)某個(gè)計(jì)劃,相較于“如何實(shí)現(xiàn)計(jì)劃”,“如何實(shí)現(xiàn)目的”則是更好的度量標(biāo)準(zhǔn)。
三是要學(xué)會(huì)合理地做計(jì)劃。通常軟件行業(yè)制作的計(jì)劃都有兩種目的,一種是用于申請(qǐng)計(jì)劃所需時(shí)間及經(jīng)費(fèi);另一種則是用于激勵(lì)員工努力工作,這種計(jì)劃本身就存在著矛盾。合理的計(jì)劃一定要基于現(xiàn)實(shí),并有相應(yīng)的度量標(biāo)準(zhǔn)來記錄工作進(jìn)度及工時(shí)。我在做項(xiàng)目管理時(shí)就有很多這樣的度量規(guī)則,我一般只會(huì)預(yù)估完成一半任務(wù)所需的時(shí)間,這樣前后兩部分任務(wù)可在時(shí)間上做靈活調(diào)整;對(duì)于具體某個(gè)人的進(jìn)度,我不會(huì)做預(yù)估,因?yàn)榛径紩?huì)延時(shí)。統(tǒng)計(jì)學(xué)中有一個(gè)“中心極限定理”——通常我們只有50%的幾率能夠達(dá)成預(yù)估時(shí)間表。
在嵌入式學(xué)習(xí)或是嵌入式軟件系統(tǒng)領(lǐng)域中,開發(fā)者會(huì)遇到哪些常見的誤區(qū)?
首先,人們常在沒有實(shí)踐的情況下做出判斷。比如有些人經(jīng)常想當(dāng)然的認(rèn)為不過是軟件/硬件,沒有什么難的。沒有實(shí)踐,任何事情看起來都很簡單。只有當(dāng)你深入某個(gè)領(lǐng)域時(shí),才能慢慢意識(shí)該領(lǐng)域的復(fù)雜性。如今的系統(tǒng)已經(jīng)比幾年前復(fù)雜數(shù)百倍,相應(yīng)的安全性及可靠性也隨之提高,相關(guān)的工作變得更復(fù)雜。
其次,人們通常認(rèn)為緊湊的工期能夠激勵(lì)員工更努力的工作。事實(shí)上,這種激勵(lì)方式多只能生效一次。第一次,員工可能會(huì)乖乖一天拼命工作20個(gè)小時(shí)以完成任務(wù),第二次他們就開始有些遲疑,到了第三第四次,他們也就不以為然了。我曾經(jīng)有個(gè)老板說“現(xiàn)實(shí)是友好的”,我卻始終認(rèn)為現(xiàn)實(shí)就是現(xiàn)實(shí),不友好但也不壞,現(xiàn)實(shí)不容忽視,我們要時(shí)刻保持理性。我發(fā)現(xiàn)很多組織內(nèi)部都存在著各種架構(gòu)或者工期制定的問題,他們從不根據(jù)事實(shí)制定計(jì)劃,不認(rèn)真思考總結(jié),只通過憑空想象,然后期望能夠如期完成。
在嵌入式學(xué)習(xí)中,與早些年相比,嵌入式軟件開發(fā)領(lǐng)域大的變化是什么?
我覺得變化主要有三點(diǎn)。第一是范圍,我開發(fā)的第一個(gè)軟件,心臟起搏器,是一個(gè)基于6502處理器的、很小的、實(shí)時(shí)多任務(wù)操作系統(tǒng)的匯編程序,系統(tǒng)只有8KB。如今系統(tǒng)的空間和功能實(shí)現(xiàn)跟以前比起來,早已不在一個(gè)量級(jí),過去的系統(tǒng)很小而且功能簡單,現(xiàn)今的系統(tǒng)要比以前復(fù)雜千倍。
第二是規(guī)則變化,包括一些安全可靠性服務(wù)。如今的安全監(jiān)管功能增加了很多對(duì)開發(fā)的質(zhì)量要求規(guī)則。以前如果機(jī)器壞了我們可以直接關(guān)掉,如今卻不行,例如輸氧設(shè)備或者正在駕駛的飛機(jī),我們并不能直接關(guān)掉它,也就是說如今的質(zhì)量需求要比以前多得多。
第三是集成。當(dāng)今世界是一個(gè)億萬臺(tái)設(shè)備相互連接的互聯(lián)空間,這同時(shí)意味著我們正面臨著史無前例的安全隱患。在這些普通移動(dòng)設(shè)備、主板、娛樂系統(tǒng)、自動(dòng)系統(tǒng)、傳感器系統(tǒng)設(shè)備中,他們不僅可以開關(guān)機(jī)、開啟或鎖定防火墻,還可以盜取信息、重寫引擎軟件。在過去如果有人想偷車,就必須先把車門撬開;而如今,只需要黑入汽車系統(tǒng)改寫軟件就能把車偷走。這是安全級(jí)別的一個(gè)巨大改變,50年前還沒有電力系統(tǒng),20年前有了電力系統(tǒng),但是還沒有軟件,如今一個(gè)病毒就可以攻擊幾萬臺(tái)設(shè)備并導(dǎo)致一座城市的癱瘓。
對(duì)于的嵌入式開發(fā)者來講,在嵌入式學(xué)習(xí)過程中,有哪些更好地建議要分享?
在我看來,開發(fā)者即革新者,而革新一定不能畏懼失敗,不能因?yàn)樗说牟徽J(rèn)可而輕易放棄。另外,作為一名開發(fā)者,不能只關(guān)注系統(tǒng)的功能實(shí)現(xiàn),還要關(guān)注質(zhì)量保障,系統(tǒng)功能的實(shí)現(xiàn)要圍繞著安全、可靠和高效進(jìn)行實(shí)施。要擁有獨(dú)立并機(jī)智地使用不同技能的能力,勇于面對(duì)錯(cuò)誤并及時(shí)修正。根據(jù)我的經(jīng)驗(yàn),在新事物的應(yīng)用過程中,通常會(huì)有25%的錯(cuò)誤概率,如果沒有,那你一定沒有努力地應(yīng)用新技術(shù)。大部分人都喜歡恪守陳規(guī),而我寧愿是個(gè)例外,這同時(shí)意味著會(huì)做出一些令人難以置信的錯(cuò)誤決定,不過沒有什么大不了,下次改正就好了。