1. 程式人生 > >一次“背鍋”和“解鍋”後的反思

一次“背鍋”和“解鍋”後的反思

  中秋過的真快,還沒體會到就到最後一天了。今天在圖書館,突然想寫篇與技術無關的,但是我們工作中經常發生的事情。本來不想寫這種型別的文章,怕這種文章降低自己形象顯得太low。但是一來想鍛鍊下自己的文筆敘事能力,越怕這怕那越不敢動筆,越不動筆越沒長進,總要開個頭來個正向刺激迴圈;二來相比技術型別的文章,故事型別的文章應該更受大家待見觀看;三來這種工作中常見的“甩鍋”事件值得大家探討評論一下,碰撞的火花下交換解決思路,或許以後再碰到類似的事情,能夠更迅速完美的解決。

  故事是這樣的,昨天週六,突然有客戶反饋了一個問題過來,說公司產品有個業務操作展示錯亂了,下一步操作無法執行。問題很快反饋到我們研發大群來了,由於前一天剛好產品迭代了一個版本,負責人是後端的一位小Leader,於是這個問題先由後端的這個同事接了。這個同事看了下介面返回資料,沒看出什麼問題,馬上判定說是前端這邊的問題,懷疑是前端這邊進行了邏輯修改,要前端去定位原因。

  由於前端部門老大回老家了,這個任務就落到我頭上了。客戶發現的問題,還是這麼明顯的操作,我們竟然沒有自查出來,測試也沒測出來,那問題就嚴重了。我也不敢怠慢,顧不得去玩了,趕緊回家連上公司電腦查原因。先查這塊邏輯最近git記錄,沒有發現明顯的更改邏輯;然後又切換了四個月前的一個程式碼分支看效果,發現效果和如今一樣。因此我判斷,應該不是前端這邊的問題,是後端返回的資料出問題了。但是是哪塊的資料出問題了,由於這塊業務比較複雜,程式碼很多,我一時也找不出來。於是先把我的判斷觀點拋到群裡,建議後端同事去自查下程式碼,最近有沒有對這塊邏輯進行更改。

  這個後端同事真是對自己太自信了,說後端返回的資料沒有看出什麼問題,絕逼是前端的問題,讓前端去自查程式碼定位原因!尼瑪,這話我有點不愛聽了,這是合作互贏的態度嗎?但是由於我一時拿不出有力的證據來反駁,只好不和他繼續討論了,先妥協了去看程式碼。由於他有我們前端程式碼的許可權,然後受我那個判斷觀點啟發,於是他切了前端五個月前的分支程式碼來看效果。其實他在進行這步操作的時候,我也在進行這個操作,發現五個月前的程式碼竟然展示正常!

這什麼操作?我一時沒整明白了!

  這時他已經把他的“重大發現”趕緊發群裡了,四個月前和今天的程式碼顯示不正常,而五個月前的程式碼顯示正常,是不是表示前端在四個月前就已經制造出了這個bug,這麼長的過程前端同事都沒發現,測試部門同事也沒發現!

  這個鍋就大了,難道我們前端都是乾飯的?我趕緊冷靜了一下,梳理了下邏輯,回憶了下四個月前的那次版本迭代,是在那個版本中對這個邏輯進行了大修改和功能增加。那個功能剛好是我負責更改的,因此印象還是很深刻。我對自己寫的東西還是很有信心的,另外我對當時負責測試的那個同事的業務能力也很有信心。這麼明顯的bug,首先我不可能自查不出來;其次就算我沒自查出來,不可能測試同事也沒測出來;再次退一萬步講,就算測試同事當時沒有測出來,不可能四五個月的時間過去了,產品、開發、測試、運營還有客戶這麼頻繁的使用還沒發現這個問題。

  但是那位後端同事,就抓住這個點不放了,堅持質疑為什麼五個月前的程式碼可以正常顯示和操作,而現在卻不正常了?我一時說不出個所以然來,只好提議後端能不能部署一個四個月前的分支測試環境,讓我對比下資料,快速定位問題。後端同事聽不進去,堅持是前端的問題,說後端返回的資料看起來沒有問題,沒必要部署以前的後端程式碼,這個問題只需要前端去檢視自己的程式碼,就能解決。

  我有點生氣了,大家都意識到問題的嚴重性了,都想快速把問題解決掉。但是你這麼自信,這麼堅持自己,是國共合作團結一心共同抗日該有的態度麼?既然說服不了他,只能我妥協了,去看程式碼。網路突然卡起來了,然後自己筆記本螢幕有點小,遠端看程式碼看的有點眼花,乾脆直接去公司了。還是公司的雙螢幕好,馬上就看出返回的資料中有個地方異常了,我手動改了下,然後效果就顯示正常了。應該就是這個原因了,我趕緊截圖單獨發給這個後端同事,讓他去查下這個資料為什麼異常了。

  但是這個同事真的真的是對自己的判斷太自信了,不認同我這個說法,堅持為什麼五個月前的程式碼可以正常顯示,為什麼現在卻不正常了,硬抓住這個點不放,要我去看前端程式碼解決這個問題。這感覺就是有點頑固了,平時感覺這小夥挺好打交道的,怎麼突然這樣呢?我只好說,那我們同時進行,我去查我這邊的程式碼,你去查你那邊的程式碼,等下我會給你答覆舊版本正常新版本異常的問題。他回了句:不太可能是後端問題,但是我可以去看下。我去,你對自己寫的功能有自信,難道我對自己寫的功能就沒自信了嗎?過了一會,他說他也在來公司的路上了。

  我決定要拿出有力的答覆來狠狠的打他的臉,開始認真過一遍程式碼再梳理些已經被遺忘的邏輯。程式碼太多了,看得我頭暈腦脹,不過好歹整理出思路了,但是一時不知道怎麼組織語言表達出來。然後我突然驚喜的發現了自己電腦裡儲存了一條以前的舊資料,開啟一看,果然印證了我之前的猜測,是新資料異常造成了這個現象。這時候他也來公司了,我叫他趕緊過來看,一時不知道怎麼形象準確的表達,所以我請他看我的操作。但是他一直在那說為什麼舊版本正常,而新版本不正常,說了好幾次。我生氣了,沉了臉說:你能不能先看下我這個操作。他這才停下來看我如何操作。沒想到我在操作的過程中,突然知道怎麼組織話語,把新舊版本不同表現的原因說出來了。

  他這才稍微認可我的說法,又說,為什麼如今你們對我們的資料格式這麼依賴。我說,你看看這個效果圖,你的資料有返回我們馬上就能用的資料嗎?新加的功能讓我不得不根據目前的資料格式進行遍歷提取我們需要的資料。他又說,這是當初你們老大和我定下來的資料格式..... 然後他就回他座位找問題去了。 等了好一陣子,我去問他,找到原因了嗎?他說已經改好通知運維發預釋出了,一行程式碼引發的血案。

  我這才鬆了一口氣,這個問題終於解決了。但是,既然已經改好了怎麼不通知我一下,害我在那等那麼久,那沒什麼事我先回家了.......

  可能是當時沒反應過來,回來後我才在反思今天發生的這個事。這個後端同事今天表現出來的自信和質疑,讓我一度很生氣,但是在找到最後的原因後,我為什麼不去打擊一下他那囂張的氣焰,為什麼我最後的表現竟然是”鬆了一口氣“,瑪尼這不是有點犯賤嗎?為什麼明明是我這邊的道理,怎麼感覺好像一直像是我這邊的問題,怎麼一直是我這邊在妥協?如果他不要那麼自負,早一點去自查程式碼,這個問題不是很快就解決了,何須我這邊去忙活半天。我後面為什麼不去質疑他這麼重要的功能是能隨便改動的嗎?程式碼的嚴謹性呢?後端那邊經常說程式碼審查程式碼審查,這是怎麼審查的?程式碼改動了,沒有去考慮相關的功能影響嗎?沒有去通知相關的人去進行測試? ......

  以上的質疑算是我自己一時的意淫,真要去做了以後大家都這麼幹,那工作氛圍得成什麼樣?再說人哪有不犯錯的,以我目前這表達能力,萬一哪次犯錯了被人揪住小辮子那不得給踩死。但是該有的說法是不是還得說出來,一來大家都是為了公事,為了把事情做好,沒有私人恩怨;二來不想自己在別人的印象中是一個軟蛋,可以隨便捏拿,得有一些菱角,大家和平共處,一起把事情做好。憑心而論,我們公司研發都還是比較單純的,很少有因為推脫工作責任而互相推諉互相攻擊的,大家互相協作互相配合,工作氛圍還是不錯的。但是我身邊的一些同學朋友的公司,裡面的工作氛圍真是不可描述啊,我有時聽了他們的描述,感覺這甩鍋真是甩出了新高度,某些人身上自帶攻擊性,說話句句帶刺,心理有點不正常啊,這種環境下真不知道這些小夥是怎麼堅持下來的!

  總結一下就是:工作中,我首先表示我的和平處理態度,互相尊重,互相協作;但是如果你一味的甩鍋,和打壓我,那我也要亮出我的獠牙來。另外這個表達能力真得好好的提升下,一段準確形象的表達可以節省多少口舌;再厲害一點的表達能力,應該是既能把意思表達清楚,又能使人心悅誠服的接受。

  還有什麼呢?