一直以來,我們都在不停得做項(xiàng)目,趕項(xiàng)目。相信從大家開始做項(xiàng)目到現(xiàn)在,做過了很多大大小小的項(xiàng)目,或多或少也有讓自己很引以為豪的成功了的項(xiàng)目。大家回頭想想,我們的項(xiàng)目一般是怎么做出來的!每個(gè)公司有不同的做法,但是起碼在有些方面還是差不多的。
每次項(xiàng)目到來,幾次會(huì)議之后,項(xiàng)目就開始了,開始分配人員,開始分析一些從客戶那里拿來的需求,然后一些骨干的開發(fā)人員就開始為項(xiàng)目搭架子。于是一個(gè)項(xiàng)目就算是進(jìn)行起來了。談到了為項(xiàng)目搭架子,專業(yè)點(diǎn)說就是做架構(gòu)了,說是做架構(gòu),其實(shí)就是把項(xiàng)目按照慣例分割為幾個(gè)邏輯層,至于說這個(gè)架構(gòu)好不好,有什么風(fēng)險(xiǎn),是否可以適應(yīng)以后的變化,采用的技術(shù)的風(fēng)險(xiǎn)和可行性分析,這些很少考慮,原因很簡單:一般的都是這么開發(fā)的,應(yīng)該沒有什么大的問題。確實(shí),很多的項(xiàng)目也確實(shí)是這樣的開發(fā)的,而且很多也成功了。這些無可厚非,至于說什么標(biāo)準(zhǔn)不標(biāo)準(zhǔn),是否遵循了什么開發(fā)的原則,沒有多少人在乎,不管怎樣,項(xiàng)目是成功了。
項(xiàng)目開發(fā)中,很多的原則我們是很清楚:什么單一職責(zé),依賴反轉(zhuǎn),什么可測試性,維護(hù)性.....很多時(shí)候,在coding的時(shí)候,這些原創(chuàng)反倒成了多余,項(xiàng)目最后成為了功能代碼的堆積,特別是在趕項(xiàng)目的過程中,代碼堆積的效果就更加明顯了:只要把功能搞定,其他的以后再說??梢酝@個(gè)“以后再說”就成為了“永不再說”。這個(gè)也無可厚非。
就這樣,一年又一年,開發(fā)項(xiàng)目,做項(xiàng)目,趕項(xiàng)目。而且很多人對(duì)做軟件開發(fā)沒有什么興趣了:原本以為軟件開發(fā)是一種高智商的活動(dòng),現(xiàn)在發(fā)覺有點(diǎn)像是體力活。一年一年,我們?yōu)橐粋€(gè)個(gè)不同的客戶開發(fā)出一個(gè)個(gè)不同的系統(tǒng)。
相信很多公司也常常提出很多很“誘人”的口號(hào):通過做大量的項(xiàng)目,積累和開發(fā)通用組件,組件越多,以后開發(fā)就是僅僅只是堆積木了....但是真正的項(xiàng)目中,客戶不停在催,上頭也在催,最后就沒有人顧及什么通用不通用了。項(xiàng)目開發(fā)是越做越累,相信這也是很多開發(fā)人員轉(zhuǎn)行和轉(zhuǎn)型的原因之一吧。
企業(yè)級(jí)項(xiàng)目是什么? 為一個(gè)企業(yè),機(jī)構(gòu),客戶公司開發(fā)的項(xiàng)目就算得上是企業(yè)級(jí)項(xiàng)目了嗎?一個(gè)很大的項(xiàng)目就是企業(yè)級(jí)項(xiàng)目嗎?一個(gè)小的項(xiàng)目就算不上是企業(yè)級(jí)項(xiàng)目?
其實(shí),一直以來,我個(gè)人也對(duì)什么是“企業(yè)級(jí)”的概念不是很清晰。只是天天是在這么說。
說到企業(yè)級(jí)項(xiàng)目,隨著而來的有很多概念:企業(yè)級(jí)架構(gòu),企業(yè)級(jí)開發(fā)。
但是不管怎么說:企業(yè)級(jí)這個(gè)概念和項(xiàng)目的大小是沒有什么很大的關(guān)系的,甚至可以說是幾乎沒有什么關(guān)系。
其實(shí)企業(yè)級(jí)項(xiàng)目其實(shí)就是一帶著一種“企業(yè)級(jí)”的思想來做項(xiàng)目。
在文章中的第一部分,我們到了現(xiàn)在我們做項(xiàng)目的方式:代碼的功能“堆積”。通過這種堆積出來的代碼就僅僅只是用于這一個(gè)項(xiàng)目,對(duì)于以后其他的項(xiàng)目幾乎是沒有什么用處的,也就說代碼的重用行不夠,而且往往在一個(gè)項(xiàng)目中,很多的代碼都是雜七雜八的,很多相似的功能都是各自搞出一套代碼。諸如之類的問題,導(dǎo)致項(xiàng)目越做越累,很多美麗的口號(hào)化為泡沫。
企業(yè)級(jí)的項(xiàng)目起碼有以下幾個(gè)特征:穩(wěn)定性、靈活性、隔離性、重用性、維護(hù)性
相信這些特性大家都不陌生,這些特性我就不具體的解析,大家都清楚。說了這些多,可能大家認(rèn)為我說的是廢話,屁話,但是有一點(diǎn)可以說的:現(xiàn)在我們開發(fā)項(xiàng)目確實(shí)很多的時(shí)候忽略了這些東西,因?yàn)檫@個(gè)忽略,確實(shí)使得項(xiàng)目項(xiàng)目的開發(fā)加快,但是從長期的來看,項(xiàng)目開發(fā)還是越來越累的。如果在開發(fā)的時(shí)候,每次帶著一點(diǎn)點(diǎn)這樣的思考,盡量寫出符合那些特性的代碼,慢慢的,一種“企業(yè)級(jí)的心智”就
慢慢出來了,一個(gè)很類似的比喻:在項(xiàng)目中,遇到了一個(gè)很難的技術(shù)問題,我們往往花很多的時(shí)間來攻克,最后終于搞定。確實(shí)這個(gè)攻克的過程我們從思維上可以這樣分析:我們思維和問題的答案之間隔了一道墻,我們一次次的嘗試各種解決方案去攻克問題的時(shí)候,我們的思維一次次的在撞擊這道墻,最后墻被撞破,我們也得到了問題的解決方案。
這里我不是說教,本人的“企業(yè)級(jí)的心智”也沒有,但是因?yàn)閹е@個(gè)思想作項(xiàng)目,個(gè)人認(rèn)為思想有了提升,而且還真的得到了不少通用的組件,雖然說組件善待完善,但是已經(jīng)有了些甜頭。同理,我們在項(xiàng)目中帶著“企業(yè)級(jí)”思維,我們就在一點(diǎn)點(diǎn)的撞擊那道“墻”,最后的結(jié)果就是:通用的功能被封裝為了通用的組件,為以后的項(xiàng)目的留下積累。