“你們做的軟件有沒有可能不出現(xiàn)錯誤?”
“不能,軟件總會有缺陷的疮茄,我們能做的是出現(xiàn)錯誤之后能夠及時修正∈瑁”
“那是你們不夠認(rèn)真和細(xì)心,只要投入足夠多的精力和時間苏携,總能避免錯誤的做瞪。“
“微軟那么多頂級的程序員右冻,那么多的用戶幫忙測試装蓬,但他們的Windows系統(tǒng)、Office軟件照樣經(jīng)常出現(xiàn)錯誤纱扭‰怪悖”
”那還是投入的問題,只能說做出完美軟件的代價太大乳蛾,和收益不成正比暗赶,而不能說不可能避免錯誤鄙币。你如果對更上級領(lǐng)導(dǎo)說你的軟件一定會有錯誤,你讓他們怎么想蹂随?“
“領(lǐng)導(dǎo)教訓(xùn)的很對十嘿,這么說的確不合適!”
前些年岳锁,有一次和剛調(diào)入部門的頂頭上司交流時绩衷,產(chǎn)生了上述對話,當(dāng)時我還在想激率,外行的領(lǐng)導(dǎo)就是不了解實際情況咳燕,軟件怎么可能避免錯誤呢?這也太理想化了乒躺。如果軟件可能沒有錯誤的話招盲,那還要ITIL運維標(biāo)準(zhǔn)體系做什么,還要那么多的維護人員做什么聪蘸,之所以有這么多運維從業(yè)者,不正是因為軟件的錯誤不可避免么表制?
多年之后漸漸覺得健爬,那是我自己思維上的狹隘性在作怪,總是喜歡從技術(shù)角度去考慮問題么介,對于管理用途的軟件并且投入非常有限的情況下娜遵,我說的話的確也是事實,卻很難讓人接受壤短。這不是能不能避免錯誤的問題设拟,而是態(tài)度和溝通交流技巧上的問題。
剛學(xué)會編程那幾年久脯,單位的信息化水平還很低纳胧,作為內(nèi)部程序員,寫軟件都是單打獨斗一條龍服務(wù)到底帘撰,后來大項目中所有的那種業(yè)務(wù)咨詢跑慕、架構(gòu)設(shè)計、代碼編寫摧找、美工核行、測試、數(shù)據(jù)庫以及中間件等種種詳細(xì)的分工完全沒有蹬耘。
所以每次寫完一段代碼芝雪,或者改好一個功能之后,便簡單的點幾下综苔,如果沒有問題便匆匆交給用戶使用了惩系。程序員總是有一種莫名的自信位岔,覺得自己寫的代碼怎么可能會有錯誤呢,所以每當(dāng)用戶說自己用的有問題時蛆挫,我總會首先懷疑:“是這家伙不會用吧赃承!”
有時候就索性跑到用戶那里,看著用戶是怎么用軟件的悴侵,然后就覺得用戶的確是在亂操作瞧剖,有的因為輸入特殊字符報錯,有的因為輸入的內(nèi)容過多報錯可免,有的因為沒有輸入內(nèi)容報錯......你們咋就不能按照我設(shè)想的那種好好地操作呢抓于?
不久之后就覺得自己的想法其實很可笑,站在用戶的角度浇借,輸入什么樣的內(nèi)容是他們具體工作的需要捉撮,軟件就是要支持各種各樣的場景,而不是用戶要去遷就你的軟件妇垢。不過仍舊有很多程序員會覺得是用戶有問題巾遭,他們不懂技術(shù)。
那時候我們對軟件的容忍度其實還是挺大的闯估,就像在文章開頭提到的那樣對自己說:“錯誤不可避免”灼舍。
后來軟件做的越來越復(fù)雜,很多錯誤堆積在一起涨薪,有的甚至直接導(dǎo)致用戶不再想使用這些軟件骑素。測試就慢慢成了項目中最大的瓶頸。這也是缺陷無法避免的重要原因刚夺,用戶不愿意耗費太多時間在那里做一些虛擬的數(shù)據(jù)献丑,想著盡快真正的用上軟件。
其實缺陷真的是沒法避免的么侠姑?或許一個大型的軟件不可能面面俱到创橄,但在一些關(guān)鍵的功能環(huán)節(jié)上,有的軟件卻必須做到絲毫不差莽红。例如像火車調(diào)度的軟件筐摘,電廠隔離的軟件,真是容不得半點馬虎船老。
不過有時候也要講究一個投入產(chǎn)出比咖熟,對于一些企業(yè)內(nèi)部的管理性軟件,有的流程很復(fù)雜柳畔,復(fù)用率又比較低馍管,出錯的后果也沒有那么嚴(yán)重。自然就沒有那么多的必要去消除零缺陷薪韩。