俗話(huà)說(shuō),計(jì)劃趕不上變化快,無(wú)論需求文檔做得如何細(xì)致,考慮得如何周全,總會(huì)有些難以預(yù)料的需求變更在每天困擾著我們。開(kāi)發(fā)人員苦惱,產(chǎn)品運(yùn)營(yíng)人員更苦惱,畢竟誰(shuí)也不愿意捂著臉一遍一遍地求人改需求。
但是,雖然世界充滿(mǎn)未知的變化,但是有一些大的方向還是可以把握的,無(wú)論是產(chǎn)品運(yùn)營(yíng)還是開(kāi)發(fā)人員,都可以在需求確立以及需求評(píng)審時(shí)多多考慮一下小雞君說(shuō)的這些方面,相信一定可以減少一些后期的變更成本。
下面這些內(nèi)容主要是從開(kāi)發(fā)人員的視角考慮的,多數(shù)基于小雞君的個(gè)人經(jīng)驗(yàn),難免有失偏頗,不當(dāng)之處還望指正。當(dāng)然,如不嫌棄,感興趣的產(chǎn)品和運(yùn)營(yíng)人員也可以稍作參考。
1. 細(xì)節(jié)變更需求
在項(xiàng)目初期,如果產(chǎn)品人員沒(méi)有想清楚需求的細(xì)節(jié),那么細(xì)節(jié)的變更可以說(shuō)是無(wú)法避免的。那么作為開(kāi)發(fā)人員唯一能做的就是,在設(shè)計(jì)程序結(jié)構(gòu)和邏輯的時(shí)候,盡量預(yù)留出可擴(kuò)展的能力。比如模塊的增刪,字段的增減,頁(yè)面樣式的微調(diào)等,除此之外也沒(méi)什么好辦法了。別灰心,這都不是事兒。
2. 跨平臺(tái)需求
跨平臺(tái)需求有時(shí)候來(lái)的非常隱蔽,往往最初規(guī)劃的時(shí)候感覺(jué)可以先在一個(gè)平臺(tái)嘗試一下,比如先規(guī)劃了 PC 端,但是 PC 端的某些功能又會(huì)忽然很急促的想移植到移動(dòng)端。
而需求人員往往會(huì)想當(dāng)然的認(rèn)為,功能差不多,只要挪一下就可以了(平移過(guò)去/拼過(guò)去)?;蛘呤?,頁(yè)面長(zhǎng)的差不多,就改成移動(dòng)端的大小就可以了(縮一下)。殊不知各個(gè)平臺(tái)無(wú)論在架構(gòu)部署,還是操作體驗(yàn)上都有著天壤之別,如果不提前規(guī)劃好,那必然是個(gè)大坑。
3. 擴(kuò)展需求
無(wú)論是什么樣的業(yè)務(wù),隨著業(yè)務(wù)量的增長(zhǎng),以及產(chǎn)品運(yùn)營(yíng)人員欲望的膨脹,都會(huì)催生出各種擴(kuò)展需求。任何固定數(shù)量的,都會(huì)增加。任何單一需要的,都會(huì)變成多個(gè)。
比如頁(yè)面上設(shè)計(jì)了三個(gè)商品推薦位,就要預(yù)留出變成六個(gè)、九個(gè),甚至分頁(yè)的能力。一個(gè)接口是給某個(gè)業(yè)務(wù)專(zhuān)用的,某天就可能變成通用的。一個(gè)簡(jiǎn)單的靜態(tài)頁(yè)面,某天就可能變成附帶管理后臺(tái)的復(fù)雜系統(tǒng)。對(duì)于擴(kuò)展性需求,要反復(fù)確認(rèn),不必過(guò)度優(yōu)化,但也要留出合理的擴(kuò)展空間。
4. 異常流需求
異常流需求往往容易被忽略,或者多有疏漏。常見(jiàn)的異常流有圖片數(shù)據(jù)加載不出,圖片不存在,接口掛掉,網(wǎng)速慢,未登錄,登錄態(tài)丟失,查詢(xún)出錯(cuò),查詢(xún)無(wú)數(shù)據(jù),內(nèi)容溢出,用戶(hù)輸入溢出,用戶(hù)輸入非法,視覺(jué)遮擋不可用等等等等。
那么,對(duì)應(yīng)這些異常流情況,就要有配套的前端提示給用戶(hù),引導(dǎo)用戶(hù)進(jìn)行其他操作。這些異常流往往會(huì)在設(shè)計(jì)稿和文檔中遺漏掉,比如各種異常提示浮層,需要登錄態(tài)的操作,結(jié)果登錄態(tài)丟失等等,都需要有對(duì)應(yīng)的引導(dǎo)。
5. 內(nèi)容運(yùn)營(yíng)需求
所有靜態(tài)的內(nèi)容,都可能變成運(yùn)營(yíng)需求。靜態(tài)廣告位可能變成輪播廣告位,輪播廣告位可能變成需要運(yùn)營(yíng)后臺(tái)填寫(xiě)數(shù)據(jù),而不是直接寫(xiě)死在頁(yè)面里?;蛘吣骋惶炜赡茏兂蓮牧硗庖粋€(gè)自動(dòng)數(shù)據(jù)源拉取數(shù)據(jù)。
關(guān)于內(nèi)容運(yùn)營(yíng)需求,評(píng)審初期可以確認(rèn)好運(yùn)營(yíng)頻次,如果是個(gè)把月才改一次的,幾乎不耗人力的,那也沒(méi)必要都搞工具。但是如果每天改一次,或者感覺(jué)運(yùn)營(yíng)內(nèi)容的時(shí)間已經(jīng)影響到正常的工作,或者遠(yuǎn)遠(yuǎn)大于寫(xiě)個(gè)工具的時(shí)間,那還是老老實(shí)實(shí)開(kāi)發(fā)個(gè)運(yùn)營(yíng)工具吧。
6. 內(nèi)容校驗(yàn)需求
上面既然說(shuō)到運(yùn)營(yíng)工具了,那么作為運(yùn)營(yíng)工具一定是由運(yùn)營(yíng)人員自己來(lái)填寫(xiě)。既然是非技術(shù)人員填寫(xiě),操作就難免要傻瓜一點(diǎn),或者說(shuō)非技術(shù)一點(diǎn),盡量操作簡(jiǎn)潔,并且可以校驗(yàn)輸入。如果因?yàn)檫\(yùn)營(yíng)人員多打了個(gè)空格,活著多寫(xiě)了個(gè)英文逗號(hào)系統(tǒng)就掛了,那應(yīng)該算誰(shuí)不盡責(zé)呢?
還有,能分別運(yùn)營(yíng)的字段要分別運(yùn)營(yíng),因?yàn)橛械臅r(shí)候雖然內(nèi)容看上去是合在一起的,但是經(jīng)常會(huì)有部分修改的需求,不如分開(kāi)兩個(gè)字段。比如廣告位鏈接和埋點(diǎn) tag,鏈接可能經(jīng)常換,但固定位置的 tag 值就不會(huì)換,所以分開(kāi)運(yùn)營(yíng)會(huì)好一些。
7. 內(nèi)容復(fù)用需求
運(yùn)營(yíng)同學(xué)的工作是很辛苦的,設(shè)想一下每天一邊開(kāi)著 excel ,一邊開(kāi)著你的運(yùn)營(yíng)系統(tǒng)一個(gè)字段一個(gè)字段填寫(xiě)的時(shí)候,就知道畫(huà)面有多美了。所以,運(yùn)營(yíng)填寫(xiě)的數(shù)據(jù)一定是有復(fù)用需求的。比如 h5 頁(yè)面上運(yùn)營(yíng)的數(shù)據(jù),有可能還需要給原生 app 使用,甚至給 pc 端也用一套數(shù)據(jù)。一個(gè)廣告圖片和鏈接,可能被插入到多個(gè)頁(yè)面的頂部或底部,一起更新。多多溝通復(fù)用需求,可以隨手拯救一大波運(yùn)營(yíng)妹子。
8. 內(nèi)容歷史需求
既然運(yùn)營(yíng)妹子這么不容易,那么工作量 KPI 如何衡量呢?這么辛苦再?zèng)]人知道不是太慘了?所以,運(yùn)營(yíng)的數(shù)據(jù)一般是要有歷史的。
如果就一個(gè)坑位,每次都改掉內(nèi)容來(lái)更新,上一次的就沒(méi)了,那么鬼知道我一天改了多少次?一周做了多少次更新?當(dāng)然,這里更偏向工具類(lèi)的需求了,不過(guò)我重點(diǎn)要說(shuō)的是,有運(yùn)營(yíng)需求,就可能有運(yùn)營(yíng)的歷史記錄需求。
9. 排序&打標(biāo)需求
排序需求其實(shí)也是內(nèi)容運(yùn)營(yíng)需求的一種,無(wú)論是運(yùn)營(yíng)填寫(xiě)的還是自動(dòng)拉取的內(nèi)容,永遠(yuǎn)都會(huì)有調(diào)整順序的需求。不同的坑位對(duì)應(yīng)不同的關(guān)注度,不同的視覺(jué)焦點(diǎn),瀏覽路徑。運(yùn)營(yíng)往往需要通過(guò)調(diào)整位置或者加些標(biāo)記來(lái)突出某些內(nèi)容。
比如商品列表,可能近期有幾個(gè)商品比較好賣(mài),就挪到前面,打上 hot 或者 new 的標(biāo)記,從而促成更多的銷(xiāo)量。對(duì)于排序和打標(biāo)需求,往往從后臺(tái)開(kāi)始就要預(yù)留可擴(kuò)展字段,到前端也要可以方便的調(diào)整位置和加 icon 標(biāo)記才行。
10. 篩選需求
對(duì)應(yīng)于排序和打標(biāo),篩選也是經(jīng)常用到的。比如我搜集了一坨數(shù)據(jù),又只想挑一部分來(lái)展示,這時(shí)候往往需要一個(gè)可以方便操作的地方,類(lèi)似帖子加精,評(píng)論置頂?shù)鹊?。商品?lèi)的數(shù)據(jù)篩選需求就更多啦,不過(guò)一般可以集成在搜索功能中,作為通用接口提供。但是,運(yùn)營(yíng)同學(xué)手動(dòng)填寫(xiě)的數(shù)據(jù)再進(jìn)行篩選,那功能就只能業(yè)務(wù)側(cè)自己設(shè)計(jì)了,可以根據(jù)需要增加不同的篩選字段供運(yùn)營(yíng)同學(xué)填寫(xiě)。
11. 數(shù)據(jù)統(tǒng)計(jì)需求
數(shù)據(jù)統(tǒng)計(jì)需求是很容易失控的一種需求,產(chǎn)品運(yùn)營(yíng)最初往往覺(jué)得我要個(gè) PV UV 啥的就夠用了,過(guò)幾天可能說(shuō)能不能統(tǒng)計(jì)下這個(gè)按鈕的點(diǎn)擊量,再過(guò)幾天可能恨不得把所有的操作都埋點(diǎn),再加上訪(fǎng)問(wèn)路徑、購(gòu)買(mǎi)路徑、轉(zhuǎn)化率、蹦失率、頁(yè)面停留時(shí)間、點(diǎn)擊熱圖、鼠標(biāo)軌跡。。。再給我出個(gè)月度季度報(bào)表,趨勢(shì)圖等等。
這里,對(duì)于數(shù)據(jù)統(tǒng)計(jì)需求一定要評(píng)審時(shí)梳理好,甚至我覺(jué)得可以獨(dú)立于正常的需求,作為單獨(dú)的數(shù)據(jù)統(tǒng)計(jì)需求整體梳理后提出。
12. 翻舊賬需求
我實(shí)在找不到更貼切的詞匯了。翻舊帳的意思就是,凡事進(jìn)到我系統(tǒng)里的數(shù)據(jù),都希望有個(gè)方便的形式可以看到。比如用戶(hù)創(chuàng)建的 UGC,一定要有個(gè)唯一的地址可以看到這個(gè)資源。用戶(hù)錄入的信息,要有個(gè)方便的地方可以導(dǎo)出,或者下載 excel。即使當(dāng)前的需求不需要你展示歷史記錄或者以前的任何內(nèi)容,也要預(yù)留出方便的查詢(xún)接口備用。
13. 報(bào)銷(xiāo)需求
這個(gè)有點(diǎn)詭異,報(bào)銷(xiāo)關(guān)我鳥(niǎo)事?當(dāng)然關(guān)。許多大公司的報(bào)銷(xiāo)流程都很?chē)?yán)格,畢竟是涉及到錢(qián)的問(wèn)題。那么對(duì)于涉及到錢(qián)的活動(dòng)來(lái)說(shuō),唯一的憑據(jù)可能就是你數(shù)據(jù)庫(kù)里的數(shù)據(jù)了。所以有關(guān)錢(qián)的需求,最好開(kāi)始就確認(rèn)好報(bào)銷(xiāo)需要哪些內(nèi)容,比如用戶(hù)的真實(shí)手機(jī)等等(確認(rèn)是真人參與活動(dòng),沒(méi)有造假),以此來(lái)作為最終報(bào)銷(xiāo)的憑據(jù),否則就只能運(yùn)營(yíng)同學(xué)自己出血了。
14. 擴(kuò)容需求
當(dāng)業(yè)務(wù)量穩(wěn)步上升時(shí)就會(huì)伴隨著擴(kuò)容的需求,尤其當(dāng)訪(fǎng)問(wèn)量驟增的時(shí)候,快速擴(kuò)容就迫在眉睫了。擴(kuò)容包含很多方面,一些性能方面的問(wèn)題會(huì)在高并發(fā)史迅速凸顯,比如查詢(xún)低效,PHP慢速,無(wú)靜態(tài)化 web,并發(fā)壓力大等等。
此時(shí)關(guān)于性能優(yōu)化的一切知識(shí)都可以派上用場(chǎng)了,靜態(tài)化、緩存、查詢(xún)優(yōu)化、鎖表等等。而機(jī)器擴(kuò)容也沒(méi)那么簡(jiǎn)單,除了機(jī)器內(nèi)容的復(fù)制還有相應(yīng)服務(wù)的批量啟動(dòng),定時(shí)任務(wù)的執(zhí)行,日志的歸集等等。所以,如果評(píng)估時(shí)預(yù)計(jì)業(yè)務(wù)會(huì)有爆發(fā)性增長(zhǎng)(如微信活動(dòng)),在資金允許的情況下不妨多準(zhǔn)備些機(jī)器,總比一發(fā)布就掛了強(qiáng)。
15. 安全需求
這一點(diǎn)放到了最后,同樣也是最重要的。安全問(wèn)題包含的范圍非常廣泛,雖然有專(zhuān)業(yè)的同事負(fù)責(zé)安全以及運(yùn)維相關(guān)的工作,但是在需求初期如果能稍微做些防范就會(huì)避免很多問(wèn)題。一般的公司都會(huì)有個(gè)基礎(chǔ)的安全規(guī)范,比如如何防止 XSS, CSRF 攻擊,如何防止 SQL 注入,如何屏蔽腳本攻擊等。
還有一些外部接口需要鑒權(quán)的,有時(shí)可能做了基本的鑒權(quán),確沒(méi)有更高級(jí)的防護(hù)。比如一個(gè)人雖然登錄了,可以看到自己的某些資料,但是如果這個(gè)登錄的用戶(hù)還可以通過(guò)相同的接口查看其他人的某些信息,那就是安全問(wèn)題了。有可能這個(gè)信息是存儲(chǔ)在相對(duì)獨(dú)立的表中,并沒(méi)有嚴(yán)格掛在這個(gè)用戶(hù)id下,那么查詢(xún)的時(shí)候就一定要再檢查一下數(shù)據(jù)和用戶(hù)的對(duì)應(yīng)關(guān)系。
對(duì)于安全需求,普通前后臺(tái)開(kāi)發(fā)人員能做的其實(shí)并不多,能按部就班做好這些基礎(chǔ)防護(hù)就不容易了。加上公司公共的安全掃描平臺(tái),基本上可以杜絕絕大部分安全問(wèn)題了。之所以寫(xiě)到這里單獨(dú)列一條,還是希望大家要對(duì)安全足夠重視。
綜上所述,絕大部分的隱形需求都是有跡可尋的。然并卵,即便溝通再明確,郵件再確認(rèn),改來(lái)改去啪啪啪打臉,該做的需求還是要做,所以,節(jié)哀吧。