接到需求,你要先做哪件事?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"鄭曄老師在","attrs":{}},{"type":"link","attrs":{"href":"javascript:void(0);","title":null},"content":[{"type":"text","text":"《10x程序員工作法》","attrs":{}}]},{"type":"text","text":"中給了一個例子,程序員小李接到一個單點登錄功能的需求,小李經過幾天的奮戰寫完了代碼。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在給產品經理小王演示時,小王對整體很滿意,就是覺得不支持驗證碼不太符合常規設計。但是小李覺得這個需求裏面沒有提,就沒做......","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"小李覺得很辛苦,小王覺得沒做完。我平時接一些私活兒時,也會處於這種局面,根據前期討論的需求,我很快就做完了,然後拿給用戶演示,發現這不是結束,而是剛剛開始。因爲用戶在一開始並不能把自己的實際需求想得很明白。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"描述需求的方式","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不同需求的描述方式,可能會影響程序員對需求的理解。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"信息傳遞會衰減,如何傳遞,直接決定了衰減的比例。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"基於功能列表的描述方式","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們公司以及在平時私活兒中,開發模式都是基於功能列表的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公司項目中負責需求的同事,先會跟用戶討論需求,整理出需求文檔,項目經理根據需求文檔中的功能點拆分開發任務,開發領到任務開始寫代碼;私活兒中,我自己扮演了需求與開發兼項目經理的三個角色,乾的事情都差不多。","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"功能列表其實只是一些簡單的描述,並不能看到全局","attrs":{}},{"type":"text","text":"。這種功能列表式的需求描述方式,將一個完整的需求敲成了碎片,只有所有功能完成時,纔是破鏡重圓的時刻。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"開發過程中,大多數人都無法看到完整的圖景,項目會在最後遇到很多意料之外的事情,讓大家都手忙腳亂","attrs":{}},{"type":"text","text":"。我們現在公司的項目就出現了這種情況。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果時多個組協同工作時,這種基於列表的需求描述方式的弊端更加明顯。每個組都會按照自己的理解排列開發任務。當你所在的組完成了某功能的開發任務時,卻上不了線,因爲還要依賴別的組。像之前我做過的一個項目裏面n個子項目,每個子項目之間會互相依賴,如果還按照基於列表的需求拆分,工作安排,兼職要令人抓狂啊。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"“用戶故事”需求描述","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它需要一個完整的場景,將用戶的需求將出來。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一個完整的用戶故事包含以下幾部分:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"標題","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"概述","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一般的描述格式:As a(Role),I want to(Activity),so that(Business Value)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"詳述","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"驗收標準","attrs":{}}]}],"attrs":{}}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏會描述系統的正常操作流程,以及各種異常流程系統的響應。大多數情況,我們都是流程跑通,結果發現要麼是正常操作流程不完善,要麼異常流程處理不到位。就是因爲在寫代碼之前沒考慮清楚。在這一環節給出了本次需求最基本的測試用例,保證了開發人員完成需求最進本的質量。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果在基於列表的描述方式中,加入驗收標準的描述,也會提高協作效率。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"關於角色","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"拿到一個需求後,先分析清楚比矇頭就做好太多。","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"分析需求時,你需要學會扮演各個角色,比如假設自己是用戶、是產品經理、是測試,這樣你才能分析得更透徹","attrs":{}},{"type":"text","text":"。做出來的東西質量會更高。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章