2009年1月23日 星期五

如何為你的軟體開發團隊評分?

Joel 之前是在微軟Excel Team擔任PM,負責將Excel的巨集語言轉成VB,當時我在VB Team擔任測試工程師,他離開之後換了幾個工作,從2000年之後他自己跟朋友合夥開了一家軟體公司,他企圖創造一個程式設計師(programmers)跟軟體開發者(software developer)為主體的理想工作環境,公司的一切都是為讓開發人員能快樂(所以產能自然會高),至於開發怎麼樣的軟體,他認為不必擔心會水到渠成。說實在的那樣的環境就是10幾年前我剛加入Microsoft時候的樣子,大家真的都捨不得回家,他在2000年發表的這篇文章基本上就是從Microsoft軟體團隊取出的重點。

The Joel Test: 12 Steps to Better Code

如果你想要讓你的開發團隊寫出好的程式,這12條是基本功夫,每個問題的答案都是 yes/no,所以你不用回答but,有就有沒有就沒有,沒有什麼"但是",回答yes給一分,大多數的微軟開發團隊都是滿分12分,Joel的標準是11分還可以接受,10分以下就表示你有嚴重的問題:

1.Do you use source control?
2.Can you make a build in one step?
3.Do you make daily builds?
4.Do you have a bug database?
5.Do you fix bugs before writing new code?
6.Do you have an up-to-date schedule?
7.Do you have a spec?
8.Do programmers have quiet working conditions?
9.Do you use the best tools money can buy?
10.Do you have testers?
11.Do new candidates write code during their interview?
12.Do you do hallway usability testing?

我不在此一一翻譯,有幾項可能字面上不太容易了解的我解釋一下:

8.你的程式設計師有沒有安靜的工作環境?
一般寫程式的人都知道進入一種"忘我境界"的時候產能最高,什麼意思呢?當你埋頭苦幹在解決問題,一下子5小時過去,你才發現自己忘了吃飯,忘了上厠所,就是那樣的狀態(英文用In the Zone一詞),可惜這樣的狀態很容易被打斷,例如:你老闆來找你要報告,或找大家一起開個會,隔壁新手小白看不懂程式不自己去查,喜歡一直來問你,老婆打電話來問別忘了回家的時候順道去買醬油...每個干擾你至少要花15分鐘左右才能再回來。如果你身在一個軟體團隊中,大家沒有這樣的概念,而產能會高的話一定是加班到深夜的時候才能進入狀況。

9.工欲善其事必先利其器
如果寫程式的人用老舊的機器,改幾行程式要花超過15秒才能編譯完成,那大多數的人會等到無聊,結果把時間花在上網或上MSN找朋友;硬碟不夠大的時候你要花多少時間搬東西?除錯的時候,尤其是有UI的程式,沒有雙螢幕怎麼辦?好的軟體團隊絶對不會虐待寫程式的人,如果預算許可,好的工具一定要有,千萬別省小錢花大錢。

11.面試的時候有沒有考寫程式
找個不會寫程式的人來寫程式,就等於請個不會變魔術的魔術師,在美國因為有嚴格法律的規模,請人容易送人走比較難,所以請人的時候要特別小心,台灣可能上班第一天發現不會寫程式就叫人明天不用來了。以後有機會我會跟大家分享怎麼樣從幾分鐘裡找到會寫程式的人。

12.程式好不好用不必問很多人
如果程式送到客戶那裡才被嫌不好用,那事情就嚴重了,其實如果你寫的程式感覺用起來不順,寫的時候你一測就會覺得怪怪的,這時找路過(有空)的同事來試一下,大約5個人就可以發現95%的問題,所以很多時候並不需要大費周章去找專家或不相干的人來批評你的軟體,沒用又花冤枉錢。

你的團隊是幾分呢?如果你有不了解的項目歡迎加入討論。

0 意見: