????????又是一年的初夏時節(jié), 天氣變化無常, 時而如爆款特賣急速升溫, 時而滿30減10, 人的心情也如氣溫一般起伏不定.
????????下意識的打開釘釘工作群看看發(fā)生了什么, 此刻的心情總是矛盾的, 看著同事的只言片語試著去理解事情的來龍去脈, 有時偶爾想插上幾句話, 又生怕陷入其中脫不開身, 只讀不回又讓人覺得我對此莫不關心, 全然不顧又讓人忐忑不安, 生怕因為我的原因讓同事陷入麻煩. 這種心理應該是很普遍的現(xiàn)象吧.
????????流行在程序員間的一個很經(jīng)典的笑話是這樣的, 普通人見面的第一句話是問“你吃了嗎”, 程序員見面的第一句話是問“呦, 最近又在寫什么bug”. 這是一種自嘲也反應了一個普遍的現(xiàn)象, bug與程序總是形影不離, bug會導致功能異常, 會影響用戶體驗, 會失去客戶, 甚至會讓人怒砸手機朝群、砸電腦, 造成財產(chǎn)損失.
????????程序員會因為自己開發(fā)的功能而沾沾自喜, 也會因為自己寫的bug而垂頭喪氣, 如果你告訴一個程序員你開發(fā)的功能有bug, 程序員的第一反應是“你的環(huán)境是不是有問題, 你傻逼你會用嗎”. 如果你換一個說法, 你實現(xiàn)的功能跟預期的有點不太一樣, 你能否檢查下, 程序員的第一反應就會是“我操, 有bug”. 同一件事, 不同的說法, 得到的回答截然不同. 不管怎么說, 程序員多少是有些不愿面對bug的, 可是又不得不解決, 因為我們都知道, 不解決的后果會很嚴重.
????????寫了兩年代碼, 發(fā)現(xiàn)墨菲定律也適用于程序開發(fā). 墨菲定律是一種心理學效應, 主要內(nèi)容是: 1, 任何事都沒有表面上看起來那么簡單; 2, 所有的事都會比你預計的時間長; 3, 會出錯的事總會出錯; 4, 如果你擔心某種情況發(fā)生, 它就更有可能發(fā)生.?
????????先說第一項. 當你接手一個功能的時候, 產(chǎn)品經(jīng)理告訴你, 你要做出這個效果, 能這樣那樣就行. 你看著原型圖和流程圖, 對照需求說明, 快速轉(zhuǎn)動著你的大腦, 仿佛一瞬間, 你已經(jīng)實現(xiàn)了這個功能, 它已經(jīng)能在你的大腦中完美運行了. 你雙手枕頭, 身體往椅子上一靠, 輕松寫意的告訴產(chǎn)品經(jīng)理“這個簡單, 明后天就搞定”.?
????????隨后你開始快速著手開發(fā), 在這個過程中, 你突然發(fā)現(xiàn)不妙, 這件事似乎沒有表面上看起來的那么簡單. 如果這樣改, 會不會影響到現(xiàn)有的功能; 如果這樣走, 會不會流程走不通; 如果這樣操作, 會不會產(chǎn)生bug. 突然之間似乎又多了很多功能要開發(fā), 按照排期估計完不成啊, 可是已經(jīng)答應了別人了. 此時又陷入煩躁和自責中無法自拔.?
????????再說第二項. 一個大型項目的開發(fā)不是一蹴而就的, 需要將大版本劃分成小版本, 小版本劃分成大功能, 大功能劃分成小功能, 小功能整理成一步一步的業(yè)務邏輯, 逐步實現(xiàn). 理想的情況下, 項目經(jīng)理將這些功能逐一排期, 開發(fā)按照這個排期完成開發(fā)、測試蔬胯、發(fā)布, 最終完成整個大的項目.?
????????不管做任何事都會遇到困難. 程序開發(fā)更是如此, 由于技術水平、開發(fā)經(jīng)驗博杖、團隊協(xié)作等多方面原因, 完成一個功能的時間總是會超過預期的時間. 為了在規(guī)定時間完成任務, 加班加點不可避免, 通宵熬夜家常便飯, 禿頭脫發(fā)十有八九. 下次排期時多爭取點時間, 時間和生命且過且珍惜.
????????聊聊第三項. 人體的組成台腥、社會的運轉(zhuǎn)氧骤、世界的構成、宇宙的形成看似無比精妙, 實則處處暗藏bug. 程序代碼更是如此, 再優(yōu)秀的架構, 合理的設計, 準確的編碼, 也會產(chǎn)生意想不到的bug.?
????????一個產(chǎn)品的成功不代表沒有缺點, 只不過沒有被放大而已. 以前我對于bug的心態(tài)是害怕, 害怕又要面對突如其來的問題; 現(xiàn)在我對于bug的態(tài)度是厭煩, 怎么又有bug, 真是煩不勝煩. 既然會出錯的事總會出錯, 與其把時間浪費在煩躁不安, 自怨自艾上, 不如嘆息一聲, 靜下心來接受bug,?慢慢排查, 找到根本原因, 逐步解決.
????????最后一項. 每當完成一個功能的時候, 心中都會充滿成就感. 我知道每個程序員都很享受這樣的感覺, 因為他們知道他們的成果不僅可以換來面包, 更能改變世界, 實現(xiàn)自我價值. 雖有夸大其詞之嫌, 但其實一點都不為過.
????????稍等一下, 似乎少了點什么步驟, 哦, 對了, 還要測試. 沒有測試的代碼是危險的,沒有測試的代碼是危險的,沒有測試的代碼是危險的, 重要的事情說三遍. 其實三遍都算少的了. 完成了一項功能, 如果沒有全面測試各種條件, 當你發(fā)現(xiàn)某種條件還沒有測試, 你擔心會不會出問題, 但是你又覺得應該沒有啥問題的時候, 無數(shù)次的事實證明, 問題總是會出現(xiàn)在你沒有測試的那個條件中. 這似乎很諷刺, 但就是這么殘酷, 現(xiàn)實一次次的打臉, 已經(jīng)讓我面紅耳赤了. 下次完成功能的時候, 不要想著自己改變了世界, 先想想自己已紅腫不輕的臉吧.
????????寫著寫著又到了這樣的時刻, 夜里12點, 某年某月的某些天的此時, 我還在急忙的趕進度击狮、修bug、思考未來的人生.?
????????程序開發(fā)永遠不要抱有僥幸心理, 此時未做好的事, 將來會花數(shù)倍的時間來修復,??可是將來的時間夠用嗎?明日復明日益老,明日何其多彪蓬,我生待明日,萬事成磋砣.