本文篇幅較長(zhǎng),但是對(duì)于程序員來說仔細(xì)看完肯定會(huì)有收獲,作者對(duì)于開發(fā)和項(xiàng)目治理的功力頗深,文中的許多經(jīng)驗(yàn)辦法微軟沿用至今。也許讀完項(xiàng)目治理需要很長(zhǎng)的時(shí)間和大量金錢,但是joel的這一套衡量系統(tǒng),按joel的話說:“三分鐘你就可把握。你可以把省下的時(shí)間去讀醫(yī)學(xué)院了”(注:美國(guó)的醫(yī)學(xué)院可是要讀死人的!)。下面我們就開始吧!
Joel 衡量法則
你們用不用源文件治理系統(tǒng)?
你們可以把整個(gè)系統(tǒng)從源碼到CD映像文件一步建成嗎?
你們天天白天都把從系統(tǒng)源碼到CD映像做一遍嗎?
你們有軟件蟲治理系統(tǒng)嗎?
你們?cè)趯懶鲁绦蛑翱偸前熏F(xiàn)有程序里已知的蟲解決嗎?
你們的產(chǎn)品開發(fā)日程安排是否反映最新的開發(fā)進(jìn)展情況?
你們有沒有軟件開發(fā)的具體說明書?
你們的程序員是否工作在安靜的環(huán)境里?
你們是否使用現(xiàn)有市場(chǎng)上能買到的最好的工具?
你們有沒有專職的軟件測(cè)試人員?
你們招人面試時(shí)是否讓寫一段程序?
你們是否隨便抓一些人來試用你們的軟件?
“Joel 衡量法則”好就好在你只需照著逐條回答以上問題,然后把所答為“是”的問題算成一分,再加起來就可以了,而不需要去算什么天天寫的程序行數(shù)或程序蟲的平均數(shù)等等。但咱丑話說在前面,可別用“Joel 衡量法則”去推算你的核電站治理程序是否可靠。
假如你們得了12分,那是最好,得了11分還過得去,但假如只得了10分或低于10分,你們可能就有很嚴(yán)重的問題了。嚴(yán)酷的現(xiàn)實(shí)是:大多數(shù)的軟件開發(fā)公司只能得到2到3分。這些公司假如得不到急救可就玄了,因?yàn)橄裎④涍@樣的公司從來就沒有低過12分。
當(dāng)然,一個(gè)公司成功與否不僅僅只取決于以上標(biāo)準(zhǔn)。比如,讓一個(gè)治理絕佳的軟件公司去開發(fā)一個(gè)沒有人要的軟件,那開發(fā)出來的軟件也只能是沒有人要。或反過來,一幫軟件痞子以上標(biāo)準(zhǔn)一條也達(dá)不到,沒準(zhǔn)照樣也能搞出一個(gè)改變世界的偉大軟件。但我告訴你,假如不考慮別的因素,你只要能達(dá)到以上12條準(zhǔn)則,你的團(tuán)隊(duì)就是一個(gè)可以準(zhǔn)時(shí)交活的紀(jì)律嚴(yán)明的好團(tuán)隊(duì)。
1. 你們用不用源文件治理系統(tǒng)?
我用過商業(yè)化的源文件治理系統(tǒng),我也用過免費(fèi)的系統(tǒng),比如CVS,告訴你吧,CVS挺好用。但假如你根本就沒有用源文件治理系統(tǒng),那你就是累死了也沒法讓你的程序員出活:他們沒法知道別人在改動(dòng)什么源文件,寫錯(cuò)了的源文件也沒法恢復(fù)。
使用源文件治理系統(tǒng)還有一大好處是,由于每一位程序員都把源文件從源文件治理系統(tǒng)里提出來放到自己的硬盤里,幾乎不會(huì)發(fā)生丟失源文件的事,最起碼我還沒聽說過。
2. 你們可以把整個(gè)系統(tǒng)從源碼到CD映像文件一步建成嗎?
這句話問的問題是:從你們最新的源碼開始到建立起能夠交出去的最后文件,你們有多少步驟要做? 一個(gè)好的團(tuán)隊(duì)?wèi)?yīng)該有一個(gè)批處理程序一步便可將所有的工作做完,像把源文件提取出來,跟據(jù)不同的語(yǔ)言版本要求(英文版,中文版),和各種編譯開關(guān)(#ifdef)進(jìn)行編譯,聯(lián)接成可執(zhí)行文件,標(biāo)上版本號(hào),打包成CD映像文件或直接送到網(wǎng)站上去,等等等等。
假如這些步驟不是一步做完,就有可能出人為差錯(cuò)。而且當(dāng)你很接近產(chǎn)品開發(fā)尾聲的時(shí)侯,你可能很急于把最后幾個(gè)蟲解決,然后盡快地交活。假如這時(shí)候你需要做20步才能把最終文件制出來,你肯定會(huì)急得要命,然后犯一些很不該犯的錯(cuò)誤。
正因?yàn)檫@個(gè)原因,我工作的前一個(gè)公司從用WISE改用InstallShield:我們必需要讓我們的批處理程序完全自動(dòng)化地,在夜里,被NT scheduler起動(dòng)把最終文件制成,WISE不能被NT scheduler啟動(dòng)而InstallShield可以,我們只能把WISE扔掉。(WISE的那幫家伙向我保證他們的下一代產(chǎn)品一定支持在夜里自動(dòng)運(yùn)行.)
3. 你們天天白天都把從系統(tǒng)源碼到CD映像做一遍嗎?
你們有沒有碰到過這樣的事情:一個(gè)程序員不小心把有毛病的源碼放進(jìn)源文件治理系統(tǒng),結(jié)果造成最終文件沒法制成。比如,他建立了一個(gè)新源文件但忘了把它放進(jìn)源文件治理系統(tǒng),然后他高興奮興鎖機(jī)回家了,因?yàn)樵谒臋C(jī)器上整個(gè)編譯得很好。可是別人卻因?yàn)檫@沒法工作下去了,也只好悶悶地回家了。
這種造成最終文件沒法制成的情況很糟糕,但卻很常見。假如天天在白天就把最終文件制一遍的話,就可以讓這種事不造成太大危害。在一個(gè)大的團(tuán)隊(duì)里,要想保證有毛病的源碼及時(shí)得到糾正,最好天天下午(比如午餐時(shí))制一下最終文件。午餐前,每個(gè)人都盡可能地把改動(dòng)的源文件放到源文件治理系統(tǒng)里,午餐后,大家回來,假如最終文件已經(jīng)制成了,好!這時(shí)大家再?gòu)脑次募卫硐到y(tǒng)里取出最新的源文件接著干活。假如最終文件制作出錯(cuò),出錯(cuò)者馬上修正,而別人還可接著用原有的沒問題的源程序干活。
在我以前曾干過的微軟Excel開發(fā)組里,我們有一條規(guī)定:誰(shuí)造成最終文件制作出錯(cuò),誰(shuí)就得被罰去負(fù)責(zé)監(jiān)視以后的最終文件制作過程,直到下一位造成最終文件制作出錯(cuò)的人來接任他。這樣做不僅可以督促大家少造成最終文件制作出錯(cuò),而且可以讓每個(gè)人都有機(jī)會(huì)去了解最終文件制作過程。
假如想更多了解這個(gè)話題,可以讀我的另一篇文章 Daily Builds are Your Friend.
4. 你們有軟件蟲治理系統(tǒng)嗎?
不論你有任何借口,只要你寫程序,哪怕只是一個(gè)人的小組,假如你沒有一個(gè)系統(tǒng)化的治理軟件蟲的工具,你寫的程序的質(zhì)量一定高不了。許多程序員覺得自己可以記得自己的軟件蟲。沒門!我從來記不住超過2到3個(gè)軟件蟲。而且第二天早上起床后忙著去買這買那,好不輕易記住的軟件蟲早忘掉了。你絕對(duì)需要一個(gè)系統(tǒng)來管住你的那些蟲。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注