外包公司做遗留项目有意思么?
過年后,在目前公司的工作就要告一段落了,又恰逢年終,終覺得還是要總結(jié)點(diǎn)什么
背景介紹
考慮了一下,似乎技術(shù)上沒有什么太多可說的,再加上外包項(xiàng)目也不能透露太多客戶的東西。3年多做得都是同一個Account(客戶)下的項(xiàng)目,是客戶產(chǎn)品線下的一個數(shù)據(jù)中心產(chǎn)品,面向數(shù)據(jù)中心的基礎(chǔ)設(shè)施用戶,也就是國內(nèi)IDC。產(chǎn)品提供數(shù)據(jù)中心IT基礎(chǔ)設(shè)施運(yùn)維整體解決方案, 屬于行業(yè)內(nèi)KVM交換機(jī)頂級品牌, 另一家也是美國廠商, 行業(yè)內(nèi)剩下的就是國內(nèi)中低端的深圳廠商, KVM over IP 還是較有技術(shù)含量的。
該產(chǎn)品有悠久的歷史,最早的代碼在源碼中的標(biāo)記是10年前, 那時java還處于一個嬰兒期, 并沒有這么多開源框架支持企業(yè)級開發(fā), 數(shù)據(jù)模型還是用java bean封裝,操作方法也在bean中, web層的調(diào)用直接穿透到持久層(也就是bean)這里。so,這樣的東西有技術(shù)挑戰(zhàn)么?
遺留項(xiàng)目到底有沒有意思?
大部分程序員都喜歡搞新項(xiàng)目,覺得新項(xiàng)目不用吃別的程序員的"狗食", 能大膽用新技術(shù),很爽。但現(xiàn)在IT信息化已經(jīng)進(jìn)行了10幾年了,如果是外包行業(yè),基本上接的最多的項(xiàng)目肯定都是維護(hù)性項(xiàng)目, 一般企業(yè)哪有這么多新項(xiàng)目啊,都是遺留系統(tǒng)。
遺留項(xiàng)目自有它的特點(diǎn), 首先要吃透該系統(tǒng)的整體技術(shù)設(shè)計(jì), 至少是宏觀上的層面要有個整體把握,然后才能根據(jù)客戶的enhancement需要來設(shè)計(jì),不要破壞已有系統(tǒng)的設(shè)計(jì),偏離了原來架構(gòu)的設(shè)計(jì)意圖,會使軟件越改越爛,就是重構(gòu)那本書里提到的"bad smell"。一旦有這個趨勢,要及早處理, 這個技術(shù)債越欠越多,維護(hù)的人員一批一批的換,到最后沒人搞得清楚整個系統(tǒng)的runtime運(yùn)作,有些公司老產(chǎn)品折騰不來了干脆推倒重來, 然后循環(huán)又開始了。
這個就是維護(hù)的技術(shù)含量了,聽說還有個專門的行當(dāng)叫維護(hù)架構(gòu)師,國內(nèi)公司似乎還沒發(fā)展到這個程度。你需要在遺留項(xiàng)目定好的條條框框里輾轉(zhuǎn)騰挪,使勁渾身解數(shù),為了提高產(chǎn)品的一點(diǎn)性能,應(yīng)付越來越多的數(shù)據(jù),保證質(zhì)量的同時,盡量引入當(dāng)前比較主流的工具或方法學(xué)來提高團(tuán)隊(duì)效率。
我們的項(xiàng)目就經(jīng)歷過一次大幅重構(gòu):
數(shù)據(jù)庫從PointBase內(nèi)存數(shù)據(jù)庫更換到主流開源庫Postgresql
引入Ioc(Guice)
基于原來的bean方式簡單操作重新用JPA封裝了持久層
由于原來內(nèi)存庫在數(shù)據(jù)量不大時速度如飛,更換了常規(guī)文件系統(tǒng)數(shù)據(jù)庫后必然影響性能,所以加了ehcache緩存,對sql中where語句的查詢結(jié)果進(jìn)行緩存
2011年時部分復(fù)雜操作頁面改用富客戶端的Flex來處理,提高易用性(那時Adobe還沒有放棄Flex)
高可用:每個WebApp之間的數(shù)據(jù)庫采用開源方案SymmetricDS來處理,支持異構(gòu)數(shù)據(jù)庫同步(雖然當(dāng)前不需要)
還覺得無聊嗎?也許。
對于大部分項(xiàng)目機(jī)會不能自己選擇的業(yè)內(nèi)同行,也許有意思的玩意就在你身邊,你覺得是一坨shit的東西仍然能從系統(tǒng)的整個生命周期中,結(jié)合當(dāng)時的技術(shù)環(huán)境,看到這坨shit的一些有意思的東西,從設(shè)計(jì)文檔里體會當(dāng)時的設(shè)計(jì)權(quán)衡,考慮。 當(dāng)然,文檔里只有設(shè)計(jì)的結(jié)果,有些妥協(xié)maybe只有當(dāng)事人才能知道,but,這不是重點(diǎn)! 這里只想說,一個人想提升自己,如果有心,任何時候都可以,只要會發(fā)現(xiàn)。
OK,這是enhancement,那bug fix呢?這個更簡單,現(xiàn)在如火如荼的開源,所有人去參與一個項(xiàng)目的第一步是什么?
看項(xiàng)目介紹,找架構(gòu)文檔,有個初步認(rèn)識
訂閱maillist,在里面渾水摸魚,繼續(xù)了解項(xiàng)目
去項(xiàng)目的online bug tracking上看看,有啥自己懂得沒
然后。。。 改bug去吧~ 混個臉熟吧! 多改幾個吧! 改著改著, 哇! 核心開發(fā)啦!
多么的相似。菜鳥都從改bug開始,但別拿這個當(dāng)終極目標(biāo)了。。 咱要有長遠(yuǎn)打算。
還無聊嗎? 我不知道啊!
那好,說了這么多,就是讓那些迷茫的人,能在自己的組織結(jié)構(gòu)里,自己可控的部分挖掘潛能,畢竟,沒人能阻止你進(jìn)步。
總結(jié)
以上是生活随笔為你收集整理的外包公司做遗留项目有意思么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。