這一年,我從學(xué)校畢業(yè),走上工作崗位,成為了一名程序員。在w公司工作的半年時間里,參與過項目開發(fā),經(jīng)歷了崗位調(diào)動(由開發(fā)轉(zhuǎn)為維護)。經(jīng)過這段時間的工作,逐漸地對w公司開發(fā)人員和維護人員的工作和生活狀況有了認識,相比剛走出校園的自己,心態(tài)也發(fā)生了一些變化。
開發(fā):狂奔的蝸牛
進入w公司后,第一個參與的項目是U項目,U項目是融合通信相關(guān)的,基于已有的業(yè)務(wù)代碼作二次開發(fā),功能包括即時消息、IM會議、寬窄帶電話等。
原有的業(yè)務(wù)代碼,結(jié)構(gòu)混亂、冗余代碼多、模塊交互過程繁雜、歷史悠久。很多源碼文件代碼行數(shù)過萬,某個.c文件有4萬多行代碼,其中一個函數(shù)有將近3k代碼,代碼調(diào)用層次最深的達到10多層。在這份號稱過百萬行的代碼里,2007年產(chǎn)的那叫陳釀,2000年產(chǎn)的那叫國窖經(jīng)典,甚至有人發(fā)現(xiàn)80年代的代碼,那叫一個“代碼恒久遠,一碼永流傳”。
一位老員工對我說:少年,你若能把這份代碼看懂,以后看其他代碼,那都是浮云!但他不知道,從看到這份代碼起很長一段時間,我見到老同學(xué),都是這樣一副表情:
原有代碼的惡臭,加上通信流程的理解門檻,新員工很難在新項目開發(fā)中擔(dān)任主力。項目時間緊,業(yè)務(wù)需求不斷變動,更加大了開發(fā)的難度和老員工的負擔(dān)。盡管采用了“流行”的敏捷開發(fā)流程,但更多地是趕工期的敏捷、加班的敏捷。像過去一樣,依賴“人多力量大”,新老員工合力扛過了U項目這“一大波僵尸“,但這之后,從人員技能、代碼優(yōu)化方面,是否應(yīng)該考慮進行裝備升級呢?
個人工作
吐槽過后,來講講我在U項目中的工作。在U項目中我負責(zé)F模塊部分功能的開發(fā):
消息跟蹤功能:顯示模塊中部分變量的值,展現(xiàn)程序的調(diào)用過程與返回結(jié)果
防止內(nèi)存泄漏功能:檢測模塊調(diào)用者,在調(diào)用者失效時釋放其申請的內(nèi)存塊
另外,參與了與F模塊相關(guān)的單元測試、性能測試。在編碼過程中,了解了代碼靜態(tài)檢查、圈復(fù)雜度檢查等概念以及相關(guān)工具的使用方法;在單元測試過程中,學(xué)習(xí)了gtest單元測試框架的使用方法。
維護:笨拙的偵探
U項目就要進入交付期的時候,我被告知要調(diào)到另一個項目組的維護組。
是的!當時聽到這個消息就震驚了!俺可是立志從事軟件開發(fā)的娃啊!維護是做神馬的?!人家一點思想準備都沒有啊!!!
說說維護
調(diào)換部門后,經(jīng)過一個月的摸索,漸漸了解了維護工作內(nèi)容。我所在的小組負責(zé)平臺的維護工作,這里的“平臺”涵蓋硬件(CPU、內(nèi)存、磁盤、網(wǎng)卡等)、存儲設(shè)備、操作系統(tǒng)和中間件軟件,那工作內(nèi)容又包括哪些呢?包括改進完善維護工具、實施保障與問題處理。問題處理是指在上層業(yè)務(wù)出現(xiàn)異常或中斷的時候,通過查看各種日志,排查故障原因(平臺相關(guān)的)并協(xié)助恢復(fù)業(yè)務(wù),問題處理是維護工作任務(wù)中的主要一項。
困境
平臺支撐各種產(chǎn)品的業(yè)務(wù),使用中的設(shè)備數(shù)量多,基數(shù)大,問題出現(xiàn)的概率就大。每個維護人員常常同時處理幾個問題,加上夜間保障與支持,維護人員更是感到身心疲憊。分析維護工作困難重重的原因,我認為有以下幾點:
1.人才缺失
最根本的原因還在于人。維護工作涉及計算機的各個方面:硬件、存儲設(shè)備、操作系統(tǒng)(Linux)、網(wǎng)絡(luò)、中間件軟件(雙機軟件、數(shù)據(jù)庫等),維護人員要求了解以上各個方面知識,但現(xiàn)狀是,對于以上每個方面,組內(nèi)并沒有專研得深、研究得透的人。
正因為缺乏專業(yè)知識,在分析問題原因的時候,維護人員更多是根據(jù)經(jīng)驗庫,與問題現(xiàn)象作匹配。也就是說,維護人員能處理的問題,大多是過去發(fā)生過的、已知原因的、相對淺顯的問題。面對需要從“深層次”尋找原因的問題(例如通過分析內(nèi)核代碼,排查內(nèi)核bug),我們往往無計可施。
2.跨部門合作的瓶頸
作為基礎(chǔ)平臺的維護人員,需要與業(yè)務(wù)人員、服務(wù)熱線人員和業(yè)務(wù)實施人員合作,共同處理、解決問題。各類人員分屬不同部門,問題的嚴重程度、是否處理得當,涉及到各個部門及個人的利益。當問題嚴重程度高、問題出現(xiàn)原因不明晰的時候,經(jīng)常出現(xiàn)相關(guān)人員相互推諉、都不愿擔(dān)責(zé)的情況。
在開展工作的時候,各方人員很少能抱以精誠合作的態(tài)度,反而是將工作壓力層層轉(zhuǎn)嫁。業(yè)務(wù)實施人員向業(yè)務(wù)維護人員施壓,業(yè)務(wù)維護人員向平臺維護人員施壓。這造成w公司內(nèi)維護人員工作壓力、勞動強度大,但工作成果反而不被認可的現(xiàn)象。
盡管維護工作面臨很多困難,但與U項目類開發(fā)工作相比較,個人更愿意選擇維護工作。原來項目開發(fā)的工作,更多地要求熟悉業(yè)務(wù)通信流程和原有的代碼,對個人編程技能提升鮮有幫助;相比之下,做平臺維護方面的工作,有機會深入學(xué)習(xí)操作系統(tǒng)、 Linux內(nèi)核、存儲、網(wǎng)絡(luò)等方面的知識。經(jīng)過一段時間的維護工作,我心態(tài)上也從抗拒,逐漸變成適應(yīng)與接受。作為初入IT行業(yè)的工作者,多嘗試,多積累不同 產(chǎn)品的開發(fā)經(jīng)驗、不同崗位的工作經(jīng)歷,相信有助于自身的成長和發(fā)展。
出來混,始終是要還的
“出來混,始終是要還的”,工作后接觸的人、發(fā)生的事讓我深深體會到這一點。當前的工作和生活態(tài)度,決定了我們將來的生活狀態(tài)。只有拿出積極的態(tài)度,才可能獲得好的結(jié)果。
很多程序員工作任務(wù)重,加班是家常便飯,容易忽略技術(shù)的積累,技能不能提升,久而久之,就變成流水線上的工人。為了避免(或改變)這種情況,我們可以放眼未來,為自己設(shè)定一個中期目標(比如兩年后某某技術(shù)我要達到什么層次/兩年后我要跳到某某公司),再根據(jù)設(shè)定的目標,作相應(yīng)的技術(shù)積累。
另一方面,一些剛參加工作的程序員同學(xué),過于寄望未知的未來。當他們對公司或工作稍有不滿的時候,解決的方法直接了當:跳槽。沒錯,IT熱潮下再找一份工作并不難,但這并不是解決問題的根本途徑。在跳槽想法萌生的時候,請考慮這些問題:我是否勝任當前工作?與當前工作相關(guān)的知識我是否都理解?從當前工作中我是否已經(jīng)學(xué)不到更多的東西了?我是否達到心儀工作的技能要求?如果以上問題的答案都是“否”,那請暫時放棄跳槽的打算,將當前工作相關(guān)的知識學(xué)好,把底子打扎實。
為避免成為以上兩種人,我經(jīng)常問自己:
今天要學(xué)習(xí)哪些知識?昨天掌握了哪些知識?真正掌握了嗎?
兩年后我要在哪里?要做什么事情?現(xiàn)在的自己是在往這個方向前進嗎?
這是我激勵自己的方法,相信你也有你自己的方法。
-
程序員
+關(guān)注
關(guān)注
4文章
954瀏覽量
30399
發(fā)布評論請先 登錄
潤和軟件穩(wěn)居數(shù)字業(yè)務(wù)類解決方案市場第一名
如何成為一名合格的KaihongOS南向驅(qū)動開發(fā)工程師
如何成為一名合格的KaihongOS北向應(yīng)用開發(fā)工程師
如何成為一名嵌入式軟件工程師?
如何成為一名合格的北向應(yīng)用開發(fā)工程師
達實再度榮獲十大出入口控制品牌第一名
蔚來獲得CACSI車型滿意度和售后服務(wù)滿意度第一名
機械革命發(fā)布CODE AI程序員本
AI編程工具會不會搶程序員飯碗
第五屆長沙·中國1024程序員節(jié)開幕
90后程序員的職業(yè)成長漫談

評論