怎樣做好需求評(píng)審?
作者 | 少個(gè)分號(hào)
Bug 對(duì)于軟件來說是顯而易見的,程序員犯了一絲毫的錯(cuò)誤就會(huì)帶來 Bug。
需求則不同,不適當(dāng)?shù)男枨笸⒉皇悄敲疵黠@,而且暴露的很晚。錯(cuò)誤的需求往往不會(huì)責(zé)備需求的提出方,因?yàn)榛ヂ?lián)網(wǎng)時(shí)代需要快速 “試錯(cuò)”,而糾正需求所產(chǎn)生的工作卻落到了工程師頭上。
顯然,這似乎不太公平。錯(cuò)誤的需求難以被質(zhì)疑,這也帶來了需求的肆意膨脹,是軟件設(shè)計(jì)不加以克制的原因。
下面是一個(gè)檢查清單,用于軟件工程師在接受需求時(shí)來評(píng)審需求是否合理。
原則
屁股決定腦袋,產(chǎn)品經(jīng)理和軟件開發(fā)者之間的立場(chǎng)不同,則關(guān)注點(diǎn)不同,這是需求產(chǎn)品經(jīng)理和開發(fā)之間的矛盾的主要原因。好的產(chǎn)品經(jīng)理思考的是軟件的市場(chǎng)和背后的生意而不是用戶交互;好的軟件工程師思考的是軟件模型和整體設(shè)計(jì),而不是某項(xiàng)技術(shù)的偏好。
如果軟件開發(fā)和建筑行業(yè)一樣,產(chǎn)品經(jīng)理就是設(shè)計(jì)院,設(shè)計(jì)院輸出的圖紙,如果在施工方無法實(shí)施時(shí),設(shè)計(jì)院會(huì)承擔(dān)巨大的責(zé)任。
互聯(lián)網(wǎng)時(shí)代,軟件和建筑一樣隨處可見。
軟件給人一種容易修改的錯(cuò)覺。產(chǎn)品經(jīng)理隨意調(diào)整需求被質(zhì)疑后感到無辜,不就是改一點(diǎn)代碼的事情嗎,為啥說的那么難,這人肯定是技術(shù)不行。
簡(jiǎn)單的軟件確實(shí)容易修改,同理,在農(nóng)村搭一個(gè)窩棚也是,但復(fù)雜的軟件和摩天大廈不在此列。
復(fù)雜的軟件因?yàn)槌休d了大量的業(yè)務(wù)模型,以及各種存量的用戶數(shù)據(jù),修改運(yùn)行中的軟件,數(shù)據(jù)遷移的工作往往比預(yù)想要大很多,同時(shí)還要考慮已經(jīng)發(fā)布出去的軟件兼容性。
需求變更應(yīng)該是一個(gè)嚴(yán)肅和慎重的事情,這是原則。
提前
《一本小小的紅色寫作書》是我最喜歡的一本關(guān)于寫作的入門書籍,作者布蘭登·羅伊爾給新手提供了一個(gè)寫作建議:當(dāng)你想到一個(gè)絕妙的主題,完成寫作并發(fā)布出去等待人們的贊美時(shí),不妨先放一放。當(dāng)一個(gè)好點(diǎn)子蹦出來時(shí),人們往往把所有的美好都寄托在這個(gè)點(diǎn)子上,而絲毫看不到不合理之處,其實(shí)需要時(shí)間讓人冷靜下來。
產(chǎn)品經(jīng)理往往會(huì)蹦出一些“絕妙” idea,自我美妙的 “上頭”。實(shí)際上在落地時(shí),會(huì)遇到各種問題。
提前準(zhǔn)備需求就顯得非常重要,提前三五個(gè)星期設(shè)計(jì)好的需求,隨著時(shí)間的推移,實(shí)際上每周都能有優(yōu)化的點(diǎn),到開始實(shí)施時(shí)也想的八九不離十了。
軟件工程師應(yīng)該建議產(chǎn)品經(jīng)理提前準(zhǔn)備需求,如果是 2-3 天內(nèi)的需求,就需要警覺起來。
雖然互聯(lián)網(wǎng)時(shí)代變化很快,但不是慌張的理由。
系統(tǒng)性
剛?cè)胄械娜耍嗌倏赡軐?duì)“系統(tǒng)”這個(gè)詞感到奇怪,我們明明只是做了一個(gè)軟件、網(wǎng)站或者小程序,但是為什么會(huì)被稱作為系統(tǒng)。
我們之所以稱這些軟件為系統(tǒng),是因?yàn)楝F(xiàn)代軟件不像單機(jī)桌面軟件,它們有很多組成部分。Web、APP、管理后臺(tái)、開放 API、定時(shí)任務(wù)等各種組件構(gòu)成。
系統(tǒng)性,帶來的就是牽一發(fā)而動(dòng)全身。
一次產(chǎn)品經(jīng)理提出需要收集用戶的公司信息,因此在注冊(cè)表單增加了一個(gè)字段,但是在管理后臺(tái)創(chuàng)建用戶時(shí),并沒有相應(yīng)的字段,造成數(shù)據(jù)的混亂。
當(dāng)產(chǎn)品經(jīng)理提出一個(gè) Web 端的需求時(shí),參考檢查項(xiàng):
- 對(duì)應(yīng)的后臺(tái)是否有相應(yīng)管理功能?
- APP、小程序等其他端是否有類似需求?
- 開放出去的 API 是否受到影響?
- 已有數(shù)據(jù)是否需要遷移?
- 是否和其他功能沖突造成邏輯矛盾?
產(chǎn)品經(jīng)理或 BA 需要知道當(dāng)前系統(tǒng)的運(yùn)行狀態(tài),一個(gè)將軟件系統(tǒng)視為黑盒的產(chǎn)品經(jīng)理,不太能提出嚴(yán)密的需求來,只能用創(chuàng)新作為托詞。
遵守慣例
不遵守業(yè)界操作慣例的軟件使用起來讓人非常難受,索尼微單的軟件操作方式比主流相機(jī)顯得怪異,即使很多人認(rèn)可它的拍攝性能,也不愿意買單。
不遵守業(yè)界操作慣例,而美其名曰創(chuàng)新的需求,往往都會(huì)經(jīng)歷來回改的結(jié)果。
按照慣例,信息系統(tǒng)的列表頁都會(huì)有分頁、搜索、篩選、排序等組成部分。如果設(shè)計(jì)上列表頁沒有分頁,在可以預(yù)見的情況之下,性能會(huì)非常差。
對(duì)于表單組件來說,每一種組件元素都有它背后的交互邏輯,刻意改變用途,不僅不能帶來創(chuàng)意效果,反而會(huì)讓用戶感到困惑。表單有四種基本元素,缺少了說明需求不合理,需要調(diào)整:
- 標(biāo)簽
- 表單域
- 提示信息
- 操作按鈕
另外表單設(shè)計(jì)還需要考慮數(shù)據(jù)回填視圖,這種視圖下可能交互和 UI 有所不同。
一致性
需求的一致性體現(xiàn)一個(gè)軟件是否專業(yè),影響用戶的主觀感受。
一致性有幾個(gè)維度:
- 操作邏輯上的一致性
- 組件 UI 一致性
- 文案的一致性
同類的交互使用同一個(gè)組件,避免出現(xiàn)多種組件。比如上傳文件的邏輯,文件大小、交互方式、允許的文件類型,都應(yīng)該保持一致。
在之前一個(gè)產(chǎn)品中,領(lǐng)導(dǎo)要求 UI 的設(shè)計(jì)稿還原接近 100%,我們采用將設(shè)計(jì)稿疊加在瀏覽器中實(shí)現(xiàn)的。然而,中途設(shè)計(jì)師離職,新的設(shè)計(jì)師無法做到和原來的設(shè)計(jì)師保持完全一樣的設(shè)計(jì)尺寸、顏色。
這種情況繼續(xù)堅(jiān)持 100% 的還原度,后果是前端代碼中所有的頁面都有自己的樣式文件,組件幾乎無法復(fù)用。
大的團(tuán)隊(duì)往往有自己的設(shè)計(jì)規(guī)范、設(shè)計(jì)系統(tǒng)等,這樣也減少了高保真的輸出,使用設(shè)計(jì)系統(tǒng),不必輸出高保真。開發(fā)人員使用原型圖 + 設(shè)計(jì)系統(tǒng)中的組件即可做出統(tǒng)一美觀的軟件界面來。
使用原型圖表達(dá)整個(gè)系統(tǒng)的交互邏輯,不用關(guān)系 UI 細(xì)節(jié),UI 細(xì)節(jié)交給設(shè)計(jì)系統(tǒng)來完成。
文案的一致性,要求系統(tǒng)所有的地方使用同樣的名詞概念、表述方式,避免給用戶帶來困惑。
非功能性需求
評(píng)審需求時(shí),非功能需求是最容易遺漏的需求,也是需求的冰山。下圖是一個(gè)添加文章的需求,背后有交互、性能、UI等多方面的非功能性需求。
有大量的文章敘述非功能需求,這里簡(jiǎn)單給出一個(gè)清單:
(1)交互體驗(yàn)相關(guān)
- Loading
- 表單的二次提交
- 輸出格式化
- 請(qǐng)求用戶確認(rèn)和提示
(2)安全相關(guān)
- 身份校驗(yàn)和權(quán)限
- 表單驗(yàn)證
(3)性能相關(guān)
- 響應(yīng)時(shí)間
- 生效時(shí)間(比如,權(quán)限相關(guān)允許重新登錄生效)
(4)可用性相關(guān)
- 兼容性
- 特殊設(shè)備適用性
- 本地化和國(guó)際化
- 升級(jí)策略
性價(jià)比
最后一項(xiàng)是性價(jià)比。
有一些需求不符合當(dāng)前的軟件模型,改動(dòng)成本極其高昂。但是如果產(chǎn)品經(jīng)理做出一些取舍,根據(jù)當(dāng)前的技術(shù)模型和架構(gòu)進(jìn)行調(diào)整,可以維持現(xiàn)在技術(shù)模型的一致性,降低開發(fā)成本。
比如,用戶的會(huì)員信息是存放在 Session 中,這樣每一次請(qǐng)求的權(quán)限檢查可以非常高效地完成。但是,代價(jià)是用戶的會(huì)員過期后,需要重新登錄才會(huì)生效,大多數(shù)系統(tǒng)都這樣處理,因?yàn)闀?huì)員過期是一個(gè)極其低頻的事件。
如果產(chǎn)品經(jīng)理要求,會(huì)員過期及時(shí)的告訴用戶,并進(jìn)行續(xù)費(fèi),而不是在重新登錄時(shí)觸發(fā)這個(gè)行為。即使在技術(shù)上能完成,但是付出的代價(jià)非常大,也應(yīng)該在評(píng)審時(shí)對(duì)此類需求進(jìn)行質(zhì)疑。