產(chǎn)品盡量通用,幫助擺脫重復(fù)勞動(dòng)
網(wǎng)上有個(gè)調(diào)侃公司中那些倚老賣老、工作中偷奸?;睦嫌妥拥亩巫诱f:你哪里有十年工作經(jīng)驗(yàn),您吶不過是把一年的工作經(jīng)驗(yàn)用了十年而已!
本文引用地址:http://2s4d.com/article/201909/404357.htm短短兩句俏皮話兒,一個(gè)不思進(jìn)取,長年在一個(gè)崗位上厚著臉皮吃老本的混子形象躍然紙上??芍^調(diào)侃辛辣,一針見血,很是讓孜孜不倦地鉆研苦干、打怪升級(jí)漲經(jīng)驗(yàn)的我輩過癮。
但是且慢,其實(shí),不少老實(shí)巴交的工程師并非那么滑頭,不求上進(jìn),只想長歲數(shù)不長經(jīng)驗(yàn),實(shí)在是因?yàn)楹芏鄷r(shí)候,甘做革命螺絲釘?shù)乃麄儼汛蟀训木速M(fèi)在了重復(fù)勞動(dòng)上而已。
1
工程師的成長要講一命二運(yùn)三風(fēng)水。
倘若生于“必有余慶”的積善之家,祖上積德,攤上一個(gè)好上司,碰到一個(gè)好搭檔,又趕上一個(gè)好平臺(tái),自然如魚得水,大鵬展翅,想不上進(jìn)都難。
但要是運(yùn)氣差,被上司看不慣,只給些不露臉的臟活累活干,自然也得不到機(jī)會(huì)實(shí)干和鍛煉?;蛘呓?jīng)常被無腦的搭檔拖累得翻車,一起陪著背鍋,也只能無奈地把歲月蹉跎。再或者平臺(tái)確實(shí)太差,任你底子再好也蹦跶不了幾下。
我司是一個(gè)從事產(chǎn)品開發(fā)和技術(shù)服務(wù)業(yè)務(wù)的單位,平臺(tái)一般般,但也不算爛,工程師為主,人際關(guān)系簡單。只要埋頭苦干,或者經(jīng)常厚著臉皮跑到領(lǐng)導(dǎo)那里點(diǎn)贊,一般都可以得到鍛煉提升的機(jī)會(huì),慢慢混成數(shù)量有限的骨干。
長期工作下來,同事之間自然也劃開了明確的界限。有賣力工作的真骨干,有跟領(lǐng)導(dǎo)打得火熱的假骨干,也有一些人,既水平有限,又不得領(lǐng)導(dǎo)待見,只能在大大小小的機(jī)會(huì)和待遇面前靠邊站。
我司的齊工,就是這么一位邊緣人。
他呢,底子有點(diǎn)差,面皮又有點(diǎn)薄,得不到機(jī)會(huì)鍛煉,于是只好打打雜兒,久而久之,成了我們這里的“勤雜工”。
他有時(shí)在產(chǎn)品研發(fā)中擔(dān)任個(gè)可有可無的角色,搞搞底層驅(qū)動(dòng),給真假骨干們打打下手。有時(shí)完全被無視,只好替人跑跑腿,買個(gè)件,焊個(gè)板子,接接線擰擰螺絲來打發(fā)時(shí)間。有時(shí)也會(huì)被領(lǐng)導(dǎo)“委以重任”,給某個(gè)快要量產(chǎn)的產(chǎn)品做個(gè)測試工裝。
總之,他就這樣日復(fù)一日地看著白天黑夜交錯(cuò),蹉跎著歲月,蹉跎著自我。不過,齊工雖說不招領(lǐng)導(dǎo)待見,我們這些勞苦大眾倒是很喜歡他。也是,人畜無害,還能幫你干點(diǎn)活,誰不喜歡呢?
齊工在我們這里待了七八年了,卻和我打交道不多,直到有一次給我快要完成開發(fā)的產(chǎn)品做測試工裝,我倆才有了第一次親密接觸。
2
說起來,齊工是做測試工裝的老手了。在調(diào)到我所在的項(xiàng)目組幫忙時(shí),他至少做了三四個(gè)測試工裝了。
我看過他做的那幾個(gè)工裝,尺寸有大有小,電路大同小異,這也難怪,我們這邊做的產(chǎn)品本來就差不太多,測試它們的工裝自然也大差不差了。
所以,齊工這次出馬算是輕車熟路,咔咔一頓復(fù)制粘貼,電路板的原理圖和PCB就畫好了。畫好之后,制板之前,他跑到我這里借著工作嘮起了閑嗑。
我這人是極好相與的,也喜歡閑扯淡,所以就借著工作跟齊工熱火朝天地聊了起來。當(dāng)齊工跟我說起這次做測試工裝的板子純屬浪費(fèi)時(shí)間、蹉跎生命的重復(fù)勞動(dòng),導(dǎo)致自己沒有時(shí)間真正地提升自我時(shí),我這操閑心的毛病又起來了,就自告奮勇地向他獻(xiàn)了一計(jì)。
說到這兒,先跟大家科普一下“測試工裝”是干嘛的。
在電子產(chǎn)品的批量生產(chǎn)過程中,為了驗(yàn)證所生產(chǎn)的產(chǎn)品沒有出現(xiàn)焊錯(cuò)件、漏焊、非正常短路、元器件殘次等質(zhì)量問題,并滿足大批量生產(chǎn)過程中在生產(chǎn)線上的節(jié)奏,需要做一個(gè)能夠測試所生產(chǎn)產(chǎn)品的工裝,對(duì)它進(jìn)行進(jìn)行一些功能測試,必要時(shí)還要進(jìn)行力所能及的性能測試,以確保產(chǎn)品的質(zhì)量。所以,測試工裝是一種重要的生產(chǎn)管理工具,它能夠高效率并全面地判斷所生產(chǎn)產(chǎn)品的質(zhì)量。
前面說過,我司做的產(chǎn)品大同小異,它們的輸入輸出接口也很相似,可以涵蓋在開關(guān)、脈沖、通信端口及功率驅(qū)動(dòng)的范圍內(nèi),不同產(chǎn)品功能有些不同,導(dǎo)致測試工裝的軟件必然有些不同,但是其輸入輸出接口的性質(zhì)一樣,這導(dǎo)致測試工裝的硬件必然大同小異。
這樣,就像齊工所抱怨的那樣,測試工裝的電路板長得像是異父異母的親兄弟一樣,必然存在一定程度上的重復(fù)開發(fā)問題。
這里面就大有文章可做。我跟他分析了做一款通用測試工裝的可能性和大致方案。
3
最初,我想得比較簡單,既然公司產(chǎn)品差不多,就索性做一個(gè)大而全的測試工裝電路板,在電路板上支持各種接口,并且盡量增加各路信號(hào)的通道數(shù)。無論哪個(gè)產(chǎn)品,最終都用這個(gè)測試工裝的電路板來測,測試簡單的產(chǎn)品時(shí),接線少一些,工裝軟件也簡單一些,測試復(fù)雜的產(chǎn)品時(shí),無非是接線多一些,工裝軟件也復(fù)雜一些而已。
可是,我向齊工和盤托出這個(gè)想法后,他就把腦袋搖成了一個(gè)撥浪鼓。原來,他之前向領(lǐng)導(dǎo)建議過這個(gè)方案,卻被無情地懟了回來。
“做那么大的板子,有那么多無用的通道,編程時(shí)不得多累心呀?測試不同的產(chǎn)品時(shí),不是還得在工裝上編寫不同的軟件?而且接線方式那么靈活,是不是很容易搞亂?”他帶著沮喪的語氣向我復(fù)述了領(lǐng)導(dǎo)懟他的“靈魂三問”。
他眼神迷離,神情沮喪,再牛逼的肖邦,也彈不出他那種憂傷。
看著齊工一副垂頭喪氣的模樣,我悲心大動(dòng)。幫人幫到底,送佛送到西。于是乎,我一邊揣摩著領(lǐng)導(dǎo)的話中背后的含義,一邊構(gòu)思著更進(jìn)一步通用的方案。
“既然電路板通用滿足不了領(lǐng)導(dǎo)的胃口,那就索性讓電路板上的程序也通用!”我咬著后槽牙,向齊工道出了自己的想法。
在這里,需要給各位看官說明的是,一個(gè)完整的測試工裝包括上位機(jī)和下位機(jī)兩個(gè)部分。上面一直跟大家掰扯的這個(gè)電路板及其板上的嵌入式軟件只是個(gè)下位機(jī),在PC機(jī)上還有個(gè)上位機(jī)軟件,做些測試數(shù)據(jù)管理、測試流程調(diào)度、數(shù)據(jù)監(jiān)控和存儲(chǔ)、測試結(jié)果顯示、生產(chǎn)日期記錄、版本號(hào)管理、序列號(hào)追蹤等一些必須在電腦上完成的工作。
讓下位機(jī)的板子和程序都通用,言外之意就是讓上位機(jī)承擔(dān)起具體功能測試的發(fā)起和結(jié)果判斷,下位機(jī)只做為信號(hào)的“管道”,不承擔(dān)任何功能邏輯的解析。
它的工作是根據(jù)上位機(jī)的指令,在輸出接口上給定相應(yīng)的輸出,這是對(duì)被測對(duì)象的“激勵(lì)”,同時(shí)將輸入接口上的狀態(tài)數(shù)據(jù)實(shí)時(shí)發(fā)送到上位機(jī)上,這是被測對(duì)象的“響應(yīng)”。
只要下位機(jī)配備足夠多的信號(hào)管道,完成與與被測單元的硬件連接,并做好上位機(jī)和被測對(duì)象之間的“傳令官”,完全可以做到與具體應(yīng)用無關(guān)。
和具體應(yīng)用無關(guān),豈不就是“通用”嗎?
4
齊工的眼睛慢慢放出光來,俄頃又發(fā)出疑惑的表情來,“下位機(jī)這個(gè)信號(hào)管道怎么管理呢?它是個(gè)什么形式呢?”
好問題,下位機(jī)要連接不同的被測對(duì)象,可是被測對(duì)象的輸入輸出接口有區(qū)別,齊工的問題實(shí)際上是:怎么以“信號(hào)管道”的概念來無差異化管理這些接口呢?
答案是:實(shí)現(xiàn)多種性質(zhì)的信號(hào)通道,并給它分配編號(hào),以“信號(hào)性質(zhì)+編號(hào)”的形式建立起信號(hào)通道列表,然后上下位機(jī)要維護(hù)相同的列表。
下位機(jī)是信號(hào)通道的平臺(tái)載體,在PC機(jī)的控制下實(shí)現(xiàn)對(duì)各個(gè)輸出方向的信號(hào)通道的操作,周期性地反饋各個(gè)輸入方向的信號(hào)通道的狀態(tài)。這些信號(hào)通道和被測對(duì)象的接線方式由測試人員在上位機(jī)上設(shè)定(當(dāng)然,怎么設(shè)定就得怎么接線哦),具體的內(nèi)容解析則由上位機(jī)進(jìn)行解釋。
舉個(gè)例子吧,在測試工裝上實(shí)現(xiàn)30路數(shù)字輸入端口,信號(hào)性質(zhì)是“數(shù)字輸入”,編號(hào)從1-30,在工裝上以固定周期(比如50毫秒)定時(shí)采集這些端口,通過一個(gè)報(bào)文以固定周期發(fā)送到上位機(jī)上,上位機(jī)就可以根據(jù)這些端口狀態(tài),判斷具體的測試條目有沒有通過了。
上位機(jī)和下位機(jī)可以用“信號(hào)性質(zhì)”做報(bào)文ID,比如“數(shù)字輸入”用1表示,“數(shù)字輸出”用2表示,上面那個(gè)例子中,報(bào)文ID=1,數(shù)據(jù)場用4個(gè)字節(jié),以30個(gè)bit對(duì)應(yīng)30路數(shù)字輸入端口的狀態(tài),這樣,報(bào)文的格式就是:
報(bào)文頭+1(信號(hào)性質(zhì):數(shù)字輸入)+4(報(bào)文內(nèi)容長度)+報(bào)文內(nèi)容(30路數(shù)字輸入端口狀態(tài))+校驗(yàn)和
上位機(jī)根據(jù)報(bào)文ID,便可以依次提取出這30路輸入狀態(tài),再根據(jù)之前設(shè)定好的接線方式,就可以確定被測對(duì)象的哪個(gè)具體的輸出信號(hào)是個(gè)啥狀態(tài)了。
我鼓著腮幫子講得天花亂墜,齊工的眼睛間或一輪,不時(shí)地對(duì)我放出崇拜的光來?!拔胰ジI(lǐng)導(dǎo)匯報(bào)匯報(bào)?”齊工跟我反復(fù)討論了技術(shù)細(xì)節(jié)后,信心再度膨脹起來。
我重重地點(diǎn)了點(diǎn)頭,同時(shí)囑咐他,一定要給領(lǐng)導(dǎo)說一句提綱挈領(lǐng)的話:產(chǎn)品盡量通用,可以幫助擺脫重復(fù)勞動(dòng)!
評(píng)論