論細節決定成敗
說明
近期,工作中、工作外、個人、他人均遇到了不少問題,而這些問題的成因均因未注意細節而造成,使我再一次想起那句名言:細節決定成敗。於是我覺得很有必要做一個記錄,用以自警和他警。
事件一:一個數據庫預留字段造成的上線失敗
這個事其實是比較嚴重的一個事,因為涉及到了生產,並嚴重影響甲方公司對我方的評價。
整個經過大概是這樣:
甲方公司給我們公司提出了一個需求,這個需求是六月份開始建立工單的,而實際開發應該是五月份就已經開始。
這個任務不是我負責,因此我並不了解細節詳情,隻是聽經理說並不是很難的一個任務,當然了,也可能隻是他認為不難。
結果,這個任務直到十一月份才正式上線,持續了近半年。而持續了近半年才上線,結果還是以上線失敗告終,目前又被打回重新開發。
這些其實不是最重要的,最重要的問題是上線失敗的原因,是因為新開發的功能使用了原來數據庫的三個預留字段之一。
也不清楚究竟是什麼原因,導致上線後才發現那個預留字段已經有其他業務在使用了,導致最終上線失敗。
僅僅是一個字段是否被使用的問題,未在上線前確認好,導致五個月的成果幾乎功虧一簣,這件事直接造成甲方公司對我方的評價大打折扣,是為細節決定成敗的事件1。
事件二:一個空格耽誤的半天時間
這個問題其實不止遇到過一次,相信也不止我一個人遇到過,那就是開發過程中配置文件裏的空格。
因為這次的項目開發要把sybase數據庫改為oracle數據庫,oracle又不是很好安裝,所以一開始我是沒有在本機安裝oralce的,直接使用公司服務器的oracle開發。
代碼基本開發完畢的時候,我抽空在自己電腦上安裝了oracle,各種測試都沒有問題後,正式使用代碼連接我自己的數據庫。
結果呢,運行過程中始終提示用戶驗證不通過。
我查了用戶名和密碼,怎麼看都是對的,一開始以為還是數據庫服務器哪裏配置有問題,但是各種驗證之後又最終確定數據庫服務器是沒有問題的。
如此頭疼的花了半天時間後,我無言以對的發現,竟然是配置文件中用戶名末尾多了個看不出來的空格,就是這個罪魁禍首,使我幾乎抓狂,又做了若幹的無用功,是為細節決定成敗的事件2。
事件三:一個博客中的細節遺漏導致自己差點懷疑自己
一年多之前,我有寫過activiti自定義流程的係列博客,如今我已經很久沒有再用這個技術了,但是有很多用這個技術的同學還在參考我寫的那些筆記。
但是最近有個同學遇到了一個問題,他按照我說的方法,甚至完全使用我的代碼後,有個環節始終得不到正確結果。
當他問我的時候,我一開始抱著“我怎麼會錯”的、據說是標準程序員心態的心態,堅定的認為一定是他寫的有問題。
然而,當我自己按自己的代碼再來一遍時,竟然得到了和他一樣的結果,那個環節也不正確。
後來我有別的事就暫停了找問題,而那個同學因為必須解決這問題,就一直找了下去。
最終還是他發現其實我寫的沒有問題,方法和代碼都沒有問題,問題在於畫流程圖的時候一些細節沒有注意。
那些畫流程圖的細節我並沒有在博客中說明,導致別人不知道這個細節,連我自己也都忘記,還以為自己寫的有錯誤,是為細節決定成敗的事件3。
具體那篇博客參考https://blog.csdn.net/tuzongxun/article/details/51154101
事件四:一個掃描路徑定義耽誤的幾個人的幾個小時
這次項目spring+struts2+mybatis重構為springboot+jpa,由於過往不規範的開發經驗,導致寫的代碼問題很過,也不規範。
在確定整體業務流程正確之後,我們進行了一輪重構,主要是根據阿裏新發布的java開發規範進行一些優化。
在這個優化過程中,我修改了一個數據庫對應的實體類的包名,然後啟動項目之後就無論如何也掃描不到那些實體類了。
然後我查看了springboot項目的目錄結構,所有包都位於啟動類同級或者同級的下級,按理說默認都會掃描到才對。
然後又查看了各個實體類的注解,該有的和jpa對應的注解也都不少。
然後又看了springboot的啟動類,也都配置了包掃描路徑,確定沒有問題。
於是我實在找不到問題出在哪裏,遂請教了兩個對springboot更熟悉的同事,結果他們幫忙也找了很久,很久之後依然沒有解決問題。
就這樣,最終是另一個一期開發的同事找出了問題,原來是他寫的某個切換數據源的方法中定義了實體類掃描路徑,導致更換了包名之後的包名和他之前那個定義的字符串不匹配。
正常來說,這種字符串不應該是寫在方法中的,不規範的細節,導致幾個人幾個小時的流失,並且最終發現都是無用功,是為細節決定成敗事件4。
事件五:一個包名寫錯導致的詭異問題
這次的項目大重構,分為三個子模塊,由於每個模塊負責人不一樣,又沒有統一的具體規範要求,導致風格迥異。
其中一個同事創建的springboot項目就比較個性,首先是他的springboot項目看起來是maven創建,但是別人拿過來放入eclipse後,均需要先轉成maven項目才能成為真正的maven項目。
其次就是在eclipse中正常運行,結果在打成jar包時,jar包裏什麼配置文件都沒有,導致jar包無法以預期的結果運行。
後來找來公司的高手一番查找後,發現打包命令沒有問題,各種配置也正常。
沒把配置文件打進jar包的原因,是因為maven配置文件默認目錄src/main/resources,他寫成了src/main/resouces,單詞resources中少了一個r。
這很顯然是手動創建項目目錄,導致手誤,少寫了字符,先不說這種方式如何,單單就事論事,一個字符缺失導致這樣的詭異問題,是為細節決定成敗事件5。
以上事件,除開第一個之外,其他看起來似乎也都不算太大的事,但是這樣的事頻繁的發生,就不得不引起重視。
細節決定成敗,態度決定人生,希望以此自警和他警!
最後更新:2017-11-14 12:04:01