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