顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2023-07-28 17:42:04
看板 Soft_Job
作者 pokkys (人很好那一個)
標題 Re: [心得] 我在科技業遇到的鬼故事之一
時間 Thu Jul 27 23:57:51 2023


大家好我是原po,大家討論那的激烈,我覺得我需要補充一下。

我認為有一個癥結點需要解釋一下,雖然有可能解釋完結果可能更糟 XD

因為中間有一段,完全是我的臆測,我也沒有絕對證據去證實我的論點。

如果各位要反駁我,我也完全接受。






我主要是要講一下,為何我會覺得B應該被火?

這個流程我最一開始以為的版本(1)是:
A mark 無法複製 -> B 確認無法複製 -> commit -> QA無法複製 -> release

但是第一次bug review meeting後,因為B說的話,我跟QA的認知是版本(2):
A mark 無法複製 -> B 確認問題還在 -> commit -> QA無法複製 -> release

QA跑去跟老闆告狀後,老闆把我跟B主管找過去,說如果調查是故意炸客戶,要火。

我跟B主管把B叫過來調查這件事,B這時給的是版本(3):
A mark 無法複製 -> B 沒有確認過 -> commit -> QA 無法複製 -> release

所以這時,B承認他沒有確認過。因為我們公司的流程,各自有各自的UT。

必須通過了UT,才會到QA那邊去打IT。但是B承認他沒有過UT就commit。

所以故事最終B被處罰是因為他手上的feature沒有經過自己UT測試就commit。




我對版本(3)有一些懷疑,由於過程中,我一直反覆問他兩個關鍵問題。

所以對話次序上我沒有100%肯定我記憶中的順序,敬請原諒。



我問B:你寫always,表示你一次也沒有pass過UT,為何你會commit?
B說:我只測過一次,A mark無法複製我就相信他,然後commit。
我問B:你只測過一次怎麼會是always。
B說:測一次中一次,我就寫always

我問B:你相信他無法複製,為什麼後來會說你早就知道會fail,你是故意commit?
B說:他寫無法複製,那肯定問題還在啊!
我說:這不一定吧?
B主管說:你是想說他無法複製肯定沒有解,所以想提醒大家對不對?


大概是上面這串對話,我反覆不斷用不同的方式問了好幾遍。

因為這過程中,B自己坦承吃下了兩個低級錯誤:
1. 只試一次就說是always
2. 沒有通過feature UT就commit code

但是我的理解是B這個資深工程師,不太可能犯這兩個低級錯誤。

我內心的推測是:他最初的說法其實才是對的。

也就是:『他反覆測了好幾次,都過不了(always),於是發bug給A。

A mark 無法複製後,他也拿UT起來測試,結果fail了。

後面就是如他所說,他發現這問題根本沒有解,一氣之下commit上去要炸A。』


最後老闆把我跟B主管叫過去說要處理B的時候,B主管跟B先套過招。

他們發現承認故意後果很嚴重,所以他們有有兩種選擇:

1. 不承認測過
2. 當時有測過結果是pass就commit了。

但是處理的當下,因為還不知道root cause,所有人都認為是always發生,包含B+客戶

所以要騙說當下有測過,結果是pass的說法很可能會被打臉。

於是他們選擇承認低級錯誤,規避『故意』這件事情。

另外他說他只測一次,同樣也可能是要規避always發生的bug,卻沒有複驗這件事。


我覺得他們的說法沒有說服我,但是我也真的沒有證據,所以最後選擇大家下台階。

另外當下我忙著要去處理客戶資料損毀的問題,沒有心思去深究這件事情。


另外我的部分,我前面有說我去處理客戶資料救援有成功。

客戶部分也沒有再追究這件事,最後整個產品是有順利賣出去。

所以我的部分,其實公司是沒有特別『處理』我。 但是升遷當然就不用想了。


以上跟大家報告一下

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.74.78 (臺灣)
※ 作者: pokkys 2023-07-27 23:57:51
※ 文章代碼(AID): #1amfG1KE (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1690473473.A.50E.html
abc21086999: Hi,鬼1F 07/28 00:02
superpandal: 供詞都可以被他們喬 你也太軟 我以前在ptt的回覆也都2F 07/28 00:05
wmtsung: 我覺得是你想太多了,如果B真的很懂也重複測過,怎麼後3F 07/28 00:06
wmtsung: 來無法在B的環境復現?後來你們才發現是因為LAGG的問題
wmtsung: ?
superpandal: 這樣 以為不得罪人 但後來就釋懷了6F 07/28 00:06
wmtsung: B很神的前提是他知道客戶和他的環境一樣有LAGG而你們沒7F 07/28 00:07
wmtsung: 有,這前提你覺得有可能嗎?
superpandal: wmt又在說什麼...9F 07/28 00:08
wmtsung: 應該說B故意炸的前提*10F 07/28 00:08
pokkys: 其實我們有發現B team工程師不一定會更新test code的習慣11F 07/28 00:08
pokkys: 他們只關注自己開發的地方,test code沒有很頻繁去update
pokkys: 但是B的環境是不是一直都是有問題的LAGG,我也沒有證據。
pokkys: 所以B主管也有說LAGG test code修正了,這樣大家都解套。
sirlers: 你不如說說為什麼A在被你review過issue確認可以close以15F 07/28 00:10
sirlers: 後還被懲處吧 你有坦住你下面的RD嗎? 尤其他還是你身為P
sirlers: L卻沒把客戶需求釐清的第一受害者
sirlers: 檢討B的紀律問題跟你們project出bug真的有關?
pokkys: A的部分,我有極力去擔,但是我承認我沒有手段可以扛住。19F 07/28 00:11
pokkys: 所以A走掉,也是我戰力損失。
pokkys: B的問題是老闆認為故意的話要火
pokkys: 但是feature owner沒確認就commit,的確是有責任的。
sirlers: 所以B不是被認定這個事故該負責的人嘛23F 07/28 00:13
ko27tye: 你用一大段臆測指控B和其主管,A和QA都你的人你好意思24F 07/28 00:13
pokkys: B被處理不是自爆的部分,而是沒有確認這件事。25F 07/28 00:14
wmtsung: 如果關閉bug有經過B同意,B確實有責任,但要說B是故意炸26F 07/28 00:14
wmtsung: 客戶我覺得太腦補了點
superpandal: 所以你沒保住A但保了B?...28F 07/28 00:14
labbat: p大和s大你們兩個說的feature owner是不同人唄29F 07/28 00:14
pokkys: 對,所以我自己腦補的部分我一直沒說。30F 07/28 00:15
pokkys: 但是我沒有因為腦補結果去處理B
sirlers: 所以B鬼的點在哪? 沒有紀律自業自得 但你是不是該學學B32F 07/28 00:15
sirlers: 主管怎麼維護自己的戰力?
superpandal: B故意炸A 客戶只是被牽連34F 07/28 00:15
wmtsung: 你沒說但你一直在提醒大家B是故意的啊XD35F 07/28 00:16
pokkys: 因為他自己說他是故意的啊XD36F 07/28 00:16
CoNsTaR: 原來還花這麼多無謂時間在究責37F 07/28 00:16
pokkys: B主管真的很強,我沒話說。38F 07/28 00:16
wmtsung: 但實務上你覺得有可能嗎?39F 07/28 00:16
wmtsung: 你用他的嘴砲來這邊講,看看多少人認為B故意炸客戶…
pokkys: 我是認為實務上,B不會犯這麼低級的錯誤,如此而已。41F 07/28 00:17
CoNsTaR: 到底是去當國中生搞小團體的還是去工作解決問題的啊42F 07/28 00:17
superpandal: 就有供詞 但B主管想保B翻供43F 07/28 00:18
wmtsung: 低級的錯誤才是最容易犯的好嗎…因為隨手就可以成功44F 07/28 00:18
pokkys: 我其實只能去評價A,B的部分我其實沒有權限去作任何事。45F 07/28 00:18
pokkys: wmtsung你要這樣理解也是合理,這也就是為何我沒有去深究
superpandal: 誰說B炸客戶... 他要炸人是真的 客戶只是工具 講第二47F 07/28 00:19
superpandal: 次了
pokkys: 有可能就只是一連串的低級錯誤加上嘴賤而已。49F 07/28 00:19
superpandal: 連帶大家雞飛狗跳而已50F 07/28 00:20
q253upng: 不覺得你們的module會不會造成資料毀損全公司只有你們t51F 07/28 00:20
q253upng: eam最懂嗎?是期待別人幫你測出問題,最好還能幫忙找到
q253upng: root cause?最後再來全力檢討問題的問題,下次B換成不
q253upng: 會亂自爆的C你們還不是要繼續炸?
superpandal: 你看你又來了 保錯了人不說 現在還要替別人自圓其說55F 07/28 00:21
pokkys: 所以A被處理是因為炸資料,B被處理是因為他沒UT。56F 07/28 00:22
sirlers: 奉勸原po別再糾結B心態如何 A被提報出bug時你身為最初埋57F 07/28 00:22
sirlers: 炸彈的人是否出來坦坦承這是你的錯誤導致的?
pokkys: 錯誤我們一直都有承認,最後也有受到處罰,這部份沒問題。59F 07/28 00:23
pokkys: 我覺得分兩個路線,一個是寫出bug,一個是沒過UT。
sirlers: 重點在A沒有做錯61F 07/28 00:24
wmtsung: 而且B只測過一次是在事後你問B才知道,那A當初到底怎麼62F 07/28 00:24
wmtsung: 和B討論這個bug也是很神…我自己測不出來一定是叫發bug
wmtsung: 再重測看看
Axcic: 只測一次寫always 被火剛好65F 07/28 00:25
pokkys: 前面有提到B是拒絕幫忙,他認為bug report足夠。66F 07/28 00:25
wmtsung: 如果當初B對A說謊導致後續,你拿這個來打B還比較實在67F 07/28 00:25
pokkys: A屬於RD寫出bug,我認為不應該去重責,所以我只認定1/1068F 07/28 00:26
wmtsung: 那在B拒絕時你應該先找B的主管啊69F 07/28 00:26
s06yji3: 一氣之下就炸客戶無法接受。70F 07/28 00:27
pokkys: B的主管是認為我們要自己複製+QA幫忙,他的說法其實也合理71F 07/28 00:27
pokkys: 畢竟我手上有QA, B主管沒有。
sirlers: 你認為他為什麼會寫出沒考慮到LAGG的bug? 是不是你提供73F 07/28 00:28
sirlers: 他的spec跟測項沒有? 那這bug是誰的責任?
labbat: 兩邊都在推託串資源義務,彷彿在當兵敵不動我不動75F 07/28 00:29
pokkys: 我上面有提到,其實是我應該要負責讓QA有LAGG項目。76F 07/28 00:29
sirlers: 好 那麼A的1/10是不是該算你這?77F 07/28 00:29
q253upng: 是我也會贊成處裡B啦,但這只是出氣打不長眼,真正要改78F 07/28 00:30
q253upng: 善流程還是要從A和QA明明有收到資料毀損的issue明明什
q253upng: 麼都沒動還不喊停
pokkys: A的code沒有考慮到packet order問題,LAGG只是其中一個81F 07/28 00:31
pokkys: 我跟A都有能力把這bug攔下來,但是我們兩個都miss了。
wmtsung: 那說實在的,B也只是來支援,你們部門當時都無法復現也83F 07/28 00:32
wmtsung: 只能自己擔,應該說客戶炸了之後你們還是可以解決,那只
wmtsung: 是在當下你們輕忽沒有全力去找原因而已
labbat: 我看了五天下來,完全不知道order有關86F 07/28 00:32
pokkys: 技術細節我沒有提太多,LAGG環境下,packet會out of order87F 07/28 00:32
pokkys: B不是來支援,B owner一個feature,A才是支援他。
pokkys: 我owne application, 所以B是支援我。
sirlers: ok 那麼issue close時A提供的解方也還是沒有涵蓋到這 你90F 07/28 00:33
sirlers: 是review的人 A還是要擔這1/10?
pokkys: 按照工作流程,不是code被review,出事就是reviwer全責。92F 07/28 00:34
superpandal: B是來串接的 支援?...93F 07/28 00:35
sirlers: 你是leader, review這個點是可以用來保護A的你知道嗎?94F 07/28 00:35
wmtsung: 我是以組織來看啦,至少這個案子應該是你們部門為主吧?95F 07/28 00:35
wmtsung: 不然不會只有B在這裡啊
pokkys: 我認為就是因為有review,才敢喊A只有1/1097F 07/28 00:36
pokkys: 案子其實以我為主,但是我的team大部分都是support其他人
superpandal: 跟我想得差不多 只是原來還有翻供99F 07/28 00:38
pokkys: B是owner一個feaure,工作就是把好幾個function串起來100F 07/28 00:38
labbat: 題外話 嗑瓜觀眾可以讀Lamport的The Part-Time Parliament101F 07/28 00:39
pokkys: 我覺得不能說是翻供,只是在原本說法上作最大程度的解釋102F 07/28 00:39
pokkys: 只是這個解釋,很讓我無法相信。
labbat: 現代分散式系統的理論發軔點104F 07/28 00:40
superpandal: 就是供詞蓄意然後不能這樣講給老闆聽不然老闆會抓狂105F 07/28 00:42
superpandal: 火B 這怎麼不是翻供...
pokkys: 就我沒有他們翻供的決定性證據。107F 07/28 00:44
pokkys: 就跟偵探劇結局一樣:你這麼說只是你的臆測,有證據嗎?
pokkys: 如果這真的是翻供,我覺得B的主管很神!
pokkys: B的主管不管是技術還是政治上,都強我好幾個檔次。
tsairay: 不管怎樣,老闆是心有定見啦,沒有相信你們報上去的A和B的111F 07/28 00:48
superpandal: 技術我不知 因為沒資訊 但政治我已經嗅出來了112F 07/28 00:48
Litfal: 因為版友是第三者,對你的說法只能看“發生了哪些事”,113F 07/28 00:48
Litfal: 對你的主觀說法(包括對話轉述)以及猜測(包含這篇的許多內
Litfal: 容)都不能盡信,你可以試試用這樣的觀點去看整件事。另外
Litfal: ,居然沒有在客戶的模擬環境做sanity test,我看你們是很
Litfal: 猛喔
tsairay: 責任有限,考績和分紅被砍就是老闆的態度了118F 07/28 00:48
tsairay: B大概也被mark了,否則怎會只因為代刷門禁被火
labbat: sanity test是啥120F 07/28 00:50
superpandal: 不就是蓄意改成低級錯誤方向解釋 是翻供無疑121F 07/28 00:50
pokkys: tsairay大講的有道理耶,我解惑了。122F 07/28 00:51
tsairay: 老闆心裡根本不相信A和B責任有限,只是給兩位主管一個台階123F 07/28 00:51
tsairay: 下,不拆穿而已,實際上老闆心裡就是認定A和B有責任才會砍
tsairay: 考績和分紅
kurtsgm: 代刷門禁這種事就可大可小啊 XDD 的確有可能藉題砍他126F 07/28 00:54
kurtsgm: 但也有可能對於某些特別注重誠信的老闆來說是禁忌
superpandal: 主要是B不是A 強調要調查B是否蓄意 雖然制度差但這老128F 07/28 00:55
superpandal: 闆顯然不是傻子
superpandal: 我都有從老闆行為反推論
pokkys: 這件事沒有處理好,心理一直有一個疙瘩。131F 07/28 00:56
pokkys: 我會po上來,我覺得也是一種尋求慰藉跟療癒。
pokkys: 大家的分析後,我突然懂了。老闆其實什麼都知道。
pokkys: 我跟B主管就是還在幫他賺錢接案子,他不會給我們難看。
pokkys: 尤其是門禁這件事,我原本覺得莫名其妙,現在整個都通了XD
tsairay: 其實能當到老闆的..都不笨啦,不會盲信下屬報上來的主觀136F 07/28 00:59
pokkys: 我覺得我心種某一個執念可以生天成佛了 XD137F 07/28 00:59
tsairay: 意見,他們也會自己從各種客觀條件得出自己的結論138F 07/28 01:00
Lhmstu: 辛苦啦,其實不用跟鄉民太認真。誰對誰錯又豈是我們這些139F 07/28 01:06
Lhmstu: 局外人可以判斷的
kentyeh: 我覺得最大的問題是橫向溝通有問題,,再次發生也不意外141F 07/28 01:10
sirlers: 最終結果走了3個戰力 如果這樣可以視為老闆排毒成功 我142F 07/28 01:12
sirlers: 也沒啥好說了 就祝福原po及其部屬
pokkys: 我剛剛想通一件事,老闆其實最相信的不是我或B主管144F 07/28 01:22
pokkys: 而是QA,因為QA是老闆直屬部隊,暫時借給我指揮而已。
pokkys: 事情可能是QA跟老闆告狀的時候,老闆就明白了。
pokkys: 後面都是我們在演猴戲而已.....T  T
pokkys: 感謝各位給我的指教,真的獲益良多。
pokkys: QA的feedback就是我們橫向溝通要加強沒錯。
superpandal: 是 但Qa懲處一點都沒有很難說的過去150F 07/28 01:27
pokkys: QA就是去被PDCA這件事,感覺好像有處罰,實際上是沒有。151F 07/28 01:28
s06yji3: PR owner要負最大責任152F 07/28 01:33
luciferii: 這事背景越補越多XD 可以最困難的永不是技術問題而是政153F 07/28 02:06
luciferii: 治手腕。常理來我是支持原PO版本2的想法,如果我開的
luciferii: bug,我看到修正了不太可能忍住不複測。
luciferii: 如果環境複測不出來,事後就會說複測不出來,不會嘴砲
luciferii: 說要用客戶HL問題。
luciferii: 所以真相大概就是複測過真的有問題,然後丟去客戶那看
luciferii: 爆炸。老經驗主管得知後,再幫忙想理由避責。
luciferii: (這種事其實我工作上一年都要碰上幾次,作多了自然知
luciferii: 長官喜歡聽哪些理由來解釋靈異事件。)
saladim: 不要叫整合的當你們的QA好嗎 你們都關了還要人家幫你把關162F 07/28 02:35
saladim: 必要時A跟B跟他們的老闆要抓過來一起war room debug才是
brucetu: 一下說事後發現LAGG拔掉所以才會打不出來,一下說你覺得B164F 07/28 02:37
brucetu: 出去前有測過fail故意炸客戶,啊LAGG都拔了B還打得出來?
brucetu: 好了啦,你就是想公審B結果翻車,可以下去了
brucetu: 一點擔當都沒有只會搞政治的主管
brucetu: 假設B從沒參與這次開發,就從頭到尾沒人會戳到這個bug,
brucetu: 你們一樣會炸客戶,還在扯B有多少責任,笑死
brucetu: 你不如說說是哪家產品這麼雷好讓大家避開以免資料被毀
brucetu: 畢竟這家公司不是因為被B惡搞才會炸到客戶喔,是RD有機會
brucetu: 造出一個沒人測到的bug把資料刪光
brucetu: 花一堆時間在究責,想辦法說服大家B的態度有多差,卻沒
brucetu: 檢討過自己負責的產品為什麼會造出這種bug還放出去
brucetu: 你身為PL知道這個issue存在,知道A搞了三週無法復現就相
brucetu: 信這個bug會自己消失?其實客戶資料會被刪光就是你跟A造
brucetu: 成的,你沒有要求A把根因找出來
brucetu: 現在眼看風向不對開始出來補充說B沒過UT就commit,阿你
brucetu: 的產品你的流程怎麼會讓人沒過UT就能release啊?誰知道你
brucetu: 說的B沒過UT就commit是真的還是開始編故事為了帶風向啊?
brucetu: 搞半天責任是在B沒有做好UT是嗎?都是B的錯就對了
HybridSC: 資料刪光這個issue是可以隨便關的嗎= =182F 07/28 03:16
HybridSC: 還有A測3個禮拜測不出來沒有call help嗎?照理說是要找A
HybridSC:  team的人來挖bug吧?大家都在幹嘛= =?
HybridSC: A的環境測不出來,身為leader不是第一步就是跟客戶確認
HybridSC: 環境嗎?如果客戶環境跟A一樣就沒事,不一樣就弄成一樣
HybridSC: 啊,三個禮拜都沒人確認喔= =?
brucetu: 原PO其中一篇說測不出來,後來跟A一起review把可能有問題188F 07/28 03:27
brucetu: 的地方修改之後就close(通靈debug),直到客戶炸開才回頭
brucetu: 調查發現原來是LAGG會引發問題,若早一開始就認真看待去
brucetu: 把環境確認好怎麼會炸到客戶那邊?這個bug也不是說,有
brucetu: 機率閃退這種小事
DrTech: 別帶著情緒做事吧。B該不該被火,不是你這個職級與角色該193F 07/28 07:26
DrTech: 決定的。
DrTech: 而且前一篇說B沒什麼責任,這一篇又說責任在B。你連當個ow
DrTech: ner的角色該做什麼都有點混亂了吧。
DrTech: 而且喔,太多都是你"自己"無證據預設立場推測出來的結論。
DrTech: 何必把自己搞那麼累。
DrTech: 最後,正常有點品質的軟體公司或管理流程,UT都是跑在開發
DrTech: 者以外的電腦,而且會自動記錄。有沒有UT,以及Log根本沒
DrTech: 機會造假。
DrTech: 原PO有機會可以去了解正常CI流程,以後遇到同樣的事情,或
DrTech: 許會有不同想法。
xioak: 簡單的說,你就是沒做好把關,讓bug出去客戶端了嘛,推那204F 07/28 08:18
xioak: 麼多責任做啥,結果B自爆讓你找到一個宣洩甚至卸責的出口,
xioak: 頂多說B職業操守有爭議,但你事實上就是Owner,你自己也說
xioak: 你扛責辭職了,那感覺還要上來批鬥B,分享什麼鬼故事做啥
shortoneal: 確實,你要感謝B嘴邱,不然你連鍋都沒得甩208F 07/28 08:54
lylu: 如果關issue後要commit前B沒再試一次或是試過還是炸了卻209F 07/28 09:29
lylu: commit 我覺得B確實要扛責任
lylu: 不過我比較好奇不管B有沒有自爆 你們在review的時候最終還是
lylu: 會找到B那邊吧 一定會問B最後有沒有再試一次吧
tvbic: always = 只測一次,B這個人說的話,沒有可信度213F 07/28 09:59
wmtsung: 剛剛想到,第一篇原po講的A認為B搞砸環境,那B即使在自214F 07/28 10:04
wmtsung: 己機器上複測fail也沒有意義了不是嗎?
OriginStar: 原PO可以多學習溝通協調力+政治敏感度,跨部門有衝突216F 07/28 10:19
OriginStar: 難免,如何在不同部門"合理"調動資源,協調力很重要,
OriginStar: 可能主管也認為原PO處理還沒有很好,所以升遷就先庭住
airtsubasa: 其心可議 一開始講鬼故事的時候怎麼不好好描述 想引導219F 07/28 11:57
airtsubasa: B是鬼
OriginStar: 原PO就被卡升遷7pupu,現在還放不下,不然原PO、A、B221F 07/28 12:42
OriginStar: 都離職了,還要拿出來鞭屍
viper9709: 原來是這樣223F 07/28 17:16

--
※ 看板: Soft_Job 文章推薦值: 0 目前人氣: 0 累積人氣: 147 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇