可以為Team Leader配置一位秘書(項目管理人員),他的主要功能是輔助Team Leader做一些管理方便的工作。如人員招聘的準(zhǔn)備工作、開發(fā)計劃的監(jiān)督等等。當(dāng)團隊合理的構(gòu)建之后,下面的就進(jìn)入了產(chǎn)品研發(fā)的核心流程了。
三、業(yè)務(wù)建模&需求分析
前面的過程更多的是由企業(yè)領(lǐng)導(dǎo)層決定的,當(dāng)我們技術(shù)人員進(jìn)入這個團隊時,只能祈討已經(jīng)有了一個好的開始:公司下定決心要研發(fā)這個產(chǎn)品,有一個優(yōu)秀的、明白自己職責(zé)的PM?,F(xiàn)在已及下面的所有流程都和技術(shù)人員(包括需求人員)密切相關(guān),是技術(shù)人員決定著產(chǎn)品成敗與否的時候了。
無論做產(chǎn)品還是項目,第一步做需求分析,這一點無須置疑。幾乎每一個做軟件的都知道,需求的重要性??墒菫槭裁茨敲炊嗟漠a(chǎn)品或項目最后失敗的主要原因是需求問題呢?在軟件研發(fā)中,產(chǎn)品的業(yè)務(wù)需求比項目的業(yè)務(wù)需求更難以確定。產(chǎn)品一般面對的是某個行業(yè)的通用需求,涉及的客戶面更廣,合理的提取這些需求以形成更通用的產(chǎn)品本身就是一件很困難的工作。對于一些以前沒有這些行業(yè)經(jīng)驗的軟件公司來說,這就更困難了。很多公司真因為沒有很好去做需求分析的工作而導(dǎo)致產(chǎn)品的失敗。在我以前做物流的那家公司里,也是犯了這樣嚴(yán)重的錯誤。
我們當(dāng)時對物流行業(yè)并不熟悉,也不能很好的把握業(yè)務(wù)需求,產(chǎn)品研發(fā)在來回反復(fù)的過程中消耗了大量的時間與精力。對于這個問題的解決,幾乎所有的軟件工程方法都提出了好的方案:引入領(lǐng)域業(yè)務(wù)專家(Domain Expert)。我們的研發(fā)團隊中,一定要有這樣的角色,即使我們沒有這樣一個專職人員,但一定要有人扮演類似的角色(例如架構(gòu)師)。業(yè)務(wù)專家可以和架構(gòu)師一起進(jìn)行業(yè)務(wù)建模的工作,而架構(gòu)師則偏重于技術(shù)方面,把業(yè)務(wù)模型轉(zhuǎn)化成系統(tǒng)需求,按照RUP的流程來說,就是最終變成一個個Use Case。而一個好的業(yè)務(wù)專家是非常難得的,這就是為什么很多公司有這個意識而沒有做好需求工作的重要原因:由于資金、時間等各方面的限制,他們最終放棄了這一步,而把希望寄托在架構(gòu)師或其他開發(fā)人員身上,而這其中的風(fēng)險就可想而知了。也有很多公司沒有業(yè)務(wù)專家,而把這個角色附加給架構(gòu)師了。他們要求架構(gòu)師既要精通業(yè)務(wù),也要精通技術(shù)。而現(xiàn)實中,這樣的人鳳毛麟角,屬于可遇而不可求的那一類。所以在這類角色沒有很明確分開的產(chǎn)品研發(fā)中,得到的東西要么是需求方面做得不夠好,要么在軟件架構(gòu)方面不令人滿意。怎樣最大程度保證需求的合理?我個人認(rèn)為做一個產(chǎn)品的界面原型是一個好的方法。這一點在做一個基于browser的應(yīng)用系統(tǒng)時更可行:根據(jù)業(yè)務(wù)需求做出整個的頁面原型,這樣的頁面也許很粗糙,后臺也不需要任何的程序運行,但可以根據(jù)這些頁面元素及之間的流程來驗證業(yè)務(wù)需求是否合理、正確。這種方法應(yīng)用到項目開發(fā)(相對于產(chǎn)品)中,可以和客戶一起驗證需求,經(jīng)過幾次反復(fù),可以比較準(zhǔn)確的理解、把握客戶的真實需求。這樣的工作耗費時間不多,但卻能起到很大的作用。
四、架構(gòu)設(shè)計
如果需求做好的話,可以說這個產(chǎn)品基本上能夠得以出籠,但是否稱得上品質(zhì)優(yōu)秀,則看架構(gòu)設(shè)計工作做的怎樣了。一個好的產(chǎn)品除了滿足客戶的業(yè)務(wù)功能外,還要滿足一些非功能性的需求:系統(tǒng)性能、可用性、可管理性、可靠性、可擴展性、安全性等等。正是因為面對這些眾多問題,在這一過程中,架構(gòu)師很容易走向極端。最常見的兩種極端情況:
(1)過分追求完美。
(2)做出來就行,不考慮軟件品質(zhì)。
作為一個系統(tǒng)架構(gòu)師,很多人具有完美主義的傾向。他們不斷的考慮系統(tǒng)的性能、可擴展性、安全性,技術(shù)的先進(jìn)性等等。他們最喜歡說的的詞:組件性、通用性、擴展性等等。所以他們不斷的修改架構(gòu),不斷的冒出新的思想,采