作為一名程序員,你真的理解需求嗎?

圖片來(lái)自網(wǎng)絡(luò)

作為一個(gè)程序員,最重要的職責(zé)就是:按時(shí)保質(zhì)保量地完成需求開發(fā)。

像開發(fā)新業(yè)務(wù)這樣的復(fù)雜需求,PM (Product Manager,產(chǎn)品經(jīng)理)一般會(huì)寫出詳細(xì)的PRD (Product Requirement Document,產(chǎn)品需求文檔),甚至可能會(huì)制作高保真原型。

而像調(diào)換兩個(gè)按鈕順序這樣的簡(jiǎn)單需求,PM有可能只會(huì)口頭通知一下,最多在JIRA之類的項(xiàng)目管理平臺(tái)上創(chuàng)建一條只有標(biāo)題的ISSUE。

如果是有和用戶交互的需求,負(fù)責(zé)設(shè)計(jì)的部門或人員一般會(huì)提供設(shè)計(jì)圖。專業(yè)一點(diǎn)的話還會(huì)幫你把圖都裁好,并準(zhǔn)備不同屏幕分辨率下使用的多個(gè)尺寸版本。

當(dāng)然,如果你在一個(gè)剛剛成立的創(chuàng)業(yè)公司,很有可能是創(chuàng)始人在白板前(或者是飯桌上)講了半個(gè)小時(shí),然后就問你:“需要多長(zhǎng)時(shí)間把它做出來(lái)?”

撕紙的需求

圖片來(lái)自網(wǎng)絡(luò)

不管提出需求的是PM還是創(chuàng)始人,他們的腦海中一定為這個(gè)需求設(shè)想好了一個(gè)自洽的邏輯和形態(tài)。PRD也好,口頭宣講也罷,都是在描述這個(gè)邏輯和形態(tài)。他們提出需求,就是希望程序員能夠最大程度地還原他們的設(shè)想。

說(shuō)起來(lái)簡(jiǎn)單,做起來(lái)難。我們可以通過一個(gè)小實(shí)驗(yàn)來(lái)揭示這一點(diǎn)。

首先,你需要找一張長(zhǎng)方形的紙。如果你在辦公室,那就找一張A4紙;如果你在家,那就找一張紙巾。然后按照下面的步驟進(jìn)行操作:

  • 把紙對(duì)折,再對(duì)折
  • 把左上角撕下來(lái)
  • 旋轉(zhuǎn)180度
  • 把右上角撕下來(lái)
  • 把紙展開,完成

你的作品是什么樣子?中間開洞了嗎?邊上呢?角上呢?如果再做一次,你能完成同樣的作品嗎?

你可以拿著同樣的紙去找你的家人、同事或朋友,請(qǐng)他們來(lái)完成同樣的操作。在你不施加影響的前提下,他們完成的作品極有可能和你截然不同。

為什么會(huì)這樣呢?

如果你仔細(xì)觀察他們操作的過程,就會(huì)發(fā)現(xiàn):

  • 有的人會(huì)沿長(zhǎng)邊對(duì)折,有的人會(huì)沿短邊對(duì)折
  • 在對(duì)折時(shí),有的人會(huì)把紙旋轉(zhuǎn)90度,有的人不會(huì)
  • 在旋轉(zhuǎn)180度時(shí),有的人會(huì)沿中心旋轉(zhuǎn),有的人會(huì)把紙翻面

由于每次對(duì)折都會(huì)可能產(chǎn)生兩種不同結(jié)果,在撕第一個(gè)角時(shí)紙的朝向有四種可能性,旋轉(zhuǎn)180度時(shí)有兩種可能。所以僅僅兩個(gè)撕角的位置,就至少有 2 x 2 x 4 x 2 = 32 種不同的可能性。

就這樣,我們還沒有考慮撕角的大小、角度的區(qū)別,還有極少數(shù)人是會(huì)沿對(duì)角線對(duì)折的……

該怎么對(duì)待PRD?

圖片來(lái)自網(wǎng)絡(luò)

上面撕紙的需求,其實(shí)是我自己拿了張紙隨意擺弄,然后記錄下來(lái)的操作流程。我照著這個(gè)流程,可以十分輕松地做出完全相同的作品。但是如果讓別人來(lái)做,結(jié)果就完全不一樣。其原因就是,我在完成作品的過程中,不光是按照流程進(jìn)行操作,還隱含了自己的一些小習(xí)慣,卻并沒有把這些細(xì)節(jié)記錄下來(lái)。

如果把所有細(xì)節(jié)都完整地記錄下來(lái)的話,需求應(yīng)該是這樣的:

  • 拿著紙的短邊,沿長(zhǎng)邊對(duì)折
  • 再次拿著短邊,沿長(zhǎng)邊對(duì)折
  • 讓折過兩次的角朝向右下方,沒有折過的角在左上方(必要時(shí)翻面)
  • 把左上角撕下來(lái)大約一公分的扇形
  • 沿中心旋轉(zhuǎn)180度(不要翻面),使撕過的角處于右下方
  • 把右上角撕下來(lái)大約一公分的扇形
  • 把紙展開,完成

同樣,PM在寫PRD時(shí),很有可能會(huì)漏掉一些自己認(rèn)為應(yīng)該是「常識(shí)」,無(wú)需再進(jìn)一步說(shuō)明的內(nèi)容。比如「把一張紙對(duì)折」,我們很容易想當(dāng)然地認(rèn)為,應(yīng)該是沿著長(zhǎng)邊對(duì)折,但事實(shí)上并非所有人都是這么理解「對(duì)折」的。

由于每個(gè)人的成長(zhǎng)經(jīng)歷不同,其認(rèn)知結(jié)構(gòu)之間必然存在差異,因此對(duì)同一概念未必持有相同的理解。 你所認(rèn)為的「常識(shí)」,我可能并不知道,或者擁有和你截然不同的理解。所以程序員在看PRD時(shí),一定要把自己對(duì)需求的理解復(fù)述出來(lái),跟PM確定是不是這么回事。否則就容易出現(xiàn)開發(fā)中、提測(cè)甚至上線后發(fā)現(xiàn)邏輯性錯(cuò)誤,需要緊急修復(fù)甚至返工的情況。

此外,很多問題在設(shè)想階段是發(fā)現(xiàn)不了的,只有到了具體實(shí)施時(shí)才會(huì)暴露出來(lái)。PRD不可能真正做到完備,也不能保證沒有錯(cuò)誤和遺漏。比如一個(gè)表單需求,很可能在做的過程中發(fā)現(xiàn)某個(gè)非法數(shù)據(jù)case是PRD里沒考慮到的,這時(shí)的用戶交互怎么做?文案怎么定?這都要和PM溝通來(lái)解決,而不能自己拍腦門決定。

PRD只是需求的一個(gè)快照性描述文檔,并不是需求本身。程序員應(yīng)該對(duì)需求負(fù)責(zé),而不是對(duì)文檔負(fù)責(zé)。 只有和PM保持溝通,不斷地細(xì)化需求,才能讓需求真正落地。當(dāng)發(fā)現(xiàn)PRD里有不合理或者有疑問的地方時(shí),一定要提出來(lái)讓PM進(jìn)行解釋。千萬(wàn)別視若無(wú)睹,甚至干脆將錯(cuò)就錯(cuò),等著看PM笑話。

該怎么對(duì)待需求?

圖片來(lái)自網(wǎng)絡(luò)

如果我們拿到了一份圖文并茂、十分詳盡的PRD,是不是應(yīng)該馬上照著文檔開工呢?那可不一定。

一位優(yōu)秀的程序員,應(yīng)該在開工之前把下面這些問題想清楚:

  • 為什么要做這個(gè)需求?是為了達(dá)成怎樣的目標(biāo)?
  • 想達(dá)成這個(gè)目標(biāo),有沒有明顯更合理的方案?PM是否知曉并評(píng)估過?
  • 當(dāng)前的方案是否會(huì)產(chǎn)生一些不良影響和副作用?PM是否知曉并評(píng)估過?
  • ……

程序員有責(zé)任對(duì)需求方案進(jìn)行review,并協(xié)助PM改進(jìn)設(shè)計(jì)。要知道,PM一般不會(huì)從技術(shù)角度對(duì)需求進(jìn)行考慮,所以往往提出的并非最優(yōu)方案。有時(shí)只要做一點(diǎn)點(diǎn)調(diào)整,技術(shù)實(shí)現(xiàn)的難度就會(huì)大大降低,卻不影響目標(biāo)的達(dá)成效果。

比如某個(gè)業(yè)務(wù)需要用到日期選擇器組件,PM為此專門設(shè)計(jì)了一個(gè),而你知道系統(tǒng)中某個(gè)功能頁(yè)面里有現(xiàn)成可用的同類組件。這時(shí)就應(yīng)該和PM溝通是否可以直接復(fù)用,或者在原有組件的基礎(chǔ)上進(jìn)行功能擴(kuò)展。這樣既節(jié)省了開發(fā)資源,又保持了用戶體驗(yàn)的一致。

程序員要對(duì)整個(gè)產(chǎn)品的可用性負(fù)責(zé),全面評(píng)估需求可能導(dǎo)致的不良影響,謹(jǐn)慎對(duì)待有破壞性的需求。 PM由于不了解系統(tǒng)的底層實(shí)現(xiàn)和實(shí)際數(shù)據(jù)的組織方式,所以很可能無(wú)法全面地評(píng)估需求的影響面。如果程序員忽視在這方面的思考,只是機(jī)械地按部就班地執(zhí)行方案,就很可能導(dǎo)致嚴(yán)重的線上事故。

比如要對(duì)某數(shù)據(jù)進(jìn)行批量修改,在做的過程中時(shí)發(fā)現(xiàn)該數(shù)據(jù)有多個(gè)業(yè)務(wù)正在使用。這時(shí)就應(yīng)該必須停下來(lái)和PM溝通,因?yàn)镻M可能只了解自己負(fù)責(zé)的那一塊業(yè)務(wù),不知道修改可能會(huì)對(duì)其他業(yè)務(wù)產(chǎn)生影響。此類需求要和相關(guān)各方溝通協(xié)商,確認(rèn)修改沒有不良影響后才能繼續(xù)。

程序員要有魄力去拒絕那些明顯不靠譜的需求。 有的時(shí)候,PM提出需求的動(dòng)機(jī)不是為用戶創(chuàng)造更多的價(jià)值或提升用戶體驗(yàn),而是為了沖績(jī)效完成自己的KPI。為此拆東墻補(bǔ)西墻,從兄弟業(yè)務(wù)手里搶流量入口;甚至殺雞取卵,以嚴(yán)重破壞用戶體驗(yàn)的方式拉量。遇到這種事,程序員一定要堅(jiān)持自己的原則,守住自己的底線。

思考

圖片來(lái)自網(wǎng)絡(luò)
  • 需求文檔和需求的關(guān)系是什么?
  • 和口頭講述相比,需求文檔的優(yōu)點(diǎn)和缺點(diǎn)是什么?
  • 在PM提出需求之后,程序員都應(yīng)該做些什么?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,034評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,337評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,883評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評(píng)論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,114評(píng)論 0 286
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,625評(píng)論 1 332
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,555評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,737評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,973評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,343評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,699評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容