給前端的進(jìn)階之路:如何高質(zhì)量完成產(chǎn)品需求開發(fā)
作為一個(gè)互聯(lián)網(wǎng)前端老鳥,這么些年下來(lái),做過的項(xiàng)目也不少。從最初的我的QQ中心、QQ圈子,到后面的QQ群項(xiàng)目、騰訊課堂。從幾個(gè)人的項(xiàng)目,到近百號(hào)人的項(xiàng)目都經(jīng)歷過。
這期間,實(shí)現(xiàn)了很多的產(chǎn)品需求,也積累了一些經(jīng)驗(yàn)。這里稍作總結(jié),希望能給新入行的前端小伙伴們一些參考。
做好需求的關(guān)鍵點(diǎn)
要說(shuō)如何做好一個(gè)需求,展開來(lái)講,可以寫好幾篇文章,這里只挑重點(diǎn)來(lái)講。
最基本的,就是把握好3W:what、when、how。
- what:做什么?
- when:完成時(shí)間?
- how:如何完成?
需求場(chǎng)景假設(shè)
為了下文不至于太過枯燥,這里進(jìn)行需求場(chǎng)景的模擬,下文主要圍繞這個(gè)“需求”,從what、when、how 三個(gè)點(diǎn)展開來(lái)講。
假設(shè)現(xiàn)在有個(gè)論壇的項(xiàng)目,產(chǎn)品經(jīng)理小C提了個(gè)需求 “給論壇增加評(píng)論功能” 。作為 前端工程師 的小A接到需求后,該如何高質(zhì)量的完成這個(gè)需求。
項(xiàng)目名稱:興趣論壇。
項(xiàng)目組主要成員:前端工程師小A,后臺(tái)工程師小B,產(chǎn)品經(jīng)理小C。
產(chǎn)品需求:給論壇增加評(píng)論功能。
備注:此時(shí)我們腦海里浮現(xiàn)的應(yīng)該是下面這張圖。
What:做什么?
可能有同學(xué)要拍案而起了:Are you kidding me?不就加個(gè)評(píng)論功能嗎,我還能不知道該做啥?
答案很殘酷:是的。
根據(jù)過往經(jīng)驗(yàn),不少前端同學(xué),包括一些前端老司機(jī),做需求的時(shí)候,的確不知道自己究竟要做什么。導(dǎo)致這種情況發(fā)生的原因有哪些呢?
- 產(chǎn)品經(jīng)理:提的需求不明確。
- 前端工程師:沒做好需求確認(rèn)。
情況1:產(chǎn)品需求不明確
說(shuō)到產(chǎn)品需求不明確,前端的兄弟們估計(jì)可以坐一起開個(gè)訴苦大會(huì),因?yàn)閷?shí)在太常見了。典型的有“拍腦門需求”、“一句話需求”、“貼個(gè)圖求照抄需求”。
回到之前的例子:給論壇增加個(gè)評(píng)論功能。
別看連原型圖都貼出來(lái)了,其實(shí)這就是個(gè)典型的“需求不明確”。比如:
- 是否需要支持富文本輸入?
- 是否需要支持社會(huì)化分享?
- 發(fā)表評(píng)論后,評(píng)論怎么展示?
也許經(jīng)過一番確認(rèn),最終的需求會(huì)是下圖所示。遇到這種情況,一定要做好需求確認(rèn),避免后期無(wú)意義的返工和延期。
情況2:未做好需求確認(rèn)
再次強(qiáng)調(diào)一下,無(wú)論何時(shí),一定要做好需求確認(rèn)。再有經(jīng)驗(yàn)、再負(fù)責(zé)的產(chǎn)品經(jīng)理,也幾乎不可能提出“100%明確”的需求。
同樣,回到上面的需求。
現(xiàn)在已經(jīng)確認(rèn)了,需要支持富文本輸入、需要展示評(píng)論,這就夠了嗎?其實(shí)不夠,還有很多需求細(xì)節(jié)需要進(jìn)一步確認(rèn)。比如:
- 評(píng)論最大支持輸入多少個(gè)字?(非常重要,關(guān)乎后臺(tái)存儲(chǔ)方案的設(shè)計(jì))
- 1個(gè)中文算1個(gè)字,多少個(gè)英文字母算1個(gè)字?(產(chǎn)品語(yǔ)言、技術(shù)語(yǔ)言 之間的溝通轉(zhuǎn)換)
- 輸入內(nèi)容過長(zhǎng),如何進(jìn)行錯(cuò)誤提示?(交互細(xì)節(jié))
- 輸入內(nèi)容過長(zhǎng),是否允許提交評(píng)論?如允許,是對(duì)評(píng)論內(nèi)容進(jìn)行截?cái)嗪筇峤??(容錯(cuò))
- 用戶未輸入內(nèi)容的情況下,評(píng)論框內(nèi)默認(rèn)提示文案是什么?(交互細(xì)節(jié))
……
可以、需要確認(rèn)的內(nèi)容太多,這里就不贅述。
看到這里,讀者朋友們應(yīng)該明白,為什么前面會(huì)說(shuō),幾乎不存在“100%明確”的需求。
很多需求細(xì)節(jié),同時(shí)也跟技術(shù)實(shí)現(xiàn)細(xì)節(jié)強(qiáng)相關(guān),不能苛求產(chǎn)品經(jīng)理都考慮到。這種情況下,作為開發(fā)者的我們應(yīng)該主動(dòng)找出問題,并與產(chǎn)品經(jīng)理一起將細(xì)節(jié)敲定下來(lái)。
When:完成時(shí)間?
一個(gè)同時(shí)有前端、后端參與的需求,精簡(jiǎn)后的需求生命周期,大概是這樣的:
需求提出–>開發(fā)–>聯(lián)調(diào)–>提交測(cè)試->需求發(fā)布
一個(gè)需求的實(shí)際發(fā)布時(shí)間,大部分時(shí)候取決于實(shí)際的開發(fā)工作量。如何評(píng)估開發(fā)工作量呢?最基本的,就是明確“做什么”,這也就是上一小節(jié)強(qiáng)調(diào)的內(nèi)容。
這里我們假設(shè):
- 需求已經(jīng)明確,小A的開發(fā)工作量是3天,小B的開發(fā)工作量是3天。
- 假設(shè)小A9月1號(hào)投入開發(fā)
那么,是不是9月3號(hào)下班前需求就可以發(fā)布了?
答案顯然是:不能。
要得出一個(gè)靠譜的完成時(shí)間,至少需要明確以下內(nèi)容:
- 前端、后臺(tái) 各自的工作量。
- 前端、后臺(tái) 投入研發(fā)的時(shí)間點(diǎn)。
- 前端、后臺(tái) 聯(lián)調(diào)的工作量、時(shí)間點(diǎn)。
- 需求提交測(cè)試的時(shí)間。
- 需求測(cè)試的工作量。
最終,需求的完成時(shí)間點(diǎn)可能如下:(跟預(yù)期的出入很大)
對(duì)于需求完成時(shí)間的評(píng)估,實(shí)際情況遠(yuǎn)比上面說(shuō)的要更復(fù)雜。比如需要考慮節(jié)假日、成員休假、多個(gè)需求并行開發(fā)、需求存在外部依賴項(xiàng)等。以后有機(jī)會(huì)再展開來(lái)講。
How:如何完成?
完成需求容易,如果要高質(zhì)量完成,那就需要費(fèi)點(diǎn)功夫了。同樣的,只挑一些重要的來(lái)講
- 明確需求、關(guān)鍵時(shí)間點(diǎn)
- 嚴(yán)控開發(fā)、自測(cè)、提測(cè)質(zhì)量
- 及時(shí)暴露風(fēng)險(xiǎn)
- 推動(dòng)解決問題
- 關(guān)注線上質(zhì)量
明確需求/關(guān)鍵時(shí)間點(diǎn)
這塊的重要性,再怎么強(qiáng)調(diào)也不為過。前面已經(jīng)講過了,這里不再贅述。
嚴(yán)控開發(fā)、自測(cè)、提測(cè)質(zhì)量
作為一名合格的前端工程師,對(duì)自己的開發(fā)質(zhì)量負(fù)責(zé),這是最基本的要求。
要時(shí)常問自己:
- 開發(fā):是否嚴(yán)格按照需求文檔完成功能的開發(fā)。
- 聯(lián)調(diào):在與后臺(tái)同學(xué)聯(lián)調(diào)前,是否已經(jīng)對(duì)照測(cè)試用例,對(duì)自己的模塊進(jìn)行了嚴(yán)格的自測(cè)。
- 提測(cè):提測(cè)前,是否已自測(cè)、聯(lián)調(diào)通過;測(cè)試正式介入前,產(chǎn)品是否提前部署到測(cè)試環(huán)境,并進(jìn)行初步的驗(yàn)證。
嚴(yán)格把控開發(fā)、自測(cè)、提測(cè)質(zhì)量,這不但是能力,更是一種負(fù)責(zé)任的態(tài)度。如果能做到這點(diǎn),不單節(jié)省大家的時(shí)間,還可以讓其他人覺得自己比較“靠譜”。
備注:以下截圖,是筆者之前一個(gè)需求的自測(cè)用例(非完整版)。同樣是評(píng)論功能,自測(cè)用例將近50個(gè)。
及時(shí)暴露風(fēng)險(xiǎn)
風(fēng)險(xiǎn)意識(shí)非常重要。在需求完成的過程中,經(jīng)常會(huì)有各種意外的小插曲出現(xiàn)。對(duì)于前端同學(xué),常見的有:
- 視覺稿/交互稿未按時(shí)提供。
- 需求變更。
- 工作量評(píng)估不足。
- 后臺(tái)接口未按時(shí)、按質(zhì)完成。
- bug有好多,但修改不及時(shí)。
上面列舉的項(xiàng),都可能導(dǎo)致需求發(fā)布delay,要時(shí)刻要保持警惕。一旦出現(xiàn)可能可能導(dǎo)致delay的風(fēng)險(xiǎn),要及時(shí)做好同步,準(zhǔn)備好應(yīng)對(duì)措施。
打個(gè)比方:
前面說(shuō)到,小A 評(píng)估了3天的開發(fā)工作量。等到開發(fā)的第2天,發(fā)現(xiàn)之前工作量評(píng)估少了,至少需要4天才能完成。
這個(gè)時(shí)候,該怎么辦呢?
相信不少同學(xué)都是這樣處理的:咬咬牙,加加班,4天的活3天干,實(shí)在完不成了再說(shuō)。
這樣處理潛在的問題不?。?/p>
- 給自己增加了過重的負(fù)擔(dān)。
- 沒能讓問題及早的暴露解決。
- 可能打亂項(xiàng)目的整體節(jié)奏。
更好的處理方式是:及時(shí)跟項(xiàng)目組成員同步風(fēng)險(xiǎn),并落實(shí)確認(rèn)相應(yīng)解決方案。比如適當(dāng)調(diào)整排期、砍掉部分優(yōu)先級(jí)不高的功能等。
推動(dòng)解決問題
對(duì)于一個(gè)職場(chǎng)人能力的評(píng)判,“解決問題”的能力,是很重要的一個(gè)評(píng)估標(biāo)準(zhǔn)。解決問題的能力如何體現(xiàn)呢?
舉個(gè)例子,提測(cè)過程中,出現(xiàn)了不少bug,對(duì)于小A來(lái)說(shuō),該怎么辦呢?這里分兩種情況:
- bug主要是小A的。
- bug主要是小B的。
第一種情況很簡(jiǎn)單,自己的坑自己填,抓緊時(shí)間改bug,并做好事總結(jié),降低后續(xù)需求的bug率。
第二種情況呢?如果小B比較配合,主動(dòng)快速修復(fù)bug,那沒什么好說(shuō)的。但萬(wàn)一不是呢?
遇到這種情況,小A可能會(huì)想:“又不是我的bug,干嘛操那份閑心,需求如果delay的話,那也是小B的問題,跟我無(wú)關(guān)。”
可能不少同學(xué)的想法跟小A一樣,這在筆者看來(lái),略顯消極,處理方式顯得不夠“職業(yè)化”。
為什么呢?
同在一個(gè)項(xiàng)目組,得要有團(tuán)隊(duì)意識(shí)、整體意識(shí)。需求延期,首先是所有需求相關(guān)人的責(zé)任,是要一起打板子的。然后,才會(huì)對(duì)具體的責(zé)任人進(jìn)行問責(zé)。
回到前面的場(chǎng)景,小A更好的處理方式是:做好溝通工作,主動(dòng)推進(jìn)問題解決。
- 了解小B沒有及時(shí)改bug的原因:有可能太忙、bug不好改、沒有意識(shí)到那是自己的bug。
- 如可能,提供必要幫助:比如跟項(xiàng)目經(jīng)理申請(qǐng),這段時(shí)間小B集中精力改bug,暫不開發(fā)新需求
- 風(fēng)險(xiǎn)同步:如果小B真的不稱職,盡快知會(huì)項(xiàng)目負(fù)責(zé)人,對(duì)小B進(jìn)行批評(píng)教育,實(shí)在不行就換人。
關(guān)注線上質(zhì)量
這一點(diǎn)非常重要,但又是容易被忽略的一點(diǎn)。需求發(fā)布上線,是個(gè)重要的里程碑,但并不意味著需求的終點(diǎn),還得時(shí)刻關(guān)注以下事項(xiàng):
- 功能是否正常運(yùn)行?
- 各項(xiàng)指標(biāo)是否正常?比如產(chǎn)品上報(bào)數(shù)據(jù)、性能監(jiān)控?cái)?shù)據(jù)、錯(cuò)誤監(jiān)控?cái)?shù)據(jù)等。
- 有哪些可以優(yōu)化的點(diǎn)??jī)?yōu)先級(jí)多高?
……
只管功能開發(fā),一旦需求上線,立刻做甩手掌柜,同樣是缺乏責(zé)任意識(shí)的表現(xiàn)。試想一下,如果你是團(tuán)隊(duì)的老大,你會(huì)放心把重要的需求交給一個(gè)“甩手掌柜”嗎。
寫在后面
本文中,筆者主要從一個(gè)前端工程師的角度出發(fā),談了一些“高質(zhì)量完成需求”的經(jīng)驗(yàn)。里面提到的不少內(nèi)容,放到其他崗位也是適用的。鑒于篇幅原因,很多細(xì)節(jié)都是點(diǎn)到為止,并沒有深入展開。
方法論再多,最終還是需要人去落實(shí)。作為一名前端工程師,加強(qiáng)責(zé)任意識(shí),主動(dòng)承擔(dān),勤于總結(jié),做社會(huì)主義合格的接班人。
作者:陳映平,程序猿小卡,前騰訊IMWEB團(tuán)隊(duì)成員,云棲社區(qū)專家博主。
原文地址:https://zhuanlan.zhihu.com/p/23080914
本文由 @陳映平 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
這樣的前端非常負(fù)責(zé)任、專業(yè),棒。上線前自測(cè)的測(cè)試用例都自己來(lái)啊,可以找測(cè)試工程師提供冒煙測(cè)試用例? ??
非常贊,內(nèi)容真是點(diǎn)點(diǎn)到位。 看完之后感覺收獲非常的大,支持好文章。