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