看板 Soft_Job
作者 pokkys (人很好那一個)
標題 Re: [心得] 我在科技業遇到的鬼故事之一
時間 Tue Jul 25 18:59:00 2023


我是原po,我來交代一些細節,供大家參考一下。

角色:

我在這裡的角色是application owner,我要推一個應用給客戶去使用。

我這個application需要多個feature來組成,B是我其中一個feature owner。

B這個feature需要多個kernel function整合才有辦法達成,當然B自己也要寫不少code。

A是B負責的feature的kernel function owner,同時我也是A的主管。


我也有配到一組跟我對應的QA,而我要承擔最終的成敗。

這其中:BU1:{{A,我},QA} BU2:{B}


一開始A接到bug試不出來,有去找B討論,但是B認為步驟寫在bug report上很完整了。

而且B有其他feature要開發,無法把機器+環境借給別人。

然後我想可能是概率問題,去找QA幫忙,QA也有在他們各種環境下增加這個測項。

最後A/QA都試不出來,於是A把bug mark成無法複製。 QA也確認無法複製之後就close了

B發現被mark無法複製之後,B就把feature 打開commit上去。(我當時不知道他是故意)

根據我們release流程,他的change被QA挑進mouthly release中,通過測試release。

最後客戶拿到就炸掉了,如上一篇文章所講。



這個過程中,其實我犯了幾個錯誤。

B的report是寫發生率100%,但是包含B在內的RD都很習慣把(實驗一次:發生一次)=100%

所以我誤判這個問題並非100%,才有後面請QA幫忙大範圍測試。

事後分析,B的確也只遇過一次。當下能複製的環境,在最後檢討的時候也不見了。

最後釐清完反推才知道,原來在錯的環境下,就是100%複製沒錯。



第二個錯誤,我跟A其實有作code review。A也有找到幾個疑點,會導致bug描述的現象。

於是他也預防性的做了一些修正,但是因為無法複製問題,所以無法確認是否正解。


我手上一堆『無法複製』的問題,我最後卡關的條件就是QA大規模測試無法復現,加上

code review有正面反饋,我就給過了。因為也不是正解,我之前描述就沒講到這段。


第三個錯誤,我當時對QA team花的時間太少。客戶的使用情境,我們原本應該是要能夠


造出對應的測項去把關。 在PM跟我們(RD+QA)解釋完客戶的情境之後,我就單方面認為

『情境QA都知道了,QA都是老鳥應該是知道怎麼造測項吧?』

如同前面的敘述,我本身是RD leader,在臨危受命去協調這個applicaiton時,

我的mindset還是覺得我就是RD leader,而不是要扛成敗的人。 我覺得這個mindset

才是整個事件的主因。最後我也因為這樣失去一些升遷,但是我也覺得這超出我能力。



最後我分享上面這一些事情,其實都是各位工程師們的日常。

原本也沒有什麼特別好講的,我只是覺得最後B跳出來自爆這件事很扯。

所以我認為鬼故事的點,是B竟然會自爆。太不可思議了。


就如同我在上一篇文章裡面留言的,我一開始就知道我一定是全責。

也並沒有要把責任推給任何同事的意思(事實上也不可能推得掉XD)。


這件事的後續是,我跟QA留下來作PDCA,結論就是最後這關一定要弄清楚客戶環境。

客戶的部分,我負責了客戶資料救援,最後也是有救回來,可能是這樣所以考績沒影響。



其他人的部分,我是極力不想對A究責,B的主管也是一樣的態度。

最後我們兩個送上去給老闆的說法是這兩個人的責任,10分裡只有1分。

但是老闆還是砍了他們分紅,我們打上去的考績也是被打折。

A因為這件事,有點不爽的離職了。

我因為這件事,有點心灰意冷.....覺得自己不勝任,後來也是離職了。

B的部分,我不知道他心理怎麼想,我只知道他最後因為請人代刷門禁被火。



下面是技術細節,可略過。


B的環境,其實是因為他在測A的功能之前,先跑了網路相關測試。

在網路的測試中,有一個Link Aggregation的測試中,跑完忘記把LAGG拆掉。

導致B測A的code時,因為有LAGG所以A的code 才跑出不預期的行為。

而B其實也沒有描述他前一天他的機器有跑什麼測試(這也合理)。


之後有人發現網路測試中,LAGG沒有拆掉,導致後面一堆測試錯亂,所以『修正』了。

所以後面我們大規模測試也沒有測出這問題。


客戶環境,就是使用LAGG。而QA也有測LAGG,也有測A的功能,就是沒有兩個一起測過。




關於B的處理,補充一段後續。

會議當下我聽到B自爆,我正在想要怎麼處理,要去找B的主管。 結果QA直接report給老
闆這件事,我們就不得不處理。

我/B/B的主管,三個人在會議室。

我問B:你是看到A/QA把bug close後,你又測了一次發現還是一樣,所以才打算commit上
去想要highlight他是嗎?

B說:沒有,後來就沒有測。

我問:你沒有測,你怎麼會知道這個問題還在?

B說:他就說can not reproduce啊,所以問題一定還在。

我說:這不一定吧?

B的主管:所以你只是因為他沒有解,所以你認定問題還在,才想要highlight這個問題?

B說:對,我只是想提醒大家問題沒有被解決。


我說:那你到底測過幾次?

B想了一下說:1次

我說:可是你寫always耶!

B說:我就想說測1次中一次就100%啊。



後來B先被請出去了,我跟他主管談這件事。

我們最後的共識是相信B主管的總結:因為bug close當下,那段有問題的LAGG test code
已經被修掉很久了。 B不太可能有真的機會複製出這個問題。 而且LAGG test code被修
掉這件事,也可以解釋為何我跟QA沒有辦法複製。 這個說法,大家都會有台階下。


所以最後我沒有去糾結為何他那麼明確知道bug還在這件事.....我接受B主管的說法了。



--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.74.78 (臺灣)
※ 作者: pokkys 2023-07-25 18:59:00
※ 文章代碼(AID): #1alwhs5d (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1690282742.A.167.html
※ 同主題文章:
Re: [心得] 我在科技業遇到的鬼故事之一
07-25 18:59 pokkys
… ×9
※ 編輯: pokkys (122.116.74.78 臺灣), 07/25/2023 19:01:23
xam: B只有遇到一次,且無法複製,那就是Once,不是Always1F 07/25 19:02
awenracious: 別的不說 B的個性人品道德應該是有問題的2F 07/25 19:07
ybon3: 有些大環境的管理方式真的是很打擊前線人員士氣3F 07/25 19:08
ko27tye: B只出現一次 那把功能打開不是正常嗎 A和QA都確認過了4F 07/25 19:20
pokkys: 的確只有一次,他不是QA,也不好要求多測幾次。總之我是接受。
所以B根本不需要講他是故意的話。5F 07/25 19:35
airtsubasa: 自爆的場合是跟你一對一閒聊?8F 07/25 20:23
sirlers: QA建完測項沒跟PM/leader核對過需求嗎? 這補述B根本該0責 真的做出release到客戶端的是QA呀 你們這流程B當時的確就該commit了9F 07/25 20:23
viper9709: 推四樓12F 07/25 20:24
superpandal: B不講但是B commit了 頂多責任比較少才算公正13F 07/25 20:25
airtsubasa: 測試沒有做整合測試也是恐怖?14F 07/25 20:26
superpandal: 這不是純一個人的問題 不可能零責的15F 07/25 20:29
pokkys: 沒錯原本以為B是無責,在我bug review找他進來幫忙時自爆,我都不知道他是哪裡搞錯。 我猜他沒有意識到現在是在討論炸在客戶的問題。 他當下也不是故意commit的,因為他只測過一次。 A mark 無法複製後,他是沒有複驗的。  我猜測他只是聽到A的bug 被客戶打出來之後想要嘴一波。16F 07/25 20:29
sirlers: 你說"原本以為" 那現在回看呢? B作業上的疏失在哪?21F 07/25 20:34
pokkys: 如果B是明知道code 有問題,但是他故意不擋,那就有責任了。 但是他不自白,沒人會知道他是故意的。 就算我事後覺得他可能只是嘴秋,但是會議上留紀錄了啊。22F 07/25 20:41
superpandal: 不講責任小 講了責任大
他是統整的人還是會有小小的責任25F 07/25 20:45
CindyK: 推mindset27F 07/25 20:53
justfortest: 怎麼覺得 B 會被究責原因的在心態(用客戶HL),不然處理的方法很合理阿。owner + QA 都說沒問題,憑甚麼要求 B 說要擋。再退一步,不管 B 心態有沒有問題,就算是他故意這樣做,不是都有A +QA 背書嗎,根因還是 A + QA 把關失誤。不過話說回來,用客戶 HL 是真的蠻猛的,自己也是會怕這樣的同事就是了XD28F 07/25 20:54
sirlers: 那再問你們這制度B該怎麼擋? 是要他承擔QA責任?
這篇問題二就說了 該issue身為項目負責人的原po是給關的 B真要HL是要越級申訴到大老闆嗎?34F 07/25 20:56
superpandal: B可以向上反映 A要把什麼關...寫一個可以預知所有情37F 07/25 21:07
ikachann: B的問題一直都不是在流程上,是個人道德問題,不管是知道還推並自白,或是知道也推但裝死,這個人格真的不行38F 07/25 21:07
superpandal: 況的程式嗎 想想也知道不可能40F 07/25 21:08
sirlers: 更何況"HL到客戶"云云更像是氣話 實際上pick commit去release的也是QA41F 07/25 21:09
pokkys: 制度設計本來就是一層一層卡關,無法要求RD不出bug, 也無法由於要求QA cover 100%。 所以最後有一個人要扛責就是我。 如果中間有人「故意」,就只能乞求後面有一關擋下來。  我講的這就是沒擋下的例子。43F 07/25 21:11
ikachann: 這就像一些常見的爭議案件,往往都是查無不法,然後一堆人就開始罵法官罵政客,但事實就是法律(過程)的角度無觸法,就算結果來說很明顯有問題也是一樣47F 07/25 21:11
sirlers: 我是認為很多推文有被原po單方說詞誤導為道德瑕疵 其實B更像是被抓住話柄被往上報的冤大頭50F 07/25 21:12
ikachann: 你可以說B工作職責上沒有問題,但他個人有沒有問題就真的不好說52F 07/25 21:12
sirlers: 故意一說 也可能是會議上被話語究責擠出來的54F 07/25 21:13
justfortest: B 擋還要承受你又不是QA + 你又不是 func 開發者的壓力,上頭也會感到問號吧,覺得 B 你誰有權擋。阿如果客戶環境剛好跟 A 同,且有 C 也用 A func 沒事,B 擋之後還不是要被上頭 review。你可以說 B 心態差,但責任不該是他吧,又不是他亂 call A func 導致客戶環境下壞掉55F 07/25 21:14
superpandal: 這都是一樣的 每個人都會被釘 除非能夠無視於環境差61F 07/25 21:17
ZooYo: 結果B也沒重現bug 感覺只是想嘴臭一下而已 其實不是故意的62F 07/25 21:18
superpandal: 異 否則A控不了 糞code也都是沒辦法的原因
QA用的環境也都是共用的
我不相信 你說他說那種話不是故意的 他自己都說自己故意的63F 07/25 21:19
sirlers: 這要看怎麼問 技巧性的釣話也可問你"你是故意commit的嗎?" 當你明知道bug不是你出的時候有誰會說"我code是不小心commit的"67F 07/25 21:26
superpandal: 用公司內的沒問題 環境錯了100%錯 沒人知 ㄚ
他怎麼測...70F 07/25 21:27
sirlers: 調查中真正該問的是"有疑慮怎不提出來" 而不是"你是不是故意進code?"72F 07/25 21:27
justfortest: 對啊,不能把關,不能預知所有狀況,對於A B QA 甚至原po都一樣,不要求A B 原po 擋,那為何能要求B要擋,根據他的心態究責呢。免不了重複, B 心態讓人害怕,是我也怕跟他共事,但抓他的心態要扛主責,我也只能想出可能是用客戶HL ,這個對公司方蠻危險的心態吧,不然他的作為自己還無法理解不合理之處74F 07/25 21:28
superpandal: 以原文是故意的 除非他不講 不講就責任少80F 07/25 21:28
sirlers: 但主持會議的就是給issue過的原po 球員兼裁判當然不會把火往自己身上引81F 07/25 21:28
superpandal: 沒說B要擋 我覺得懲罰算公正 只是覺得B非常嚴重
所以沒訊息可以分析 這不就跟有人假設他沒講一樣ㄚ83F 07/25 21:30
※ 編輯: pokkys (122.116.74.78 臺灣), 07/25/2023 21:31:55
pokkys: 我在文章後面補了一段處理B的過程,有興趣可以卷回去看。85F 07/25 21:32
superpandal: 樓主出來了沒見到B 你不信 覺得是球員兼裁判那也沒辦86F 07/25 21:32
q253upng: 最大的鬼故事是貴公司產品有不少跟機率性資料毀損同等級的issue,還敢直接release到客戶的production環境吧88F 07/25 21:34
knme: 話說 重大異常點沒有埋log嗎 可以聚焦可能的問題點90F 07/25 21:35
pokkys: 有埋log,但是出問題的地方是IO, 多到爆炸無法全log出來91F 07/25 21:37
pot1234: B看起來很像是普通的白目吧92F 07/25 21:37
superpandal: 補的其實說的與原文差不多  最後有無測不影響關鍵93F 07/25 21:38
sirlers: 補充的B處理不正是說明B沒有"release bug到客戶"的意圖嗎? 他是要凸顯問題還在 看能不能被後來QA release前抓到呀94F 07/25 21:39
labbat: 最荒唐的是feature也好A的功能也罷,都是測項而不是環境97F 07/25 21:41
sirlers: 我是不懂原po為什麼會因為氣B沒有被火而離職啦(前篇1:30原po推文推文)98F 07/25 21:42
alan3100: 不就你自己也覺得可以close 有主管擔當就跟B主管喬人力把B調來幫忙 拉不下臉就你自己要扛
B開bug你沒任何改動哪可能就問題憑空消失 膝蓋想也知道456F 07/26 21:00
superpandal: 原po已經負責 B是真的誇張 原po會懷疑不是沒道理459F 07/26 21:30
alan3100: B就單純講話機掰而已 就沒再雞婆找B主管說A team亂close460F 07/26 21:38
h129875230: 網路加儲存設備加os 普安?461F 07/26 21:48
superpandal: 都蓄意而為還單純機掰 洗地也不要洗成這樣462F 07/26 21:53

--
作者 pokkys 的最新發文:
點此顯示更多發文記錄