1、第一次總讓人難忘
人生第一次弥臼,總會讓人很難忘宴咧,第一次學(xué)會走路,第一次離開父母在異鄉(xiāng)過年径缅,第一次戀愛掺栅,第一次牽起女孩的手,第一次......總之每個第一次都讓人難忘纳猪。
我的第一次項目經(jīng)歷也讓我很難忘氧卧,這是轉(zhuǎn)行后進入的第一家公司,是一家民營集團氏堤,公司很有錢假抄,老板財大氣粗而且很有魄力,自己建了個信息化部門丽猬,養(yǎng)了上百口人宿饱,集團所有信息化系統(tǒng)全部自主開發(fā)。
老板說了脚祟,上ERP是死谬以,不上ERP更是死,那我們就上由桌,大手一揮就開干了为黎。
我剛進這家公司應(yīng)聘的開發(fā)工程師崗,入職后進入了一個項目組行您,負責(zé)維護XX系統(tǒng)铭乾,這個系統(tǒng)據(jù)說集團的各大分公司都在使用,是非常重要的生產(chǎn)系統(tǒng)娃循,不容有任何閃失炕檩。
因為我是剛轉(zhuǎn)行過來,自己也就自學(xué)了點三腳貓的JAVA編程功夫,,很多項目上的專業(yè)術(shù)語根本就聽不懂笛质。
比如第一次聽項目經(jīng)理說泉沾,今天晚上上線,大家都辛苦點妇押,晚點走跷究,真不怕大家笑話,當(dāng)時真得不懂什么叫上線敲霍。
也不敢問罐农,后來就明白了甘萧,上線就是把測試通過的程序包部署到生產(chǎn)系統(tǒng)上漠烧。
這就是我的第一次挪略,第一次真正接觸企業(yè)級軟件開發(fā)項目,第一次進入一個項目團隊锋恬,一切都是生機勃勃的,未來的路不知會怎么樣编丘,總感覺是充滿希望的与学。
2、我們的項目團隊
公司的信息化部嘉抓,分為幾個處:需求和實施處索守、開發(fā)處、質(zhì)量管理處抑片。
需求和實施處養(yǎng)著一群項目經(jīng)理和實施人員卵佛,他們負責(zé)調(diào)研需求和現(xiàn)場的實施工作。
開發(fā)處負責(zé)軟件的開發(fā)過程敞斋,分為架構(gòu)人員截汪、項目開發(fā)負責(zé)人、開發(fā)工程師植捎,我剛?cè)肼毦褪沁@個處的一名初級開發(fā)工程師衙解。
質(zhì)量管理處負責(zé)測試和部署,還養(yǎng)著幾個比較牛的DBA焰枢。
每個項目就是這些處的不同崗位協(xié)作完成蚓峦,實際我們當(dāng)時的項目協(xié)作模式,是一種弱矩陣的模式济锄。
我所在的項目組暑椰,項目經(jīng)理是個安徽人,個子不高荐绝,非常聰明一汽,性格非常好,沒什么脾氣低滩,這對我這個剛?cè)隝T職場的人來說是個好運氣角虫。
他最喜歡和我們談?wù)摰木褪菕甓嗌馘X沾谓,仿佛他很缺錢,如果某個月的獎金發(fā)少了都會嘮叨半天戳鹅。
項目經(jīng)理下有個需求和實施人員J先生均驶,他成為了我的第一個師傅,我剛進來就是做老系統(tǒng)維護開發(fā)的枫虏,而這個老系統(tǒng)基本就是J先生一手開發(fā)的妇穴,只不過后來他轉(zhuǎn)去做需求和實施了。
但是一個老系統(tǒng)隶债,沒有詳細的設(shè)計文檔腾它,沒有規(guī)范的注釋,代碼真心看不懂死讹,只能靠師傅給多講講了瞒滴,J先生人也非常好,特別喜歡教我赞警,而且很有耐心妓忍,要不是他,真不知道自己能不能把這個老系統(tǒng)搞明白愧旦。
當(dāng)時我的直屬領(lǐng)導(dǎo)是Ben世剖,一個臺灣人,開發(fā)管理非常規(guī)范笤虫、非常嚴謹旁瘫,也非常嚴格,經(jīng)常帶我們做代碼Review琼蚯,慢慢的我就養(yǎng)成了規(guī)范寫代碼的好習(xí)慣酬凳。
雖然通過IDE工具可以幫助我們Check代碼格式,但那畢竟是機器遭庶,還要靠自己自覺的養(yǎng)成好的習(xí)慣粱年,特別是要寫代碼注釋。
看太多前人寫的代碼罚拟,一行注釋都沒有台诗,代碼寫的像神仙寫的一樣根本看不懂。所以一定要寫好注釋赐俗,算是給后來人留點福利吧拉队。
負責(zé)測試的是一個湖北人,北航計算機系畢業(yè)的阻逮,我一直覺得以他的聰明才智粱快,做測試真有點屈才了(沒有貶低測試的意思),后來我們成了很好的朋友,現(xiàn)在他已賣掉北京的房子回老家湖北了事哭,過上了優(yōu)哉游哉的生活漫雷。
就是這么一群人組成了這個項目團隊,大家很有愛鳍咱,很開心降盹,我的第一次項目之旅從老系統(tǒng)開發(fā)工程師開始,認識了這么多優(yōu)秀的好人谤辜,感覺自己很幸運蓄坏。
3、一點心得
項目過程有幾件事很難忘丑念,讓我學(xué)到很多涡戳,逐漸成長起來,今天主要從一個維護開發(fā)人員的視角看一看如何把一個老系統(tǒng)維護好脯倚。
(1)讀懂的代碼的渔彰,趕緊把代碼注釋寫好
代碼注釋真的非常重要,你程序可以寫的啰嗦點推正,甚至性能沒那么高恍涂,但最起碼要能看懂,只有看懂了才可能去優(yōu)化舔稀。
就算是有設(shè)計文檔乳丰,沒有代碼注釋掌测,程序照樣看不懂内贮,所以一定要寫注釋,就像蓋一個房子沒設(shè)計圖紙一樣汞斧,漏水了夜郁,根本不知道去哪里找原因,弄不好要把整個地板都刨開才能找到哪段管子漏水粘勒,真到這個地步動靜可就大了竞端。
所以說收到一個老系統(tǒng)的代碼維護任務(wù),最重要的一步就是把讀懂的代碼寫好注釋庙睡,特別是寫的晦澀難懂的代碼事富,注釋寫明白了,這段代碼基本就是你的了乘陪,想做些重構(gòu)也沒問題统台。
(2)把各類配置文件整理好
一個系統(tǒng)肯定會涉及到大量配置文件,屬性文件或者是XML文件啡邑,這些文件自己先弄明白贱勃,然后用excel做個整理記錄,這樣就不會因為配置文件的問題導(dǎo)致環(huán)境起不來,荒廢半天的時間找原因贵扰。
(3)適當(dāng)部分重構(gòu)
每個維護老系統(tǒng)的人都覺得以前的系統(tǒng)寫得太爛了仇穗,恨不得自己重構(gòu)一遍,千萬不要這樣想戚绕,風(fēng)險太大纹坐,不知道哪里有個坑邁不過去。
可以進行適當(dāng)?shù)闹貥?gòu)列肢,找部分自己覺得把握比較大的模塊重新進行設(shè)計恰画,引入一些好的設(shè)計模式,比如在原來代碼基礎(chǔ)上封裝一層瓷马,原來能用的代碼盡量保留拴还,這樣代碼的可讀性更好了,而且也不會對原來的代碼有太大改變欧聘。
(4)性能優(yōu)化
有些執(zhí)行效率比價低的程序重點進行性能優(yōu)化片林,性能的問題可能有很多種,可能是架構(gòu)組件層面的怀骤,可能是代碼程序?qū)用娴姆逊猓赡苁菙?shù)據(jù)庫模型設(shè)計的不合理,也可能是SQL本身執(zhí)行效率比較低蒋伦。
對企業(yè)管理軟件而言弓摘,比較常見的是SQL寫的比較爛,執(zhí)行效率低痕届,如果實在找不到問題韧献,還可以找比較牛逼的DBA幫忙分析一下。
記得當(dāng)時有一個寫的特別牛逼的查詢統(tǒng)計用的SQL研叫,大概有幾百行锤窑,執(zhí)行效率非常低,DBA加了幾個索引嚷炉,結(jié)果執(zhí)行效率提升十幾倍渊啰,立馬從分鐘級變成秒級。
天生的設(shè)計缺陷是很難更改的申屹,這個時候可以考慮采用一些變相的方式提升性能绘证。
比如一些實時性要求不高的查詢功能,可以考慮改成延遲查詢哗讥,引入一些檢索服務(wù)器(比如Solr)嚷那,更簡單的可以封裝成分析視圖,效率能顯著提升忌栅,對用戶而言數(shù)據(jù)延遲并沒有什么不適感车酣,反而因為頁面加載速度變快了曲稼,給用戶帶來不少驚喜。
(5)主動進行日志分析
剛進公司湖员,我們處領(lǐng)導(dǎo)召集我們開的第一個會贫悄,就是作為維護開發(fā)工程師,如何實現(xiàn)系統(tǒng)主動維護娘摔?
答案就是寫程序監(jiān)控日志窄坦,每天把異常日志發(fā)到自己郵箱里,當(dāng)出現(xiàn)問題時凳寺,主動修正鸭津,不要等用戶發(fā)現(xiàn),等到用戶使用發(fā)現(xiàn)問題了再來找你肠缨,可能就是大事了逆趋。
特別是針對剛上線的接口程序,因為涉及到外部系統(tǒng)交互晒奕,就算是前期聯(lián)調(diào)的再好闻书,也可能在上線后出現(xiàn)問題,這個時候提前把監(jiān)控日志寫好脑慧,出了問題就能及時處理魄眉。
這些是我進入IT行業(yè)第一年,作為一個維護開發(fā)工程師的一些心得闷袒,因為時代比較久遠了坑律,很多細節(jié)的東西想不起來了,但一些做事的方法囊骤,大家如果覺得有用可以參考晃择。
今天就寫到這吧,改天繼續(xù)......