累并快樂著——一個(gè)開發(fā)者的2016年總結(jié)
日月如梭,還有10天左右2017年就要和我們say hello了。子曰:“吾十有五,而志于學(xué),三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲,不逾矩。”在孔夫子的眼里,“三十而立”是指他在這個(gè)時(shí)候懂得了禮,言行都很得當(dāng);而在現(xiàn)代社會,“三十而立”更多的是指一個(gè)人成家立業(yè),有了穩(wěn)定的工作,有了自己的家庭。這一年,活潑可愛的小公主降臨到了我們這個(gè)家庭里、屬于我們一家三口的新房已裝修完畢待入住、家庭和事業(yè)的努力兼顧,這么想來,我貌似達(dá)到了“三十而立”的標(biāo)準(zhǔn)。
在自己的專欄里,借用“三十而立”這個(gè)標(biāo)準(zhǔn),我想用心回顧自己這一年的收獲與感悟。
第一部分:工作
在這一年里,因?yàn)榧依锾矶。译y免會花一些時(shí)間在家庭上,因此放在工作上的時(shí)間沒有2015年多,這也直接導(dǎo)致失去了爭奪部門年度之星的機(jī)會。不過,凡事有得必有失,看到家里的小公主那么可愛,在工作上失去一點(diǎn)榮譽(yù)也是值得的。
花在工作上的時(shí)間少了,但并不表示我沒有干多少活,也不表示工作的質(zhì)量降低了。我大致統(tǒng)計(jì)了一下,我在2016年一共開發(fā)了大大小小將近20個(gè)版本,有全新開發(fā)的,也有在已有版本之上修改的。由于部門面臨產(chǎn)品的轉(zhuǎn)型,因此有很多人員被抽調(diào)去做一些新產(chǎn)品去了,維護(hù)之前產(chǎn)品的人手實(shí)際上是很緊張的。在這種情況下,我主動(dòng)承擔(dān)起了其他幾位同事所負(fù)責(zé)的版本的開發(fā),并且很快上手,保質(zhì)保量地完成了任務(wù)。這塊的總體表現(xiàn),我對自己還是很滿意的。
下面,重點(diǎn)想和大家共享下今年開發(fā)工作中的幾個(gè)心得:
首先,不要太過于迷信前人的代碼
很多時(shí)候,我們開發(fā)一個(gè)產(chǎn)品的時(shí)候,并不是從零開始地編寫代碼,而是在前人的代碼的基礎(chǔ)上進(jìn)行修改,也就是有了一個(gè)參照。如果自己所參照的代碼已經(jīng)商用了,也就是已經(jīng)獲得了市場上的成功,那么,我們就更加有理由相信這些代碼是完全正確的了。這也就會導(dǎo)致很多人(包括我)會將代碼拿過來直接用,而不考慮代碼的邏輯是否正確。
例如,我今年開發(fā)了一個(gè)版本,其中涉及到向另一個(gè)模塊發(fā)消息的功能,而這個(gè)功能的代碼是之前的版本就有了的,這次我是直接拿來就用。但是,當(dāng)所有的代碼都編寫好并開始集成測試之后,我發(fā)現(xiàn)不管怎么設(shè)置參數(shù),發(fā)消息的地方始終有問題。經(jīng)過不斷地調(diào)試,并認(rèn)真閱讀每一行代碼,我才發(fā)現(xiàn)之前的代碼所調(diào)用的發(fā)消息函數(shù)是錯(cuò)誤的??赡苁侵皩@個(gè)功能沒有進(jìn)行嚴(yán)格的測試,所以沒發(fā)現(xiàn)這個(gè)問題。修改代碼之后,發(fā)消息的功能才正常。
因此,對于一個(gè)合格的程序員來說,他們不會盲目地對代碼采取“拿來主義”的政策,不會太過于迷信前人的代碼(即使這些代碼是大牛寫的),而是會仔細(xì)閱讀代碼,看代碼在邏輯及功能上是否有問題,是否能夠滿足自己的需求。所謂的“盡信書不如無書”就是這個(gè)道理。
其次,不要盲目相信架構(gòu)師(需求工程師)的需求
在很多軟件公司,用戶需求是由一批被稱之為架構(gòu)師或需求工程師的人寫的,而程序員只需要實(shí)現(xiàn)這些功能即可。這樣做的好處是開發(fā)人員只需要專心編碼即可,免去了大量和客戶打交道的時(shí)間,提高了開發(fā)效率;當(dāng)然,這樣做的壞處也是很明顯的,那就是開發(fā)人員并不了解客戶的真正需求,而一味地按照(架構(gòu)師或需求工程師)對需求的了解來做,就可能和客戶的需求脫節(jié)。
例如,今年上半年我新開發(fā)了一個(gè)版本,用于和客戶現(xiàn)有的系統(tǒng)進(jìn)行對接。在開發(fā)之前,需求工程師拿出了一份需求文檔,讓我按照上面的需求條目來開發(fā),并且說客戶要得很急。在評審需求的時(shí)候,我明顯發(fā)現(xiàn)協(xié)議中有幾個(gè)字段的值有問題,并當(dāng)場提了出來。需求工程師說這是按照客戶的要求寫的需求,沒有問題,讓我完全按照需求文檔來做。
開發(fā)得倒是很快,但和客戶系統(tǒng)調(diào)試花了很多的時(shí)間,原因就是我認(rèn)為有問題的字段真的是有問題,并非需求文檔所描述的那樣。最后,通過臨時(shí)修改了幾個(gè)版本,終于對接成功了。
對于一個(gè)有責(zé)任感的程序員來說,他們不會盲目地相信需求描述中的所有條目,而是會根據(jù)自己的經(jīng)驗(yàn)、常識、原有程序功能等提出一些合理的實(shí)現(xiàn)方案,最終開發(fā)出滿足客戶需求的產(chǎn)品。
最后,凡事盡自己的最大努力,對于結(jié)果不要太過于苛求
在工作中,我們所能夠把控的實(shí)際上是很小的部分,大部分的環(huán)節(jié)是我們無法把控的。具體而言,作為一位開發(fā)人員,我們只能夠確保程序版本的質(zhì)量,讓代碼中的bug盡量少,但是我們無法控制產(chǎn)品規(guī)劃、需求、現(xiàn)場部署、版本升級等很多環(huán)節(jié)。也就是說,我們要盡最大的努力來開發(fā)產(chǎn)品,但是對于最終的結(jié)果就只能抱著“盡人事,聽天命”的態(tài)度。
例如,今年我通宵支持了好幾個(gè)局點(diǎn)的版本升級及系統(tǒng)割接。在升級或割接之前,我們都在測試環(huán)境上進(jìn)行了嚴(yán)格的測試驗(yàn)證,并且為現(xiàn)場的操作人員提供了詳盡的操作流程文檔,只要他們按照文檔的描述來操作,就不會出現(xiàn)問題。但是,“理想很豐滿,現(xiàn)實(shí)很骨感”,現(xiàn)場人員總會在某些步驟出現(xiàn)操作上的錯(cuò)誤,從而引發(fā)一連串的問題。這個(gè)時(shí)候,我們就要通過各種方式指導(dǎo)他們?nèi)绾涡迯?fù)已經(jīng)出現(xiàn)的問題。當(dāng)現(xiàn)場操作出問題的時(shí)候,我總是在心里默默地想著:“要是我來操作,肯定不會出現(xiàn)問題。”但是,現(xiàn)實(shí)就是這樣,我們也不能對他人要求太高,不要對結(jié)果太過于苛求。
BTW,雖然我在某一個(gè)月里連續(xù)通宵支持了好幾次割接,也開發(fā)了好幾個(gè)版本,但當(dāng)月仍然沒有被評為優(yōu)秀員工,而做的事情比我少,沒我做的事重要的人卻被評為了優(yōu)秀員工。在這種情況下,雖然有點(diǎn)藍(lán)瘦,香菇,我也只能對自己說“呵呵”了,這也正說明了我們做事情要盡最大的努力,并做最壞的打算。當(dāng)然,和大家一樣,還是渴望以后自己做的事情能得到部門的認(rèn)可,這是我們每個(gè)人追求的價(jià)值認(rèn)可。
第二部分 有關(guān)學(xué)習(xí)
今年雖然在工作上和家庭中的事情都比較多,但我還是利用空余時(shí)間閱讀了數(shù)十本書?,F(xiàn)在我讀書的方式有三種:第一種,讀傳統(tǒng)的紙質(zhì)書;第二種,讀在kindle上買的書;第三種,在羅輯思維的得到APP上付費(fèi)閱讀。大多數(shù)的書都是我在上下班的地鐵上讀完的。
讀書的重要性我就不說了,讀書的方法也因人而異,在這里,我向大家推薦5本個(gè)人覺得讀后很有收獲的書。
第一本:《智能時(shí)代》
這本書的作者是大名鼎鼎的吳軍老師,這也是他繼《數(shù)學(xué)之美》、《浪潮之巔》、《文明之光》、《大學(xué)之路》和《硅谷之謎》之后的第六本書,全書依然延續(xù)了他通俗流暢的寫作風(fēng)格,將大數(shù)據(jù)和智能革命的浪潮清晰地展現(xiàn)在了讀者的面前,讀后讓人熱血澎湃。
不管你學(xué)習(xí)的是什么專業(yè),也不管你是否準(zhǔn)備創(chuàng)業(yè),我都推薦你仔細(xì)閱讀一下這本書。
第二本:《浪潮之巔》(第三版)
這本書的作者仍然是吳軍老師。自從《浪潮之巔》第一版于2011年出版之后,深受廣大讀者,尤其是IT從業(yè)者的喜愛,我也是通過此書了解到吳軍老師的。鑒于IT行業(yè)的快速變化,吳軍老師每隔兩到三年就會對全書的內(nèi)容進(jìn)行更新,以適應(yīng)IT行業(yè)的現(xiàn)狀,今年出了第三版。
吳軍老師就像是一個(gè)文字“魔術(shù)師”,總是能夠把一個(gè)問題或者是一個(gè)事情用他獨(dú)有的方式講述清楚,讓即使是非IT行業(yè)的讀者也能夠從閱讀中收益。在敘事的過程中,吳軍老師也會穿插一些小故事或者是個(gè)人的一些親身經(jīng)歷,讓讀者閱讀起來津津有味,絲毫不會有閱讀很多IT類或歷史類書籍所帶來的厭倦感。
我寫了一篇有關(guān)本書的書評《To be or not to be–讀<浪潮之巔>第三版有感》,大家可以閱讀參考。
第三本:《小島經(jīng)濟(jì)學(xué)》
這本書是一本有關(guān)經(jīng)濟(jì)學(xué)的通俗讀物,是羅輯思維推薦的,據(jù)說是下至九歲的兒童,上至七八十歲的老人都能夠讀懂。我讀后,感覺寫得確實(shí)通俗易懂,通過本書也能夠看出現(xiàn)在全球出現(xiàn)各種各樣的經(jīng)濟(jì)問題的原因。
如果大家不想閱讀像《經(jīng)濟(jì)學(xué)原理》那樣的大部頭書籍,本書就是一個(gè)不錯(cuò)的替代品。
第四本:《人類簡史》
在網(wǎng)上,有人稱這本書為“奇書”,作者是牛津大學(xué)的歷史學(xué)博士。在這本書中,作者按照人類發(fā)展的時(shí)間順序,將整個(gè)人類的文明進(jìn)程以風(fēng)趣幽默的方式展現(xiàn)了出來,讀后讓人感慨萬千。
人類并不是什么很神奇的物種,那么他們?yōu)槭裁磿l(fā)展到現(xiàn)在而成為了地球的主宰呢?本書給出了答案。
第五本:《非洲三萬里》
這本書是我在kindle上閱讀的,它是畢淑敏老師根據(jù)她在非洲的游記而寫成的,全書將非洲的很多具有代表性的景點(diǎn)、建筑、人物、歷史事件以生動(dòng)活潑的語言描述了出來。本書的主要篇幅雖然在描述作者的所見所聞,但我認(rèn)為重點(diǎn)還是在展現(xiàn)作者的人文關(guān)懷及對人生的思考。
在當(dāng)今這樣一個(gè)浮躁的社會,多讀讀像《非洲三萬里》這類好書,對于安撫內(nèi)心、提升個(gè)人修養(yǎng)很有好處。
第三部分 有關(guān)家庭
如我前面所說的,今年我們家最大的變化就是女兒的降臨。古語云:“十年修得同船渡,百年修得共枕眠”,那么,也不知道是哪輩子或哪幾輩子修來的福分,讓我成了女兒的父親。
當(dāng)然,升級之后,也意味著我這個(gè)做父親的多了一份責(zé)任,多了一絲牽掛。當(dāng)女兒哭鬧或生病的時(shí)候,我也經(jīng)常會坐立不安。以前,我會花相當(dāng)多的時(shí)間在工作上,但現(xiàn)在,每到下班時(shí)間,我自然地就會想到該回家?guī)蘖?,雖然很多時(shí)候仍然要加班,仍然要在大部分時(shí)間里一周工作六天。
小寶貝馬上就九個(gè)月了,來一張可愛的照片吧。
另外,通過這四五年的奮斗,我們一家三口終于擁有了一套屬于自己的房子,目前已裝修好,明年即可搬入。雖然在二三線城市工作的工資遠(yuǎn)沒有一線城市高,但還是有一個(gè)優(yōu)勢就是房價(jià)相對來說比較便宜。對于在小地方工作的人來說,這也算是“失之東隅,收之桑榆”吧。
寫在最后
相比2015年,2016年的我還是之前的我,工作積極、主動(dòng)、認(rèn)真負(fù)責(zé),且不乏靈活性和創(chuàng)造性;而不同的是,今年的我已步入“三十而立”的年齡,我已成為了一位可愛的小公主的父親,站在了新的人生的起點(diǎn)上。
對于即將到來的2017年,我想奉上自己的三個(gè)愿望:第一,希望自己的家人身體健康、平平安安;第二,希望自己及家人工作順利、如意吉祥;第三,希望每位正在奮斗中的人都能夠?qū)崿F(xiàn)自己的理想!
【本文是51CTO專欄作者周兆熊的原創(chuàng)文章,作者微信公眾號:周氏邏輯(logiczhou)】