大家從各個(gè)開發(fā)語(yǔ)言的優(yōu)缺點(diǎn)和適用領(lǐng)域,一直討論到設(shè)計(jì)模式、框架、重構(gòu)、單元測(cè)試,乃至敏捷編程,最后都討論到了軟件開發(fā)過程管理,甚至都談到了盈利模式和中國(guó)軟件的悲哀。 最后不了了之,都覺得改善中國(guó)內(nèi)陸現(xiàn)在的軟件生產(chǎn)狀況不可能。 為什么呢? 我重新把這幾天大家的討論留言翻了一遍,發(fā)現(xiàn)大家的軟件團(tuán)隊(duì)都存在著這樣一種普遍現(xiàn)象 1、大部分人所在的公司,開發(fā)人員僅3-5人,多的在10人。別看就這幾條槍,還從售前支持,軟件開發(fā),測(cè)試、打包發(fā)布、文檔編寫、實(shí)施安裝、培訓(xùn)、技術(shù)支持都做。 2、老板和員工互相斗智斗勇,在年終獎(jiǎng)、報(bào)銷、出差、平時(shí)福利上啊,都明爭(zhēng)暗斗。老板卡的緊,員工就在項(xiàng)目和產(chǎn)品上下藥,還不知道是誰(shuí)占了誰(shuí)便宜,誰(shuí)給誰(shuí)打了工。 3、員工一邊在刻苦鉆研各種開發(fā)工具,閱讀源代碼,學(xué)習(xí)做DEMO例子,閱讀UML、設(shè)計(jì)模式、單元測(cè)試、敏捷編程等等,一邊卻懶的修改現(xiàn)在公司的產(chǎn)品,有問題就打補(bǔ)丁,客戶不嚷嚷就懶的修改,代碼不優(yōu)化,界面不友好,架構(gòu)沒架構(gòu),代碼不封裝 但是,在討論中,我時(shí)時(shí)都強(qiáng)烈感覺到,大家是想把產(chǎn)品開發(fā)好,把開發(fā)過程管理的井井有條,但是都心有余而力不足。閱讀了N多軟件工程的書籍,從重型方法到輕型方法都閱讀了,但都無(wú)法把現(xiàn)在的開發(fā)狀態(tài)一點(diǎn)點(diǎn)扭轉(zhuǎn)好。 許多人想鬧革命,把現(xiàn)在這些產(chǎn)品和團(tuán)隊(duì)都砸塌,然后重新來(lái)過,但這只是夢(mèng)想,說說而已。只能希冀下一次跳槽,能找到一個(gè)好的公司,把自己平生所學(xué)全部發(fā)揮出來(lái),但這好像也只是夢(mèng)想,因?yàn)榻涣髁艘幌拢蠹冶舜说木硾r基本相同。 一些極端主義者自己開了公司,才發(fā)現(xiàn)不持家不知道油鹽貴,現(xiàn)在自己和手下變成了老板和員工的關(guān)系,走了過去的老路。 更有一些極端主義者辭職,自己做軟件,最后由于生活拮據(jù)或做做發(fā)現(xiàn)這個(gè)軟件沒什么意義,就丟棄了自己的夢(mèng)想,隨便找一家公司開始沉默撞鐘。 一些聰明的家伙,有的入了外企,有的進(jìn)了大的網(wǎng)游公司,有的進(jìn)了外包公司,有的進(jìn)了大網(wǎng)站公司,都是講究大規(guī)模開發(fā)的公司,希望能找到一條中國(guó)式團(tuán)隊(duì)開發(fā)產(chǎn)品保證之路
但是,中國(guó)軟件行業(yè)大部分都是這樣的公司。從每年的CSDN、51aspx的程序員調(diào)查都可以看到,中國(guó)軟件公司大部分都保持在這種開發(fā)團(tuán)隊(duì)規(guī)模,開發(fā)人員大部分都在畢業(yè)1-3年。 我們是在等待時(shí)間讓人變得成熟么?我們是在等待時(shí)間讓人變得技術(shù)綜合實(shí)力增強(qiáng)么? 依筆者看,作為中國(guó)軟件群體最大的小軟件公司,需要的不是UML/RUP/CMM這些重型方法,不是前幾年大家關(guān)注的小組開發(fā)方法,也不是敏捷編程這樣的結(jié)對(duì)方法,我們都無(wú)法有這樣的資源實(shí)現(xiàn)這樣的方法。 但是,想想,星星之火可以燎原。紅軍能從爬雪山過草地起家,最后解放全中國(guó)。我們就沒有方法? 那我們就需要想,就我們目前能擁有的權(quán)力和資源,我們?nèi)绾我稽c(diǎn)點(diǎn)改進(jìn)。我們需要的是從游擊隊(duì)到兄弟連,從兄弟連到正規(guī)軍的方法。我們現(xiàn)在還處于游擊隊(duì),一個(gè)隊(duì)長(zhǎng)領(lǐng)了一幫游兵散勇,有的人甚至沒有槍還背著大刀,有的人還沒殺過鬼子。 首先,要把我們自己變成兄弟連。 我常常觀看國(guó)際著名的CS戰(zhàn)隊(duì)的比賽錄像,他們配合的多好啊。如果他們都單兵作戰(zhàn),那么早就死翹翹了。這和咱們的軟件開發(fā)多么相像。我們多么神往這種默契的配合,打的多么流暢。我們要的就是這個(gè)。他們也不幾個(gè)人么。 那讓我們來(lái)分析分析吧。 從以上來(lái)看,主要矛盾就是在:操作說明、培訓(xùn)機(jī)制、穩(wěn)定性。 如何保證穩(wěn)定性? 大家第一想到的就是招測(cè)試人員。當(dāng)然,一些公司的老板是拒絕養(yǎng)測(cè)試人員的。另外,如果你只想到招測(cè)試人員,其他方法不配合測(cè)試人員,即使有了測(cè)試人員,軟件穩(wěn)定性仍然不會(huì)有提高。所以,有一些工作,是不管有沒有測(cè)試人員,都必須是我們開發(fā)人員要做的: 應(yīng)該說,找一個(gè)技術(shù)能力好的,工作認(rèn)真負(fù)責(zé)的人,應(yīng)該是不難找到的。而且專門做這件事,不讓他參與各種雜事,他是應(yīng)該能干好這件事的,而且會(huì)越做越好,這就是術(shù)有專攻。 剛才還講到一件事,那就是開發(fā)經(jīng)理要熟悉客戶需求,而且是深刻理解客戶需求。 客戶需求,客戶需求。這個(gè)讓開發(fā)部最頭疼的字眼。每當(dāng)想起客戶需求,就想起了以下這些話: 似乎,我們?cè)谛枨笊蠠o(wú)能為力,我們永遠(yuǎn)在追趕客戶的需求,滿足他們的現(xiàn)狀,把N多家的客戶需求都加進(jìn)軟件中,只要能實(shí)現(xiàn)的,我們盡量咬牙實(shí)現(xiàn)了。 這個(gè)問題終歸是問題,而且是軟件開發(fā)最大的問題。雖然我們也動(dòng)用了這樣的技巧: 經(jīng)過這么幾招,客戶也疲了。需求是不提了,開發(fā)部歡呼雀躍。但我們真的做好了么?難道客戶真的滿意了么?客戶為什么要用我們的軟件?難道僅僅是為了把他們現(xiàn)在手工做的,然后轉(zhuǎn)到計(jì)算機(jī)去做。讓計(jì)算機(jī)的查詢統(tǒng)計(jì)計(jì)算速度代替人工? 客戶為什么要提這樣的需求?客戶要根本解決什么問題?這些問題誰(shuí)來(lái)想,誰(shuí)來(lái)想解決辦法? OH,My God!我們無(wú)能為力,因?yàn)槲覀兪羌夹g(shù)人員,我們不懂業(yè)務(wù)。 那這個(gè)問題誰(shuí)來(lái)解決? 程序員苦笑了:沒有人解決,也沒有人能解決??蛻艟鸵?,你不做他就要給老板打電話。 噢,那就讓程序員的噩夢(mèng)繼續(xù)吧。誰(shuí)也救不了你,能救你的只有你自己。 要救我們自己,必須我們自己走出我們自己。誰(shuí)讓我們就處在這樣的處境呢?我們都想過的好,只能我們自己救我們自己。 那我們就鼓足勇氣,走出來(lái),從我們的設(shè)計(jì)模式、OO、軟件工程、虛擬接口、反射、持久化、框架中走出來(lái)。開發(fā)經(jīng)理來(lái)承擔(dān)起客戶行業(yè)研究來(lái): 其實(shí),開發(fā)經(jīng)理就相當(dāng)于業(yè)務(wù)架構(gòu)師(因?yàn)槲覀冞€是游擊隊(duì),不可能有專職的業(yè)務(wù)架構(gòu)師),公共代碼開發(fā)員就相當(dāng)于技術(shù)架構(gòu)師。 柳傳志說的非常好:搭班子,定戰(zhàn)略,帶隊(duì)伍。你班子不行,上什么需求管理軟件、版本管理軟件、項(xiàng)目進(jìn)度管理軟件、自動(dòng)測(cè)試、自動(dòng)集成軟件,都是無(wú)法落地執(zhí)行的。 有了夯實(shí)的業(yè)務(wù)+技術(shù),功能實(shí)用、功能符合客戶操作、功能穩(wěn)定。這是軟件最基本的要求,就都能滿足了。這時(shí)候再招測(cè)試人員,就能把質(zhì)量再夯實(shí)了。 而且,測(cè)試人員由于熟知產(chǎn)品,他們還能做技術(shù)支持呢,這樣可以有更多的開發(fā)人員來(lái)專職開發(fā),開發(fā)的專業(yè)性就能越來(lái)越提高了。 好的產(chǎn)品,還需要有好的文檔和培訓(xùn),否則其他部門還是不會(huì)接開發(fā)部的產(chǎn)品的。 好了,開發(fā)部的四套馬車終于起來(lái)了,這就是我要講的開發(fā)模式:從游擊隊(duì)轉(zhuǎn)變?yōu)樾值苓B,從軟件作坊走向 記?。簶I(yè)務(wù)架構(gòu)、技術(shù)架構(gòu)、測(cè)試兼技術(shù)支持、文案兼培訓(xùn),四套馬車。 我們一直用它,效果很好,搭建團(tuán)隊(duì)容易,循序漸進(jìn)不革命。 有了這么好的團(tuán)隊(duì),就能比過去產(chǎn)出更好的軟件,軟件的質(zhì)量,軟件的進(jìn)度,軟件的競(jìng)爭(zhēng)力就都上來(lái)了,再上各種管理軟件:如項(xiàng)目管理軟件、版本管理軟件、BUG管理軟件、自動(dòng)測(cè)試軟件,就水到渠成了。 其他部門也愿意接軟件了,軟件的實(shí)施和培訓(xùn)和技術(shù)支持都被其他部門接過去了。開發(fā)部門也終于專職專業(yè)起來(lái)了,整個(gè)公司都很協(xié)調(diào)了,部門間也不互相陷害抱怨了。公司發(fā)展速度蹭蹭的。 OH,My God! |
|