無論是開發人員還是leader,儘管角色不同,但他們都不過是整個開發團隊的一部分,他們的目標也都一致:應和需求、完成專案開發。他們也經常在開發過程中遇到技術和需求之間產生的矛盾,那麼這些矛盾該如何調解、當需求出現描述模糊的時候又該怎樣處理呢?為此,記者採訪了阿里軟體研發中心總監葉偉。
葉偉認為技術和需要產生矛盾往往是因為兩種情況。一是需求不清晰(如細節未考慮)、或者提出的方案不合理。這種情況下,技術會對需求方的方案做補充和修繕;如果從技術角度想到更好的解決方案,也會提出來。在不影響商業價值或使用者的體驗的前提下,需求方大都會認同,從而解決矛盾。
第二種情況是需求合理清晰,但是從技術實現成本過高或週期過長。這需要站在技術的角度重新考慮各種替代方案。如果替代方案既能滿足需求又沒有成本週期問題,則矛盾得以調解。比如阿里軟體開發的一款外貿軟體產品中,有著模糊搜尋的要求。直接通過資料庫來處理,效能是非常差的;通過搜尋引擎,則成本太大;但如果不提供,從需求方來說就是沒有達到要求。後來技術團隊將多種方案綜合,通過適當降低友好度,來實現這個功能的高效性。但有些時候未必能找到合適的替代方案,葉偉認為此時應當從商業價值、價效比等角度來考慮『變更需求』,而且必須提交給上級經理或者產品會議作決定。
調節技術與需求之間矛盾的方法有很多種,但是原則卻是大同小異。阿里軟體研發總監葉偉結合自己十多年的帶領團隊開發經驗總結了三個原則:
1,商業驅動。葉偉舉例說,乙個業務管理郵件收發系統,商業上要求對郵件數量進行統計,但之前和版本中沒有這樣乙個計數器。如果從技術實現的難易度來看,開發人員腦中的第一印象是對保留下來的郵件進行統計。然而,由於使用者之前可能刪除了部分郵件,統計數目就不可能正確。所以,這個技術方案是不符合商業要求的,所以不可行,儘管它最省時。
2,需求和開發人員之間應當尋求共同的價值點。「這個價值點既不是開發人員的價值點也不是需求人員的價值點,而是使用者的價值點。」葉偉說。理解了真正的商業價值,技術人員和需求方也就達成了共識。
3,技術不能逾越商業決策,商業決策引導技術。葉偉帶領的阿里軟體通常是根據需求做出幾種技術方案讓需求方選擇。例如,阿里軟體的最新軟體產品aep(電子商務平台)中要提供**功能,一共想了三種方式:送使用者禮包/優惠券、打折、購買返現金。這三種方式的技術實現成本和對使用者的效果都不一樣的,技術人員作出了概要的分析、比較,讓需求方來決定。需求方最後選擇了『購買時返現』,由於另二個方案是互補的,也沒有被廢棄,列入了下二個版本。所以葉偉說,「即使某種技術方案不被選擇,它仍可以作為下乙個版本或者產品的方案。」
阿里軟體研發中心總監葉偉
實際上,在產品開發過程中也難免會遇到描述模糊的需求,但又必須執行的情況,這種情況怎麼處理呢?葉偉表示可以從兩個大的方面來解決這個問題。
一是從方法學和流程的角度來處理,歸納為三點:
1敏捷開發方法;
2充分的版本迭代。網際網路軟體產品的版本週期大都比較短,阿里軟體的經驗是一般定為一至二個月;每個需求會細分,並按照重要性排定abc優先順序,再參照資源情況歸入各版本。
3產品會議。「凡事預則立、不預則廢。」在當前版本結束前召開下一版本的產品會議,提前作出產品規劃,確定版本功能。
二是從個人執行的角度來處理。通過特徵分解(feature breakdown)、格式化模板(formatted template)、模式化用例(use case pattern)等手段,盡量讓需求人員將需求描述得清晰而規範,降低模糊度。葉偉帶領的阿里軟體還會在開發前專門針對需求中的模糊點、複雜點等問題召開「需求確認會」,開發人員與qa一起補充和明確需求。
「這兩個方面只能在開發前使需求更加清晰明確,但不能保證完全消除需求模糊的現象,因為在開發過程中,經常會遇到許多細節方面的問題,」葉偉說,所以如果在開發中遇到問題,他要求開發人員馬上去溝通,然後尋找渠道與需求方確認。所以阿里軟體對開發人員的溝通能力有較高的要求,『客戶第
一、團隊合作』是阿里巴巴『六脈神劍』(價值觀)中的前二條。看看今日阿里巴巴在中國it領域的旗手級位置,我們有理由相信葉偉的經驗和感悟同樣會給我們更多有益的借鑑。【吶不喊】
葉偉:
現任阿里軟體研發中心總監、高階工程師。
2003.01——2005.11 金蝶, 資深架構師,研發中心
2001.01——2002.12 ibm中國,oo architect, igs
1997.08——2002.5 金仕達衛寧,首席技術官兼副總裁
教育背景:
1994.09——1997.07 復旦大學 電腦科學碩士
1990.09——1994.07 復旦大學 電腦科學學士
軟體研發的特點
追本溯源是人類的天性。當面對問題時,人們都會問,為什麼這樣做不行?為什麼那樣做就行?談及軟體研發過程中的問題和改善措施,需要首先分析其問題的本質,究竟是什麼原因造成了軟體研發過程的眾多問題。這樣我們才能說服自己,也說服別人,從根本上做些改變。在分析軟體研發特點之前,讓我們首先討論一下人類另外兩大類主...
軟體研發模式演變
太陽底下無新鮮事,今天是歷史的沿襲,沿襲之後的變革。軟體的發展經歷了幾個歷史階段 第乙個階段 個人英雄主義 這是pc的時代,乙個求伯君就可以完成wps,紅透半邊天,這個時代是技術強人的時代,是老虎的時代。這個時代的軟體 量小,開發成本也低,幾個人拿上槍就能上山打游擊。使用者最迫切的需求是從紙質進入計...
軟體專案研發流程
前一點段時間參與了乙個公司的新專案,最近有時間開始總結一下專案的研發流程 研發流程大概分 為 6個部分可研性分析,需求分析,概要設計,詳細設計,程式編碼,測試,發布,下面就分別說一說這個幾個環節具體都幹什麼.可研性分析之後,確定產品,研發 技術leader和主程 測試同學,質量同學,需求方對接人進行...