和直覺相反,新手的大部分時(shí)間花在外圍活動(dòng)上处硬,真正用來掌握核心業(yè)務(wù)的時(shí)間反倒不多
最近利用業(yè)余時(shí)間給朋友集成一臺(tái)特殊用途服務(wù)器小槐,專用板卡和驅(qū)動(dòng)程序由第三方提供,我的任務(wù)是把軟硬件集成起來荷辕,對(duì)上層軟件提供API和樣例代碼凿跳。大約寫了100行JAVA代碼,配置腳本加起來20行不到疮方,結(jié)果前前后后花掉整整一周的下班時(shí)間控嗜。
回顧整個(gè)工作過程,真正和業(yè)務(wù)相關(guān)的工作差不多3個(gè)小時(shí)案站,非常順利躬审。其實(shí)業(yè)務(wù)本身有一定專業(yè)深度,當(dāng)年入門時(shí)僅僅看各種英文規(guī)范就花掉兩個(gè)月蟆盐。朋友自己有非常熟練的系統(tǒng)集成工程師,找我操刀完全是因?yàn)闃I(yè)務(wù)背景的特殊性遭殉。因?yàn)橛?0多年沒碰過該領(lǐng)域了石挂,這3個(gè)小時(shí)還包括腦補(bǔ)該領(lǐng)域的最新標(biāo)準(zhǔn),以及相關(guān)工具的使用险污。
大部分時(shí)間花在馴服工作環(huán)境上痹愚。實(shí)在沒什么技術(shù)含量,花掉這么多時(shí)間蛔糯,完全是因?yàn)椴皇炀氄N移綍r(shí)工作在一個(gè)有嚴(yán)格配置管理的環(huán)境里面,硬件到軟件蚁飒,操作系統(tǒng)到工具鏈动壤,甚至編輯器都不會(huì)有任何意外。換句話說淮逻,在馴服環(huán)境方面琼懊,我是一個(gè)新手阁簸。好在給朋友估算進(jìn)度的時(shí)候,預(yù)留了處理意外的時(shí)間哼丈。
Robert Martin有一本《Clean Code》启妹,大部分內(nèi)容是老生常談,但是開場(chǎng)白里面引用的那個(gè)實(shí)驗(yàn)給人印象深刻醉旦。實(shí)驗(yàn)用屏幕記錄的方式分析程序員的工作過程饶米,發(fā)現(xiàn)程序員用于敲代碼的時(shí)間少之又少,80%的時(shí)間用在把屏幕滾來滾去閱讀代碼车胡。
我也回放一下整個(gè)過程檬输,看看時(shí)間都去哪兒了?
一吨拍、開發(fā)demo程序褪猛,20分鐘
比計(jì)劃順利。
二羹饰、服務(wù)器開機(jī)伊滋,一個(gè)小時(shí)
成功上電,10分鐘队秩。朋友用的是工控機(jī)笑旺,屁股后面插電源的地方有個(gè)開關(guān),通上電馍资,摁下開關(guān)筒主,機(jī)箱里面的LED燈亮了,但是沒有聲音鸟蟹,感嘆現(xiàn)在的散熱技術(shù)真發(fā)達(dá)乌妙,感情是風(fēng)扇都省了。不對(duì)建钥,顯示器沒檢測(cè)到信號(hào)藤韵,反復(fù)進(jìn)入休眠模式。幸好10幾年前做學(xué)生的時(shí)候用過工控機(jī)熊经,記得它前面板應(yīng)該還有開關(guān)泽艘。找來鑰匙,打開前面板镐依,果然! 終于聽到呼呼的風(fēng)扇聲了匹涮。
進(jìn)入桌面,50分鐘槐壳。朋友只發(fā)給我主機(jī)然低,沒有顯示器,湊巧我家有一臺(tái)閑置的創(chuàng)維電視機(jī),有VGA接口脚翘∽坡可是天殺的創(chuàng)維,電視機(jī)把電腦畫面的左邊部分挪到屏幕外面去了来农,開機(jī)后登錄框只能看到一半鞋真。一半就一半吧,輸入密碼沃于,回車涩咖,咦!不對(duì)繁莹,怎么就進(jìn)入guest模式了檩互?朋友裝的是ubuntu 14,我之前用過的最新的是ubuntu12咨演,從來沒有遇到過這個(gè)情況闸昨。倒騰了好半天,無意間拿鼠標(biāo)點(diǎn)了一下登錄框上面剩下的半個(gè)賬戶名稱薄风,然后再輸入密碼饵较,進(jìn)去了!ubuntu14這個(gè)莫名其妙的feature加上這個(gè)殘廢電視機(jī)遭赂,廢掉我30分鐘循诉。進(jìn)去以后倒是很順利,調(diào)整了分辨率撇他,顯示器也工作正常了茄猫。
三、安裝驅(qū)動(dòng)程序困肩,兩個(gè)晚上
當(dāng)頭一棒划纽。 參照手冊(cè)拷貝驅(qū)動(dòng)程序,修改配置文件锌畸,加載驅(qū)動(dòng)程序阿浓,運(yùn)行驗(yàn)證程序,亂碼+閃退蹋绽。廠商提供了一小段示范程序源代碼,加上調(diào)試信息筋蓖,重新編譯運(yùn)行卸耘,原來是設(shè)備打開失敗。本能趨勢(shì)去檢查kernel日志粘咖,發(fā)現(xiàn)安裝驅(qū)動(dòng)的過程中報(bào)告簽名驗(yàn)證失敗蚣抗,上網(wǎng)搜攻略,可以在驅(qū)動(dòng)程序中關(guān)閉簽名驗(yàn)證功能,幸好供應(yīng)商提供了驅(qū)動(dòng)程序源代碼翰铡,大喜钝域,遂按照攻略關(guān)閉簽名驗(yàn)證,重新編譯锭魔,加載例证。驗(yàn)證程序仍然報(bào)告設(shè)備無法打開。
難倒老師傅迷捧。無可奈何之下求助技術(shù)支持织咧。技術(shù)支持提議用QQ的遠(yuǎn)程桌面幫我調(diào)試,于是先下載wine-QQ漠秋,100M的安裝包笙蒙,慢慢拖下來,末了發(fā)現(xiàn)安裝不上去庆锦。一直懷疑即便安裝了wine-QQ也未必能遠(yuǎn)程控制ubuntu的桌面捅位,于是決定土法上馬,每次執(zhí)行完技術(shù)支持的指令搂抒,當(dāng)即用手機(jī)QQ拍一張屏幕照片發(fā)過去確認(rèn)艇搀。技術(shù)支持一開始懷疑是動(dòng)態(tài)鏈接庫(kù)的軟鏈接的問題,估計(jì)他工作中經(jīng)常遇到這種情況燕耿,可惜我這里軟鏈接沒有問題中符。后來重新編譯安裝驅(qū)動(dòng)程序,重新拷貝動(dòng)態(tài)鏈接庫(kù)誉帅,重新建立軟鏈接淀散,...運(yùn)行驗(yàn)證程序,還是報(bào)同樣的錯(cuò)誤蚜锨。從晚上8點(diǎn)半一直折騰到10點(diǎn)半档插,無果。
得來全不費(fèi)工夫亚再。絕望之下咨詢技術(shù)支持是否還用過其他遠(yuǎn)程桌面郭膛,想到TeamViewer。TeamViewer安裝倒是很順利氛悬,可是技術(shù)支持就是訪問不了则剃。深夜11點(diǎn),覺得麻煩人家這么晚很不好意思如捅,打算明天再戰(zhàn)棍现,不信邪的技術(shù)支持提出把我之前所做的工作全部清除掉,按照他的指令重新來一遍镜遣。死馬當(dāng)成活馬醫(yī)己肮,重新做一遍,問題依舊』哑В恍惚之間娄柳,腦洞小開,嘗試用sudo運(yùn)行測(cè)試程序艘绍,竟然不閃退了赤拒,直覺是成了,看來過去兩個(gè)晚上的時(shí)間是折騰在這個(gè)sudo上了鞍盗。但是廠商所配的測(cè)試程序輸出亂碼需了,無法進(jìn)一步工作。嘗試把廠商提供的樣例代碼存成utf-8般甲,重新編譯肋乍,亂碼消失,確認(rèn)是字符集的問題敷存∧乖欤可是其他程序沒有源代碼。
活干完了锚烦,突然想起下次可以讓技術(shù)支持用qq訪問我的windows電腦桌面觅闽,然后windows電腦通過vnc訪問ubuntu的桌面。
四涮俄、 搞定亂碼蛉拙,兩個(gè)晚上。
一團(tuán)亂碼彻亲。技術(shù)支持建議用遠(yuǎn)程終端訪問服務(wù)器孕锄,他能夠在putty這種遠(yuǎn)程終端程序中搞定亂碼。作為碼農(nóng),是可忍孰不可忍?先是去下載了一個(gè)看文件編碼的工具哟楷,檢查供應(yīng)商提供樣例代碼源文件,了解到原始編碼是 GB2312搭幻。然后上網(wǎng)搜各種治亂碼方略,一部分是專治centos/redhat的,ubuntu用不上,另外一部分ubuntun能用大咱,比如用locale-gen生成GB2312,然后通過修改環(huán)境變量啟用新編碼注益。嘗試過GBK,GB18030,GB2312徽级,始終不能完整解決問題,比如窗口程序能正常轉(zhuǎn)碼了聊浅,但是字符終端仍舊是亂碼。
絕處逢生。因?yàn)椴皇炀毜统祝幸淮沃苯影袵NOME搞癱瘓了旷痕,那個(gè)lauchpad再也找不到可執(zhí)行程序,電腦成了磚頭顽冶,覺得天都快塌了欺抗。幸好后來找到一個(gè)開啟終端程序的快捷鍵,在決定重新安裝系統(tǒng)前一分鐘和電腦重新打開了交流渠道强重。折騰了兩個(gè)晚上绞呈,亂碼還是沒搞定,打算改為在windows上運(yùn)行板卡的管理程序间景。第三天早上佃声,終于發(fā)現(xiàn)了一個(gè)可以工作的亂碼轉(zhuǎn)換方案,luit倘要,簡(jiǎn)單又安全圾亏。
后話
作為老鳥,時(shí)刻提醒自己遇到困難繞道走封拧,始終聚焦在終極目標(biāo)上志鹃,沒有犯換個(gè)燈泡修梯子,最后升級(jí)到要給汽車加油這種低級(jí)錯(cuò)誤泽西。即便如此曹铃,浪費(fèi)掉的時(shí)間還是觸目驚心。
我相信換個(gè)工程領(lǐng)域也能觀察到類似現(xiàn)象捧杉。新手看起來很忙陕见,其實(shí)絕大部分時(shí)間浪費(fèi)在不創(chuàng)造價(jià)值的外圍活動(dòng)上,有人把這叫做踩坑糠溜,成長(zhǎng)的必經(jīng)之路淳玩。對(duì)于個(gè)人來說是成長(zhǎng),對(duì)組織來說是不折不扣的浪費(fèi)非竿。這件事充分說明工程師的經(jīng)驗(yàn)對(duì)一個(gè)組織有多寶貴蜕着。
本文后來根據(jù)伯樂在線的編輯更新,感謝站長(zhǎng)化腐朽為神奇的編輯技巧