在我們公司的軟件研發(fā)體系中,存在著三種截然不同的軟件開發(fā)方式。而我,作為公司最老同事之一,也是這三種開發(fā)模式的親歷者,曾不只一次的被公司同事問過我關(guān)于這三類方式之間的異同點(diǎn)。于是利用空閑時(shí)間,對其進(jìn)行一番整理、分析和對比。
1、全能型
部門經(jīng)理在接到項(xiàng)目之后,將此項(xiàng)目交給部門內(nèi)的熟練程序員后,此程序員就自動(dòng)被委任其為項(xiàng)目經(jīng)理。從此開始,程序員將根據(jù)項(xiàng)目售前方案和銷售合同內(nèi)容,在項(xiàng)目進(jìn)行過程中分別擔(dān)當(dāng)起項(xiàng)目經(jīng)理、功能設(shè)計(jì)師、數(shù)據(jù)存貯設(shè)計(jì)師、程序員、測試員和項(xiàng)目實(shí)施人員等諸多角色。并在項(xiàng)目進(jìn)行的過程中,帶領(lǐng)少量其它程序員和輔助資源來完成此項(xiàng)目的所有工作。
此類項(xiàng)目其功能單一且不復(fù)雜,只是為了幫助用戶提升某一項(xiàng)工作的工作效率或解決客戶在其工作中的一些問題,如工作日志信息的采集和分析業(yè)務(wù)項(xiàng)目、辦公用品的申請和領(lǐng)用等。它們因?yàn)槠渖婕胺秶。褂萌藛T不多,從而具有項(xiàng)目總費(fèi)用少、開發(fā)和實(shí)施周期短、對性能要求不高的特點(diǎn)。
在此類開發(fā)模式中,程序員由于其工作的全面性,使他們在進(jìn)入項(xiàng)目組后,能夠得到很快且全面的提升,并會在與客戶交往的過程中,建立起良好的客戶關(guān)系處理經(jīng)驗(yàn),為其今后的成長和發(fā)展打開良好的基礎(chǔ)。
由于項(xiàng)目需要,程序員需要掌握全面技能,容易造成其在項(xiàng)目開發(fā)過程中需要全面的接觸項(xiàng)目管理及人際關(guān)系、需求分析、數(shù)據(jù)庫及對象設(shè)計(jì)、人機(jī)交互和用戶體驗(yàn)設(shè)計(jì)、系統(tǒng)設(shè)計(jì)和開發(fā)、測試和系統(tǒng)提升、應(yīng)用實(shí)施和售后維護(hù)等諸多截然不同的領(lǐng)域范圍;所以,作為此類程序員,其工作壓力之大,事務(wù)之復(fù)雜、綜合素質(zhì)要求之高,是其它模式的程序員所無法對比的,這也是造成此類項(xiàng)目按時(shí)完成率極低、尾款回收困難、項(xiàng)目售后工作難做、用戶滿意度差、二次項(xiàng)目獲取困難的根本原因。
同時(shí),由于程序員被大量的非開發(fā)性事務(wù)所干擾,造成他們無法專心致力于專業(yè)技能的學(xué)習(xí)和提升,也就無法造就一支高效率、高穩(wěn)定性、配合默契的開發(fā)隊(duì)伍,這也是造成公司內(nèi)此類人才大量流失的重要原因。
2、英雄型
部門經(jīng)理在接到此類項(xiàng)目后,按項(xiàng)目所涉及的領(lǐng)域范疇,將其按領(lǐng)域進(jìn)行分工。以企業(yè)信息協(xié)同系統(tǒng)為例,我們將進(jìn)行如下分工:門戶信息的獲取、聚合、交互和展現(xiàn)工作交給專職于門戶開發(fā)的程序員;內(nèi)部郵件系統(tǒng)的分析、設(shè)計(jì)、和實(shí)現(xiàn)將給郵件開發(fā)程序員;日程和事務(wù)的設(shè)計(jì)交給日程開發(fā)程序員;工作流應(yīng)用工作交由工作流客戶化開發(fā)程序員等等。
在此類型的開發(fā)模式中,程序員將會是某一領(lǐng)域內(nèi)的英雄式人物!由于他長期且相對穩(wěn)定的負(fù)責(zé)著這個(gè)有限領(lǐng)域范圍內(nèi)的一切事務(wù),可以幫助他在一定時(shí)期內(nèi)進(jìn)行系統(tǒng)而穩(wěn)定的業(yè)務(wù)研究和分析工作,進(jìn)而成長為此領(lǐng)域內(nèi)的業(yè)務(wù)專家。而且,通過持續(xù)的對其工作進(jìn)行迭代式開發(fā)、升級和完善,可使此產(chǎn)品在產(chǎn)品品質(zhì)、適用性和用戶體驗(yàn)等方面得到穩(wěn)定的提升,進(jìn)而提升了整個(gè)產(chǎn)品的品質(zhì)。
如果此領(lǐng)域內(nèi)的工作產(chǎn)品能夠得到合理的規(guī)劃和實(shí)現(xiàn),進(jìn)而將其進(jìn)行單獨(dú)的封裝、應(yīng)用集成和推廣,就有可能形成一個(gè)具有相當(dāng)競爭力的產(chǎn)品,從而為公司獲取新的銷售機(jī)會和利潤點(diǎn)。
但是,此類開發(fā)模式中的分工也容易造成程序員涉及業(yè)務(wù)領(lǐng)域單一和適應(yīng)性窄的缺陷:由于其長期面對和研究著單一業(yè)務(wù)領(lǐng)域內(nèi)的業(yè)務(wù)活動(dòng),而無法更多的接收和參考來自于用戶、企業(yè)和其它行業(yè)內(nèi)的非它業(yè)務(wù)發(fā)展需要和趨勢,從而對其在產(chǎn)品領(lǐng)域內(nèi)的發(fā)展產(chǎn)生限制,并造成其產(chǎn)品方向上的不準(zhǔn)確或錯(cuò)誤定位;由于其長期的在單一領(lǐng)域內(nèi)工作,并在此領(lǐng)域內(nèi)獲得了公司內(nèi)的認(rèn)可,這也將限制他在領(lǐng)域間的流動(dòng)性。當(dāng)公司或部門的產(chǎn)品方向和需要調(diào)整和改變時(shí),此類程序員就需要被迫改變甚至放棄其在原領(lǐng)域內(nèi)的所有積累而重新開始,從而造成巨大的浪費(fèi)。
3、專業(yè)型
項(xiàng)目經(jīng)理在接到項(xiàng)目之后,根據(jù)項(xiàng)目組成員的能力、特長職業(yè)規(guī)劃,對他們進(jìn)行適當(dāng)且專業(yè)化分工:由業(yè)務(wù)規(guī)劃人員負(fù)責(zé)項(xiàng)目的需求收集、業(yè)務(wù)規(guī)劃和需求分析;由系統(tǒng)架構(gòu)師對系統(tǒng)的進(jìn)行技術(shù)構(gòu)架和支撐性技術(shù)的規(guī)劃和引進(jìn);由數(shù)據(jù)庫專員負(fù)責(zé)數(shù)據(jù)庫對象的設(shè)計(jì)和性能調(diào)優(yōu);由功能分析員在人機(jī)交互人員輔助下負(fù)責(zé)功能設(shè)計(jì)和人機(jī)交互模式;由業(yè)務(wù)邏輯實(shí)現(xiàn)專員根據(jù)功能設(shè)計(jì)進(jìn)行高性能的業(yè)務(wù)邏輯處理實(shí)現(xiàn)和外部接口的設(shè)計(jì)和實(shí)現(xiàn);由頁面開發(fā)人員負(fù)責(zé)實(shí)現(xiàn)人機(jī)交互;測試人員負(fù)責(zé)對系統(tǒng)進(jìn)行全過程的測試和質(zhì)量監(jiān)督;專業(yè)化實(shí)施人員可快速高效的進(jìn)行系統(tǒng)實(shí)施和在線維護(hù),售后服務(wù)工作也將由專人負(fù)責(zé);
通過恰當(dāng)和合理的分工,將軟件研發(fā)過程中的各個(gè)環(huán)節(jié)進(jìn)行拆分,從而將復(fù)雜的軟件工程分解成一個(gè)個(gè)相對獨(dú)立且又緊密關(guān)聯(lián)的工作項(xiàng),從而有效的降低了軟件開發(fā)過程中的困難度和風(fēng)險(xiǎn)性;項(xiàng)目經(jīng)理把分解后的工作項(xiàng)交給項(xiàng)目組中的合適項(xiàng)目成員,并根據(jù)項(xiàng)目組成員的能力、工作難度和工作量,制定出科學(xué)的項(xiàng)目計(jì)劃;同時(shí),項(xiàng)目組成員在項(xiàng)目經(jīng)理的協(xié)調(diào)和管理下進(jìn)行密切的分工合作,此舉即能調(diào)動(dòng)項(xiàng)目組成員的其工作積極性,又能使他們將工作、興趣和個(gè)人職業(yè)成長規(guī)劃進(jìn)行有效的結(jié)合,從而使其在技能、收入和社會認(rèn)可度等諸多方面得到快速成長,達(dá)到人盡其材,材盡其用的目的。通過使用專業(yè)的人做專業(yè)的事,公司將在人員分工、資源使用和業(yè)務(wù)拓展等領(lǐng)域走向?qū)I(yè)化、規(guī)模化,最終成為專業(yè)且強(qiáng)大的產(chǎn)業(yè)實(shí)體。
但此開發(fā)模式也具有相當(dāng)?shù)木窒扌裕∑湟唬绾魏侠淼睦庙?xiàng)目組資源?項(xiàng)目組成員因其性格、能力和興趣各有不同,如何能將他們按項(xiàng)目分工和角色組成需要,進(jìn)行專業(yè)化訓(xùn)練和培養(yǎng);其二,因項(xiàng)目組成員長期單一職能的工作,與其它環(huán)節(jié)的交叉和交流都受到限制,對其未來的全面發(fā)展和綜合成長都很不利;其三、各角色之間的分工、合作與工業(yè)化生產(chǎn)中的生產(chǎn)線相似,那么,建立與之相適應(yīng)的質(zhì)量保證體系,保證各工序之間生產(chǎn)產(chǎn)品的質(zhì)量,從而從事實(shí)上提升軟件產(chǎn)品的整體質(zhì)量?
通過對這三類開發(fā)模式的分析,我們可以看出,它們各有合理性,也又具有的相當(dāng)?shù)木窒扌浴?/span>
全能型開發(fā)模式是早期的CS類項(xiàng)目開發(fā)的主要模式,其適用于哪些規(guī)模小,程序員少的小規(guī)模IT開發(fā)企業(yè)進(jìn)行小型項(xiàng)目的開發(fā)中。但對于那些工期較長、業(yè)務(wù)范疇廣、復(fù)雜度較大的項(xiàng)目,此種開發(fā)模板將采用將導(dǎo)致風(fēng)險(xiǎn)最大化,失敗幾乎是其唯一的結(jié)局。
英雄型開發(fā)模式,因項(xiàng)目組成員領(lǐng)域化的分工和合作,使它在通用型復(fù)合類產(chǎn)品開發(fā)中具有優(yōu)勢。通過對產(chǎn)品的各組成部份進(jìn)行持續(xù)的改進(jìn)和迭代性開發(fā),使產(chǎn)品在功能、性能、用戶體驗(yàn)等方面得到持續(xù)的改善和提升,從而有利于產(chǎn)品拓展并在此過程中做大做強(qiáng),最終取得競爭優(yōu)勢。但此開發(fā)模式也將導(dǎo)致項(xiàng)目組成員之間的工作協(xié)調(diào)、技術(shù)互用等方面存在諸多不便;另外,因領(lǐng)域的專業(yè)性和不可替換性,也就限制了公司在處理關(guān)健人員的流動(dòng)性方面存在諸多困難,并在核心競爭力的保證方面存在著很大風(fēng)險(xiǎn)。
專業(yè)型開發(fā)模式,通過對人員進(jìn)行專業(yè)化分工,從而在軟件開發(fā)過程中最大的利用了人力資源,提升軟件的生產(chǎn)效率,并降低了軟件的從業(yè)門檻。此方式在新形式下的項(xiàng)目開發(fā)和產(chǎn)品研發(fā)中都具有相當(dāng)?shù)母偁幜Γ惨子欣诒WC公司的核心競爭力。但采用此種開發(fā)模式時(shí),需要完善內(nèi)部的人員激勵(lì)機(jī)制,保證各角色的從業(yè)人員都有與之適應(yīng)的職位規(guī)劃和發(fā)展模式,并能根據(jù)項(xiàng)目組成員所處階段的需要,提供相應(yīng)的技能培訓(xùn)和交流機(jī)會,從而促進(jìn)其成長,激勵(lì)其上進(jìn)。
總之,采取何種開發(fā)模式,要根據(jù)公司的實(shí)際業(yè)務(wù)情況,發(fā)展規(guī)劃和人員構(gòu)成,進(jìn)行科學(xué)的分析之后,再采取行動(dòng)、從而得到具有延續(xù)性和競爭性,并與自身相匹配的軟件開發(fā)模式。
2009/4/20夜