僅僅編程來(lái)說,實(shí)在是一件很簡(jiǎn)單的事,是“程序 = 算法 + 結(jié)構(gòu)”,但要想做出一個(gè)軟件產(chǎn)品來(lái)不是這么簡(jiǎn)單的事了。

  雖然“程序 = 算法 + 結(jié)構(gòu)”沒錯(cuò),但隨著市場(chǎng)的變化,需求的變更,這些算法和結(jié)構(gòu)也是在時(shí)刻變動(dòng),有可能我們分析出這些算法和結(jié)構(gòu)后,投入到市場(chǎng)中卻發(fā)現(xiàn)產(chǎn)品已經(jīng)過時(shí)。所以我們有必要建立一個(gè)平臺(tái),用來(lái)管理和分析這些影響算法和結(jié)構(gòu),并導(dǎo)致其發(fā)生變化的需求,以至我們能夠?qū)崟r(shí)的把算法和結(jié)構(gòu)對(duì)應(yīng)的程序發(fā)布到市場(chǎng)中給客戶使用。

  顯然這時(shí)候算法和結(jié)構(gòu)已經(jīng)越來(lái)越多,所以更加有必要建立一個(gè)開發(fā)平臺(tái)來(lái)整理這些算法和結(jié)構(gòu),方便我們更好的開發(fā)改進(jìn)程序。

  但一個(gè)好的軟件產(chǎn)品除了程序本身,還有產(chǎn)品理念、操作說明、培訓(xùn)教材、實(shí)施步驟、問題反饋等一系列為客戶服務(wù)的事物,所以有必要建立一個(gè)實(shí)施平臺(tái)來(lái)存放這些事物,共享這些事物。

  因此一個(gè)存在于市場(chǎng)的產(chǎn)品,必然擁有這三個(gè)平臺(tái):需求平臺(tái)、開發(fā)平臺(tái)和實(shí)施平臺(tái)。

  建立平臺(tái)要知道這個(gè)平臺(tái)包含哪些東西,有什么方法可以管理這些東西,這是個(gè)復(fù)雜而長(zhǎng)久的過程。我們只能夠先從簡(jiǎn)單的做起,從實(shí)踐中慢慢的整理出來(lái)這些內(nèi)容和方法。自己馬上實(shí)踐,總比別人成功后走別人的老路好!

  首先要設(shè)立三個(gè)崗位,需求平臺(tái)組長(zhǎng)、開發(fā)平臺(tái)組長(zhǎng)和實(shí)施平臺(tái)組長(zhǎng)。

  需求平臺(tái)組長(zhǎng)把現(xiàn)在所有的需求全部收集整理,并實(shí)時(shí)的更新這些需求,可能開始都是些文檔,手動(dòng)處理,形成規(guī)?梢钥紤]做一個(gè)管理工具,在線需求提交、審查等系統(tǒng)。

  開發(fā)平臺(tái)組長(zhǎng)整理所有程序功能模塊,重新整合設(shè)計(jì),提出公共的算法結(jié)構(gòu)等。

  程序 = 算法 + 結(jié)構(gòu) + 方法

  因?yàn)槌绦虻膹?fù)雜,所以我們?cè)诜治鏊惴ê徒Y(jié)構(gòu)的時(shí)候有了不同的方法,以前是面向過程,現(xiàn)在又面向?qū)ο,接著比較熱門的面向服務(wù)。這都是我們實(shí)踐中產(chǎn)生的一些方法,但他們也不是相互獨(dú)立的。面向?qū)ο罄锩婵赡馨嗣嫦蜻^程,面向服務(wù)里面也包括了面向?qū)ο。所以在?gòu)建不同的算法和結(jié)構(gòu)是需要用到不同的方法,我們現(xiàn)在用得多的算是面向?qū)ο蠓椒,所以面向(qū)ο笠渤闪碎_發(fā)組長(zhǎng)整理的一個(gè)重要東西。

  “懶人精神”并不是要我們做事懶,而是重于發(fā)現(xiàn),遇到問題可以停下來(lái)多思考討論,可能找到了更好的方法。

  實(shí)施平臺(tái)組長(zhǎng)負(fù)責(zé)整理實(shí)施需要的文檔,包括操作手冊(cè),培訓(xùn)教材等。

  等到這些平臺(tái)都有所規(guī)模走上正道后,有必要還要成立一個(gè)質(zhì)量監(jiān)省平臺(tái),以第三方的眼光指導(dǎo)三個(gè)平臺(tái)的進(jìn)步。

  現(xiàn)在阻礙這種開發(fā)模式大的障礙是項(xiàng)目,為什么這么說,因?yàn)橐粋(gè)項(xiàng)目是一個(gè)陷阱,整個(gè)開發(fā)部門十幾個(gè)人,如果有幾個(gè)項(xiàng)目在同時(shí)進(jìn)行,那么這十幾個(gè)人這樣分別掉進(jìn)了各自的項(xiàng)目,以致整個(gè)開發(fā)部出現(xiàn)沒人沒時(shí)間的情況,變成一個(gè)空部門。

  為什么每一個(gè)項(xiàng)目對(duì)于開發(fā)部來(lái)說都會(huì)變成了一個(gè)個(gè)陷阱了?

  首先,產(chǎn)品的不成熟,由三個(gè)人幾個(gè)月搞出來(lái)的東西,沒有明確的需求,參考別的系統(tǒng)做,沒有正規(guī)的設(shè)計(jì),畫幾個(gè)流程圖,設(shè)計(jì)表結(jié)構(gòu)開始編碼,沒有專業(yè)的測(cè)試,互相之間點(diǎn)點(diǎn)界面看有沒有錯(cuò)誤報(bào)出。這樣搞出來(lái)的東西,上場(chǎng)幾百萬(wàn)的項(xiàng)目,開發(fā)人員哪跑得掉。現(xiàn)場(chǎng)調(diào)試程序,修改需求,到處救火。

  其次,實(shí)施力量薄搦,隨便抓來(lái)的幾個(gè)人,沒有經(jīng)過系統(tǒng)的培訓(xùn),連個(gè)sql語(yǔ)句都寫不出來(lái),更別說跟客戶討論需求、擋需求,他們做的是培訓(xùn)客戶,教他們操作,有問題丟給開發(fā)人員解決。

  再次,客戶的素質(zhì)低下,使用系統(tǒng)的客戶大部分都沒摸過電腦,需要從打字培訓(xùn)起,提出的需求很隨意也很隨時(shí),大半年下來(lái)沒斷過需求。

  后,公司領(lǐng)導(dǎo)層的制度方向,以打單搶占市場(chǎng)為重,對(duì)技術(shù)的漠視,人夠用行。沒有想過搞一批人認(rèn)認(rèn)真真的專門研究這個(gè)產(chǎn)品。

  這些技術(shù)人員,在這個(gè)項(xiàng)目從頭到尾累死累活,轉(zhuǎn)到另一個(gè)項(xiàng)目又是從頭開始。所以說這些項(xiàng)目把所有的技術(shù)人員全部都陷了進(jìn)去,以致于公司技術(shù)部門空無(wú)一人,也是一本書上所說的“軟件作坊”。

  怎么跳出陷阱,走出軟件作坊?

  下面是呂建偉先生說的兩道防火墻教我們從哪里開始走出軟件作坊。

  大家想想美國(guó)金融危機(jī)吧。美國(guó)經(jīng)濟(jì)發(fā)生問題,奧巴馬首先做的是什么?是設(shè)立防火墻,不要讓危機(jī)擴(kuò)展到更多的行業(yè)更深層次的方面。

  我們想扭轉(zhuǎn)公司現(xiàn)狀,也是如此。先設(shè)立防火墻。

  走出軟件作坊,我是以研發(fā)部門為中心的。當(dāng)然,和我交流的大部分人都是研發(fā)部的。大家都是共同的視角,共同的權(quán)限,想解決需要變革整個(gè)公司模式的問題。

  我們不可能變革其他部門,只能從自己先下手。要走出的第一步,是給自己設(shè)立防火墻,不要讓自己的問題擴(kuò)散到別的部門,也不要讓別的部門的問題擴(kuò)散到自己部門。

  這個(gè)防火墻怎么設(shè)立呢?首先得有人。沒有人,說句臟話,叫干個(gè)屁啊。

  但是,這立刻會(huì)面臨到一個(gè)很現(xiàn)實(shí)的問題,沒有人。確實(shí)沒有人。老板也不給人,每個(gè)人都忙的很厲害。沒有人啊。

  向老板申請(qǐng)人。這幾乎是不可能的事。一般在現(xiàn)狀,沒有作出成績(jī)還要人,這是不可能成立的事。雞生蛋,蛋生雞。有人是舍不得孩子套不住狼,有人是不見兔子不撒鷹。我們一般遇到的都是不撒鷹的主兒。所以大家不要抱怨,有啥人用啥人,能改善多少改善多少,盡力了。

  現(xiàn)在這三五個(gè)人,大家看著辦。為了拯救自己,不做也得做。抱怨起不了任何作用。