别再糾結是Bug還(hái)是新需求了
英文原文:That's Not a Bug, It's a Feature Request
自從我幹上軟件開(kāi)發(fā)這(zhè)一行,并且使用了 Bug 跟蹤系統,我們在每一個項目裡(lǐ)都(dōu)會(huì)糾結一個基本的問題:你怎麼(me)能(néng)把 Bug 與功能(néng)需求區分開(kāi)來?
當然,如果程序崩潰了,這(zhè)毫無疑問是 Bug。不過(guò),那也許隻占你每天所處理問題的 10%。爲了避免項目的徹底失敗,真正的殺手級 Bug——有它存在就(jiù)不能(néng)發(fā)版的 Bug——會(huì)很快被(bèi)消滅。而在 Bug 跟蹤系統裡(lǐ)留下來的絕大部分 Bug,就(jiù)落入了沒(méi)人管的灰色地帶。用戶報告的是 Bug 嗎?不完全是。用戶在要求一個新功能(néng)或完善某個既有功能(néng)嗎?也不完全是。好(hǎo)吧,那到底是什麼(me)?
這(zhè)是一個令人犯難的問題。進(jìn)一步說(shuō),我認爲大部分 Bug 跟蹤系統都(dōu)在“坑”我們,因爲它們讓我們非要回答這(zhè)種(zhǒng)無聊問題,逼著(zhe)我們站隊——要麼(me)海菲茨,要麼(me)麥考伊斯((譯者注請見文末);要麼(me)可口可樂,要麼(me)百事(shì) 可樂;要麼(me)是 Bug,要麼(me)是功能(néng)需求——這(zhè)是一個痛苦的抉擇,選擇哪一方均在一念之差,因爲大部分時(shí)候兩(liǎng)者皆可。從用戶的角度看,Bug 和功能(néng)需求是沒(méi)有區别的。如果你想用一個軟件(或者網站)做某件事(shì)情,但因爲某個功能(néng)沒(méi)有實現而無法完成(chéng);相比于你在使用過(guò)程中因爲出錯而不得不停下來, 兩(liǎng)者之間有區别嗎?
我們來看一個例子:在開(kāi)發(fā) Windows 應用程序的時(shí)候,Visual Studio 沒(méi)有使用正确的字體。這(zhè)算是一個 Bug 還(hái)是功能(néng)需求呢?
我個人覺得這(zhè)是一個 Bug。我猜微軟也是這(zhè)麼(me)認爲的(至少理論上是這(zhè)樣(yàng)),因爲那個問題已經(jīng)在 Microsoft Connect 系統裡(lǐ)存在了 4 年多。當你開(kāi)發(fā)一個 Windows 應用程序,除非你刻意想要使用一種(zhǒng)特殊字體,你難道(dào)不希望使用操作系統的默認字體嗎?好(hǎo)吧,如果你在 Visual Studio 2008 裡(lǐ)創建一個新的窗體,然後(hòu)添加一個标簽控件,看看會(huì)是什麼(me)情況吧:
仿佛一下子回到了 1996 年,因爲你看到的是“可愛的”MS Sans Serif 字體。那是所有新窗體的默認字體。你也别見怪了,所有新開(kāi)發(fā)的應用程序看起(qǐ)來都(dōu)醜陋無比——我的措辭已經(jīng)很克制了!
下面(miàn)是一個對(duì)比:一行标簽用了默認字體,另一行标簽顯式設置了默認的 GUI 字體。
縱觀我所使用過(guò)的應用軟件,我發(fā)現,大部分 Windows 程序員根本不關心設計。這(zhè)可不妙!甚至更糟糕的是,這(zhè)種(zhǒng)對(duì)設計的漠視被(bèi) Visual Studio 攜帶,從 2002 年開(kāi)始不斷地感染著(zhe)每一位用戶。
當然,設計方面(miàn)的問題是很主觀的。在 Windows 圖形用戶界面(miàn)的字體使用方面(miàn),要是我們能(néng)有一些參考資料,那該多好(hǎo)啊!某種(zhǒng)類似于标準的東西。就(jiù)比如微軟給 Windows Vista 用戶體驗定義的那些規範:
- 使用 Aero 主題和系統字體(Segoe UI)
- 使用通用控件和通用對(duì)話框
- 使用标準的窗體邊框,慎用透明效果
- ……
這(zhè)樣(yàng)的規範總共有 12 條。不過(guò),我想要找的恰恰就(jiù)是第一條:應用程序應該使用系統字體。
我爲 Windows Vista 的整體質量扼腕歎息,爲此我也寫過(guò)滿滿的一篇文章。上述這(zhè)份清單看起(qǐ)來很歡樂,其實已經(jīng)不言而喻。特别是第 12 條:預留時(shí)間提升“整體質量”,讓我不禁大笑。在開(kāi)發(fā) Windows Vista 的時(shí)候,微軟想必對(duì)這(zhè)條規範耿耿于懷。值得注意的是,這(zhè)些都(dōu)出自于一個熱愛 Vista 的家夥。
對(duì)不起(qǐ),我跑題了。
盡管 Visual Studio 2008 裡(lǐ)的窗口字體行爲違背了微軟自家的設計規範(中的第一條),這(zhè)個“Bug”卻 4 年多來一直沒(méi)有被(bèi)修正。它被(bèi)悄悄地歸類爲“功能(néng)需求”,然後(hòu)被(bèi)束之高閣了。畢竟,沒(méi)什麼(me)惡劣影響——使用錯誤的字體不會(huì)讓程序崩潰或降低生産力。另一方 面(miàn),想象一下,自從微軟踐踏自家的設計規範以來,有多少大公司的應用軟件已經(jīng)被(bèi)開(kāi)發(fā)出來了啊。要麼(me)因爲開(kāi)發(fā)人員沒(méi)有意識到應用程序的字體與操作系統不匹配 的問題,要麼(me)他們沒(méi)時(shí)間寫一些必要的權變代碼來加以糾正。
沒(méi)錯,這(zhè)是一個小問題。我相信,修正這(zhè)個問題不會(huì)讓 Visual Studio 更好(hǎo)賣,比如多賣給大公司幾千個使用授權。這(zhè)也是它沒(méi)人管的原因吧。
問題依舊:這(zhè)是一個 Bug,還(hái)是功能(néng)需求?
我很喜歡用 UserVoice(Stack Overflow 采用的就(jiù)是這(zhè)個工具),它最讓我心動的一點是,它故意模糊了 Bug 與功能(néng)需求之間的界線。不管怎麼(me)說(shuō),用戶搞不明白它們之間的區别;更糟糕的是,程序員可能(néng)會(huì)據以搪塞用戶。他們把不想做的事(shì)情歸類爲“功能(néng)需求”,從此以 後(hòu)就(jiù)置之不理了。他們會(huì)據理力争,嚷嚷著(zhe)說(shuō)某個被(bèi)報告爲“Bug”的問題顯然不是 Bug,自然也就(jiù)不必修複了。罷了吧,别再區分 Bug 和功能(néng)需求了,讓它們都(dōu)見鬼去吧!
我希望,我們全行業都(dōu)能(néng)少花點時(shí)間在概念的口舌之争上,别再煞費苦心地把用戶反饋區分成(chéng)“Bug”或是“功能(néng)需求”。面(miàn)對(duì)用戶反饋,我們應該多花點時(shí)間做一些有建設性的事(shì)情。(譯者/陸其明)
譯者注:美劇《Hatfields & McCoys》,又名《血仇》,聚焦于美國(guó)聲名狼藉的兩(liǎng)個家族(Hatfields 和 McCoys)之争。兩(liǎng)大家族的争執源自于美國(guó)南北戰争時(shí)期,Anse Hatfield 和 Randall McCoy 本是要好(hǎo)的哥們兒,但不想後(hòu)來生變,二人結下仇怨,甚至引得弗吉尼亞州和肯塔基州都(dōu)不安甯。由此,這(zhè)兩(liǎng)大家族聯手制造了美國(guó)史上最臭名昭著的血腥争端。
登錄 參與評論
評論
暫無任何評論