產(chǎn)品需求編寫常易忽略功能點(diǎn)
相信大家在做產(chǎn)品需求時(shí),會(huì)出現(xiàn)需求和自己預(yù)想不一樣的情況。為什么會(huì)出現(xiàn)這種情況呢?又該如何處理?本篇文章將從前端和后端兩個(gè)層面,提出對(duì)應(yīng)的解決措施,希望能對(duì)你有所幫助。
在工作過(guò)程中,我們常常會(huì)遇到一種情況:當(dāng)開發(fā)完成開發(fā)任務(wù),將功能交付測(cè)試時(shí),總會(huì)發(fā)現(xiàn)有些功能與我們所預(yù)想的不一樣。
這種主要有兩種原因:
一是開發(fā)理解的需求與我們所提的需求不一樣。
或者說(shuō)提需求的人描述需求的方式與開發(fā)理解需求的方式不一樣,導(dǎo)致需求最終出現(xiàn)偏差。這種情況主要還是由于缺少溝通,對(duì)需求評(píng)審也不到位。
第二個(gè)原因則是需求存在隱藏需求。需求設(shè)計(jì)者默認(rèn)很多功能就應(yīng)該存在,所以就沒(méi)有在需求文檔上進(jìn)行說(shuō)明。
如果是有經(jīng)驗(yàn)的開發(fā)者或者是合作很長(zhǎng)時(shí)間有默契的開發(fā)者會(huì)將你以為的、該有的功能主動(dòng)加上或者開發(fā)到相關(guān)功能會(huì)與產(chǎn)品進(jìn)行確認(rèn),但是很多開發(fā)者是完全按照需求文檔進(jìn)行開發(fā)。
默認(rèn)是不額外開發(fā)其他功能,到了交付測(cè)試的時(shí)候才發(fā)現(xiàn)很多你以為該有的功能都沒(méi)有。這個(gè)責(zé)任肯定在于產(chǎn)品經(jīng)理,但是最大的損失還是在于會(huì)打破原有的項(xiàng)目計(jì)劃,嚴(yán)重者導(dǎo)致項(xiàng)目交付延期。
本文針對(duì)上述第二種,結(jié)合實(shí)際工作將常見遺漏的功能點(diǎn)進(jìn)行列舉說(shuō)明,整篇文章主要從兩個(gè)方面進(jìn)行說(shuō)明,前端、后端。
一、前端
1)界面風(fēng)格統(tǒng)一
當(dāng)項(xiàng)目達(dá)到一定的范圍時(shí),產(chǎn)品人員與開發(fā)人員相應(yīng)就會(huì)配備很多,人多時(shí)很容易造成風(fēng)格不統(tǒng)一的情況。
產(chǎn)品畫原型時(shí)在沒(méi)有約定的情況下就會(huì)完全自己的想法和習(xí)慣進(jìn)行繪制,需求評(píng)審時(shí)大家又主要關(guān)心功能邏輯,而沒(méi)有太在意界面呈現(xiàn)形式。
結(jié)果交付測(cè)試時(shí),發(fā)現(xiàn)很多界面風(fēng)格不統(tǒng)一,按鈕放置位置不統(tǒng)一,界面字體與每行字段數(shù)量不一樣等,單個(gè)界面看沒(méi)有什么問(wèn)題,但是當(dāng)全局使用整個(gè)產(chǎn)品時(shí),會(huì)因?yàn)檫@些細(xì)節(jié)導(dǎo)致用戶體驗(yàn)感非常不好。
所以在我們做產(chǎn)品設(shè)計(jì)時(shí):
- 第一從繪制原型開始時(shí)就需要進(jìn)行風(fēng)格統(tǒng)一,各個(gè)產(chǎn)品通知到位,按照統(tǒng)一風(fēng)格進(jìn)行繪制。
- 第二從技術(shù)層面規(guī)范,技術(shù)針對(duì)全局的界面做統(tǒng)一要求,從兩個(gè)方面杜絕出現(xiàn)界面風(fēng)格不統(tǒng)一的情況。
2)查詢
① 界面的默認(rèn)查詢
當(dāng)界面為非看板界面,或者是數(shù)據(jù)量很大需要分頁(yè)的界面,又或者是需要要做各種處理事項(xiàng)的界面。進(jìn)入界面時(shí)默認(rèn)不執(zhí)行查詢,而且由用戶設(shè)置查詢條件進(jìn)行查詢。
針對(duì)存在大批量數(shù)據(jù)且需要用戶做各種處理事項(xiàng)的界面,如果打開界面就執(zhí)行查詢,就會(huì)讓用戶被迫等待幾秒鐘,而這個(gè)時(shí)間完全是沒(méi)有必要的。
所以針對(duì)有多個(gè)功能的處理界面,在不明確用戶需要做什么操作時(shí),一定不要做默認(rèn)查詢,而是由用戶設(shè)置條件查詢,減少用戶的等待時(shí)間,從而提高用戶的辦公效率。
② 查詢條件的說(shuō)明
關(guān)于查詢條件一定要說(shuō)清楚是不是需要模糊查詢和批量查詢,這個(gè)看似一個(gè)不起眼的功能,其實(shí)很多產(chǎn)品和開發(fā)者都會(huì)忽略,大多數(shù)時(shí)間畫原型寫需求不寫清楚的情況下,都是在測(cè)試的界面提出來(lái)進(jìn)行優(yōu)化。
所以最好是在繪制原型時(shí)就標(biāo)注清楚哪些條件需要模糊,哪些條件需要批量。減少后期的修改成本。
③ 優(yōu)化需求時(shí)增加字段
界面增加顯示字段,看似一個(gè)簡(jiǎn)單的需求,其實(shí)也包含了其他隱藏需求,很多時(shí)候增加顯示字段是和增加查詢條件、導(dǎo)出字段是綁定到一起的。
業(yè)務(wù)提出的增加顯示字段,你在接收這個(gè)需求時(shí),就需要確認(rèn)清楚是否需要增加對(duì)應(yīng)字段的查詢條件,以及導(dǎo)出時(shí)是否需要增加該字段,大多數(shù)時(shí)候增加顯示字段與查詢、導(dǎo)出是一起的,接收需求時(shí)就需要確認(rèn)清楚,避免后期多次進(jìn)行修改與系統(tǒng)更新。
二、后端
1)業(yè)務(wù)場(chǎng)景是否涉及到一定量級(jí)的數(shù)據(jù)操作
設(shè)計(jì)某個(gè)功能點(diǎn)的時(shí)候,一定要綜合考慮業(yè)務(wù)場(chǎng)景,評(píng)估對(duì)應(yīng)的業(yè)務(wù)量是否到達(dá)一定的量級(jí),是否存在需要系統(tǒng)處理大批量數(shù)據(jù)的情況,如果有則需要考慮系統(tǒng)的處理效率,就需要給開發(fā)提相關(guān)的需求,是否需要使用多線程的方式進(jìn)行處理從而達(dá)到業(yè)務(wù)要求。
千萬(wàn)不要等到開發(fā)完成后再提此類需求,這種多線程的處理方式不同的開發(fā)模式后續(xù)改造的代價(jià)各不相同,在開始開發(fā)時(shí)提出,開發(fā)在做整個(gè)結(jié)構(gòu)設(shè)計(jì)時(shí)就會(huì)考慮。這樣從頭開始就考慮此種業(yè)務(wù)場(chǎng)景一是比后期在原來(lái)的基礎(chǔ)上進(jìn)行修改要更可靠一些,評(píng)估開發(fā)時(shí)間時(shí)也會(huì)更準(zhǔn)確。
導(dǎo)入/導(dǎo)出同樣也需要考慮一定量級(jí)的操作,如果有,則需要考慮用異步的方式進(jìn)行處理,實(shí)時(shí)導(dǎo)入/導(dǎo)出會(huì)存在前端超時(shí)用戶側(cè)無(wú)法知曉導(dǎo)入導(dǎo)出的執(zhí)行情況,采用異步的方式進(jìn)行處理;然后提供相應(yīng)的界面進(jìn)行結(jié)果的查詢,異步導(dǎo)入需要查看導(dǎo)入數(shù)據(jù)的校驗(yàn)結(jié)果,同時(shí)也能對(duì)數(shù)據(jù)進(jìn)行修改進(jìn)行重新校驗(yàn)導(dǎo)入;異步導(dǎo)出需要提供一個(gè)界面對(duì)導(dǎo)出的結(jié)果進(jìn)行下載。
2)核心功能的日志記錄
全局考慮哪些功能是核實(shí)功能或者說(shuō)哪些功能后續(xù)可能會(huì)引起爭(zhēng)議,梳理出來(lái)。然后在開發(fā)時(shí),同步開發(fā)相關(guān)的操作日志,且日志一定要詳細(xì)。
避免后續(xù)功能投入使用后,產(chǎn)生一些非必要的爭(zhēng)議。特別是涉及到金額方面的尤其重要,切記切記。
3)不同功能對(duì)相同同一單據(jù)進(jìn)行更新
當(dāng)存在不同的業(yè)務(wù)場(chǎng)景需要對(duì)同一單據(jù)進(jìn)行更新時(shí),產(chǎn)品設(shè)計(jì)時(shí)一定要提出來(lái)。
特別是大的項(xiàng)目,不同的模塊由不同的開發(fā)負(fù)責(zé),對(duì)單據(jù)進(jìn)行更新時(shí)由于對(duì)全局業(yè)務(wù)不了解,就不會(huì)對(duì)訂單進(jìn)行加鎖。當(dāng)各模塊業(yè)務(wù)同時(shí)發(fā)生時(shí),都對(duì)其修改,最后修改提交有先后,就會(huì)導(dǎo)致數(shù)據(jù)被覆蓋的問(wèn)題。
例如線程1、2、3同時(shí)修改單據(jù)A,同時(shí)修改,修改提交有差異,但修改獲取時(shí)間為同一時(shí)間,就可能會(huì)存在線程2的最后提交,將線程1修改的數(shù)據(jù)進(jìn)行還原。
所以當(dāng)業(yè)務(wù)存在同一單據(jù)會(huì)存在不同業(yè)務(wù)同時(shí)修改時(shí),需要向開發(fā)提出,然后開發(fā)在開發(fā)時(shí)無(wú)論是加鎖還是將各自的業(yè)務(wù)分開處理,不管哪個(gè)方式都需要避免數(shù)據(jù)被修改后覆蓋的情況。以免后續(xù)生產(chǎn)環(huán)境出現(xiàn)問(wèn)題。
三、另外開發(fā)過(guò)程中某些情況盡量進(jìn)行規(guī)避
1)發(fā)現(xiàn)問(wèn)題,認(rèn)為問(wèn)題出現(xiàn)概率較小,后續(xù)處理
發(fā)現(xiàn)問(wèn)題就一定要及時(shí)處理,開發(fā)的【后續(xù)處理】一般就是后續(xù)遇到了之后再處理,但是后續(xù)遇到了的情況,就是生產(chǎn)上已經(jīng)有了臟數(shù)據(jù)。
極端情況下,會(huì)產(chǎn)生一大批的臟數(shù)據(jù)且如果有后續(xù)流程時(shí),會(huì)嚴(yán)重影響后續(xù)流程。
所以發(fā)現(xiàn)問(wèn)題就一定要及時(shí)處理,千萬(wàn)不能隨便忽略,否則就像一顆定時(shí)炸彈一下,不知道哪天會(huì)爆炸,得不償失。
2)因?yàn)楣て谠颍承┕δ芫筒粚懬岸私缑?,只做后臺(tái)功能,數(shù)據(jù)由數(shù)據(jù)庫(kù)直接導(dǎo)入
這種情況除非工期非常緊張,否則一般情況千萬(wàn)不能答應(yīng),本身開發(fā)前端界面,然后前后端聯(lián)調(diào)如果不是太復(fù)雜的界面是不會(huì)花費(fèi)太多時(shí)間的。如果答應(yīng)了,則很大程度上,后續(xù)上線后很長(zhǎng)一段時(shí)間該功能都排不上隊(duì)。
因?yàn)樯暇€后會(huì)優(yōu)先處理線上已產(chǎn)生的的問(wèn)題,以及用戶提出的重要需求,這種有后端功能無(wú)前端的小需求就會(huì)無(wú)限期的往后延,需要使用時(shí)每次都需要找開發(fā)人員后臺(tái)導(dǎo)入數(shù)據(jù),非常麻煩。
所以非緊急壓縮項(xiàng)目時(shí)間,此種情況不能同意。
3)某些功能因?yàn)閷?shí)現(xiàn)層面的復(fù)雜性,或者和開發(fā)溝通上比較費(fèi)勁就選擇妥協(xié)
原則性的功能千萬(wàn)不能因?yàn)殚_發(fā)層面說(shuō)實(shí)現(xiàn)復(fù)雜,或者說(shuō)和開發(fā)溝通比較困難而妥協(xié),如果妥協(xié),你就只是解放一時(shí),反而給自己后面留了一個(gè)隱患。
除非找到可替代的方案,否則必須要堅(jiān)持自己的原則,該要的需求一個(gè)都不能落。如果相關(guān)的開發(fā)溝通執(zhí)意不做,溝通層面太難交流,那就找相關(guān)的領(lǐng)導(dǎo)協(xié)調(diào)溝通,切勿妥協(xié)。
以上就是工作中的一些小總結(jié),希望對(duì)大家有幫助。
本文由 @默憂 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
都是經(jīng)驗(yàn)之談