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