别再糾結是(shì)Bug還是(shì)新需求了(le/liǎo)

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

登錄 參與評論
評論
暫無任何評論