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