搭好測(cè)試這個(gè)安全網(wǎng)
單元測(cè)試是最原始的工程概念之一。單元測(cè)試對(duì)于互聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),一般會(huì)有一個(gè)困難,就是需要大量的“腳手架”,比如為了測(cè)試數(shù)據(jù)庫(kù)操作,必須要有一段代碼 “重置”數(shù)據(jù)庫(kù)的狀態(tài);為了測(cè)試網(wǎng)絡(luò)打包解包,則需要用一個(gè)程序向某個(gè)網(wǎng)絡(luò)端口發(fā)數(shù)據(jù)。而準(zhǔn)備這些測(cè)試工具代碼的時(shí)間往往會(huì)比較長(zhǎng),需要有足夠的耐心去做,但一旦做好了,往往能讓開(kāi)發(fā)風(fēng)險(xiǎn)大大降低。
對(duì)于單元測(cè)試,我認(rèn)為最少應(yīng)該覆蓋所有正確的路徑,以及重點(diǎn)防御的錯(cuò)誤路徑。覆蓋了這些重點(diǎn)關(guān)注的地方之后,放手重構(gòu)代碼就很方便了。
單元測(cè)試應(yīng)該是屬于代碼的一部分,和源代碼一起存放。自動(dòng)構(gòu)建時(shí)也應(yīng)該進(jìn)行檢查輸出結(jié)果。提交代碼時(shí)都會(huì)自動(dòng)運(yùn)行單元測(cè)試,當(dāng)“版本樹(shù)”需要合并“分支” 時(shí),單元測(cè)試尤為重要,而最重要的是在分支上建立的單元測(cè)試。這些測(cè)試會(huì)大大加強(qiáng)系統(tǒng)的穩(wěn)定性,因?yàn)闄z驗(yàn)了“合并”功能產(chǎn)生的代碼—這些代碼是最容易出錯(cuò)的。
自己掌控開(kāi)發(fā)方向
開(kāi)發(fā)工作往往被需求變化“牽著鼻子走”,需求往往會(huì)有很多來(lái)源:產(chǎn)品策劃的想法、老板的意見(jiàn)、用戶的反饋、數(shù)據(jù)統(tǒng)計(jì)的結(jié)論等。提出的各種需求,往往會(huì)對(duì)開(kāi)發(fā)團(tuán)隊(duì)造成很大壓力。這些問(wèn)題都需要我們對(duì)需求做出有效的管理。然而我們應(yīng)該如何去搜集、記錄、過(guò)濾、實(shí)現(xiàn)這些需求呢?
我們需要很好地搜集記錄需求。有的團(tuán)隊(duì)會(huì)設(shè)立兩面故事墻,任何方面的需求,都可以減縮成一個(gè)故事,寫(xiě)到一張便簽紙上,貼到故事墻上,專人處理,而不會(huì)石沉大海。
有的公司會(huì)試圖把這個(gè)事情用電子化流程來(lái)做,但電子化流程有個(gè)顯著的缺點(diǎn),就是為了更多地自動(dòng)化處理,會(huì)加入大量的字段,對(duì)于故事這種還未謹(jǐn)慎定義過(guò)的東西,要認(rèn)真填寫(xiě)太多的資料,無(wú)疑會(huì)給使用者造成額外的負(fù)擔(dān)。
告別救火隊(duì)員
在產(chǎn)品進(jìn)入運(yùn)營(yíng)期間,最牛的程序員似乎總是在充當(dāng)救火員,各種各樣的突發(fā)事件、棘手問(wèn)題中,我們的“高手”往往疲于奔命,永遠(yuǎn)都在做一些補(bǔ)救的措施。有經(jīng)驗(yàn)的人員一直沒(méi)空做開(kāi)發(fā),因此大量的代碼由那些水平較差的人來(lái)完成,反過(guò)來(lái)埋下了更多的問(wèn)題。然而,如果不是忙著亡羊補(bǔ)牢,我們的資深程序員就可以把更多的精力放在開(kāi)發(fā)上,這些有經(jīng)驗(yàn)的程序員所生產(chǎn)的代碼,又會(huì)進(jìn)一步降低出故障的概率,這才是走向良性循環(huán)的方法。
為了減少運(yùn)營(yíng)期間的壓力,在系統(tǒng)設(shè)計(jì)時(shí),就要特別注意關(guān)于可維護(hù)性的非功能需求。運(yùn)營(yíng)事故當(dāng)中,因?yàn)椴渴疱e(cuò)誤所導(dǎo)致的占很大一部分,因此降低部署錯(cuò)誤需要做到:全代碼包發(fā)布,每個(gè)發(fā)布版本要包含所有的可執(zhí)行文件;所有的服務(wù)器上部署的配置文件和數(shù)據(jù)文件都必須做到完全一致,降低更新文件的復(fù)雜度。本機(jī)IP地址應(yīng)該用代碼從網(wǎng)卡上直接讀取,但應(yīng)該提供可以配置的選擇,預(yù)備多個(gè)IP的服務(wù)器使用;只使用命令行方式來(lái)啟動(dòng)不同功能,如選擇配置文件路徑、輸入不同功能進(jìn)程或服務(wù)器的配置;程序支持關(guān)閉、重載配置這兩個(gè)信號(hào)。在處理這兩個(gè)信號(hào)時(shí),都不應(yīng)該讓使用者感覺(jué)突然“掉線”;開(kāi)發(fā)用于安全關(guān)閉程序、重載配置的腳本或功能;開(kāi)發(fā)用戶自動(dòng)重啟所部署進(jìn)程的腳本,以及配置開(kāi)機(jī)自動(dòng)啟動(dòng)所部署的進(jìn)程;每個(gè)進(jìn)程都不應(yīng)該強(qiáng)行鎖定某資源,必須要能做到一份安裝復(fù)制多進(jìn)程并行運(yùn)行等。
每天發(fā)版
如果你想知道項(xiàng)目每一天的開(kāi)發(fā)進(jìn)度,你就必須要做到每天發(fā)版,測(cè)試每天的工作進(jìn)度,如果要順利地每天發(fā)版,就必須建立一個(gè)持續(xù)集成的系統(tǒng)。一般來(lái)說(shuō)持續(xù)集成系統(tǒng)會(huì)有以下的先后步驟:?jiǎn)卧獪y(cè)試—自動(dòng)構(gòu)建—自動(dòng)部署—集成測(cè)試—自動(dòng)發(fā)布。
單元測(cè)試關(guān)鍵是要能堅(jiān)持覆蓋所有新加入的代碼;自動(dòng)構(gòu)建是由構(gòu)建腳本、構(gòu)建服務(wù)器、持續(xù)集成系統(tǒng)幾部分組成。
對(duì)于美術(shù)、產(chǎn)品或者別的非技術(shù)人員,添加的數(shù)據(jù)往往也需要有自動(dòng)部署的工具,而且因?yàn)橥ǔK麄儺a(chǎn)生的文件比較大,每次的全體打包然后覆蓋,可能會(huì)非常沒(méi)效率。雖然事情要做得完美不是很容易,但絕對(duì)是物有所值。
版本列車
我們時(shí)常只是對(duì)技術(shù)工作有版本管理的過(guò)程,而對(duì)于其他環(huán)節(jié),常常停留在最原始的狀態(tài)。我們需要在整個(gè)項(xiàng)目開(kāi)發(fā)的每個(gè)環(huán)節(jié),都進(jìn)行合理的項(xiàng)目管理。在多個(gè)項(xiàng)目的經(jīng)驗(yàn)積累之后,提出了全過(guò)程的項(xiàng)目管理的概念:版本列車。
版本列車的含義是按照項(xiàng)目的工作流程,為每個(gè)有產(chǎn)出的環(huán)節(jié)都定義一個(gè)版本“車廂”,然后按照工作流程的先后依賴順序,形成一個(gè)完整的“版本列車”。第一個(gè)工作環(huán)節(jié)負(fù)責(zé)版本號(hào),然后在這個(gè)版本號(hào)之下填充版本內(nèi)容。當(dāng)工作完成,此版本的工作內(nèi)容則帶著版本號(hào)進(jìn)入下一個(gè)“車廂”,依此類推。
這樣做的好處是,每個(gè)環(huán)節(jié)的每份產(chǎn)出都可以明確地知道其進(jìn)度位置,安排在什么時(shí)候做。對(duì)于需要提前準(zhǔn)備市場(chǎng)推廣或者別的工作部門(mén),有一個(gè)非常明確的長(zhǎng)期計(jì)劃。對(duì)于進(jìn)度管理來(lái)說(shuō),各個(gè)部門(mén)也能知道整個(gè)項(xiàng)目的當(dāng)前狀態(tài)。
論功行賞(績(jī)效評(píng)估)
不管是對(duì)被評(píng)的人,還是對(duì)評(píng)價(jià)別人的來(lái)說(shuō),績(jī)效評(píng)估都非常難做。因?yàn)楹芏喙ぷ鞑⒎悄芎軠?zhǔn)確地列舉出一二三來(lái),工作任務(wù)也可能有大量臨時(shí)變更。太過(guò)主觀會(huì)讓人覺(jué)得草率;非要去依據(jù)可量化的數(shù)據(jù),又過(guò)于死板和片面。但沒(méi)有一個(gè)公司敢不做考核,所以說(shuō)績(jī)效評(píng)估是“明知山有虎,偏向虎山行”。
績(jī)效考核應(yīng)該重點(diǎn)關(guān)注的是做了什么事,而不是做得怎么樣。這個(gè)讓很多按“結(jié)果”管理的老板很不接受?(jī)效考核應(yīng)該是推動(dòng)別人去做某件事的工具。對(duì)于已經(jīng)明確的方法或者子目標(biāo),通過(guò)這種細(xì)化的方式去指導(dǎo)下屬工作。因?yàn)槭切枰潞笏阗~的,而且是量化的,所以下屬會(huì)對(duì)這個(gè)事情很認(rèn)真,同時(shí)那些不好量化的事情,管理者也很難執(zhí)行績(jī)效考核。所以“去做某些事”,是績(jī)效考核最好的目標(biāo)。
通過(guò)考核結(jié)果提供正式的工作方法意見(jiàn)?(jī)效考核本身有個(gè)反饋的過(guò)程,這個(gè)反饋的過(guò)程應(yīng)該提供給下屬針對(duì)每個(gè)具體事情的建議。這種具體地,單獨(dú)地,一對(duì)一地指導(dǎo),會(huì)提高團(tuán)隊(duì)的穩(wěn)定性,而且也讓團(tuán)隊(duì)成員獲得“受關(guān)注”的感覺(jué),這種感覺(jué)是形成高效團(tuán)隊(duì)的重要工具。
考核不能代替目標(biāo),不能阻礙目標(biāo),而應(yīng)該是一個(gè)溝通工具。目標(biāo)達(dá)成情況是考核的客觀指標(biāo),但不應(yīng)該作為主要績(jī)效考核指標(biāo)。最簡(jiǎn)單的績(jī)效考核指標(biāo)就是收入或者利潤(rùn)率。但這種簡(jiǎn)單指標(biāo)除了在動(dòng)機(jī)上提高下屬的工作熱情外,并沒(méi)有從方法和經(jīng)驗(yàn)上幫助團(tuán)隊(duì)成員。有效的考核應(yīng)該是引導(dǎo)下屬按照更有經(jīng)驗(yàn)的方法去實(shí)現(xiàn)目標(biāo)。 本新聞共 2頁(yè),當(dāng)前在第 2頁(yè) 1 2
想認(rèn)識(shí)全國(guó)各地的創(chuàng)業(yè)者、創(chuàng)業(yè)專家,快來(lái)加入“中國(guó)創(chuàng)業(yè)圈”
|