顯示廣告
隱藏 ✕
※ 本文轉寄自 ptt.cc 更新時間: 2023-07-26 22:03:03
看板 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
※ 編輯: 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,也不好要求多測幾次。總之我是5F 07/25 19:35
pokkys: 接受。
pokkys: 所以B根本不需要講他是故意的話。
airtsubasa: 自爆的場合是跟你一對一閒聊?8F 07/25 20:23
sirlers: QA建完測項沒跟PM/leader核對過需求嗎? 這補述B根本該09F 07/25 20:23
sirlers: 責 真的做出release到客戶端的是QA呀 你們這流程B當時的
sirlers: 確就該commit了
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找他進來幫忙時自爆16F 07/25 20:29
pokkys: ,我都不知道他是哪裡搞錯。 我猜他沒有意識到現在是在討
pokkys: 論炸在客戶的問題。 他當下也不是故意commit的,因為他只
pokkys: 測過一次。 A mark 無法複製後,他是沒有複驗的。  我猜
pokkys: 測他只是聽到A的bug 被客戶打出來之後想要嘴一波。
sirlers: 你說"原本以為" 那現在回看呢? B作業上的疏失在哪?21F 07/25 20:34
pokkys: 如果B是明知道code 有問題,但是他故意不擋,那就有責任22F 07/25 20:41
pokkys: 了。 但是他不自白,沒人會知道他是故意的。 就算我事後
pokkys: 覺得他可能只是嘴秋,但是會議上留紀錄了啊。
superpandal: 不講責任小 講了責任大25F 07/25 20:45
superpandal: 他是統整的人還是會有小小的責任
CindyK: 推mindset27F 07/25 20:53
justfortest: 怎麼覺得 B 會被究責原因的在心態(用客戶HL),不然28F 07/25 20:54
justfortest: 處理的方法很合理阿。owner + QA 都說沒問題,憑甚
justfortest: 麼要求 B 說要擋。再退一步,不管 B 心態有沒有問題
justfortest: ,就算是他故意這樣做,不是都有A +QA 背書嗎,根因
justfortest: 還是 A + QA 把關失誤。不過話說回來,用客戶 HL 是
justfortest: 真的蠻猛的,自己也是會怕這樣的同事就是了XD
sirlers: 那再問你們這制度B該怎麼擋? 是要他承擔QA責任?34F 07/25 20:56
sirlers: 這篇問題二就說了 該issue身為項目負責人的原po是給關的
sirlers:  B真要HL是要越級申訴到大老闆嗎?
superpandal: B可以向上反映 A要把什麼關...寫一個可以預知所有情37F 07/25 21:07
ikachann: B的問題一直都不是在流程上,是個人道德問題,不管是知38F 07/25 21:07
ikachann: 道還推並自白,或是知道也推但裝死,這個人格真的不行
superpandal: 況的程式嗎 想想也知道不可能40F 07/25 21:08
sirlers: 更何況"HL到客戶"云云更像是氣話 實際上pick commit去re41F 07/25 21:09
sirlers: lease的也是QA
pokkys: 制度設計本來就是一層一層卡關,無法要求RD不出bug, 也無43F 07/25 21:11
pokkys: 法由於要求QA cover 100%。 所以最後有一個人要扛責就是
pokkys: 我。 如果中間有人「故意」,就只能乞求後面有一關擋下來
pokkys: 。  我講的這就是沒擋下的例子。
ikachann: 這就像一些常見的爭議案件,往往都是查無不法,然後一堆47F 07/25 21:11
ikachann: 人就開始罵法官罵政客,但事實就是法律(過程)的角度無觸
ikachann: 法,就算結果來說很明顯有問題也是一樣
sirlers: 我是認為很多推文有被原po單方說詞誤導為道德瑕疵 其實B50F 07/25 21:12
sirlers: 更像是被抓住話柄被往上報的冤大頭
ikachann: 你可以說B工作職責上沒有問題,但他個人有沒有問題就真52F 07/25 21:12
ikachann: 的不好說
sirlers: 故意一說 也可能是會議上被話語究責擠出來的54F 07/25 21:13
justfortest: B 擋還要承受你又不是QA + 你又不是 func 開發者的55F 07/25 21:14
justfortest: 壓力,上頭也會感到問號吧,覺得 B 你誰有權擋。阿
justfortest: 如果客戶環境剛好跟 A 同,且有 C 也用 A func 沒事
justfortest: ,B 擋之後還不是要被上頭 review。你可以說 B 心態
justfortest: 差,但責任不該是他吧,又不是他亂 call A func 導
justfortest: 致客戶環境下壞掉
superpandal: 這都是一樣的 每個人都會被釘 除非能夠無視於環境差61F 07/25 21:17
ZooYo: 結果B也沒重現bug 感覺只是想嘴臭一下而已 其實不是故意的62F 07/25 21:18
superpandal: 異 否則A控不了 糞code也都是沒辦法的原因63F 07/25 21:19
superpandal: QA用的環境也都是共用的
superpandal: 我不相信 你說他說那種話不是故意的 他自己都說自己
superpandal: 故意的
sirlers: 這要看怎麼問 技巧性的釣話也可問你"你是故意commit的嗎67F 07/25 21:26
sirlers: ?" 當你明知道bug不是你出的時候有誰會說"我code是不小
sirlers: 心commit的"
superpandal: 用公司內的沒問題 環境錯了100%錯 沒人知 ㄚ70F 07/25 21:27
superpandal: 他怎麼測...
sirlers: 調查中真正該問的是"有疑慮怎不提出來" 而不是"你是不是72F 07/25 21:27
sirlers: 故意進code?"
justfortest: 對啊,不能把關,不能預知所有狀況,對於A B QA 甚74F 07/25 21:28
justfortest: 至原po都一樣,不要求A B 原po 擋,那為何能要求B要
justfortest: 擋,根據他的心態究責呢。免不了重複, B 心態讓人
justfortest: 害怕,是我也怕跟他共事,但抓他的心態要扛主責,我
justfortest: 也只能想出可能是用客戶HL ,這個對公司方蠻危險的
justfortest: 心態吧,不然他的作為自己還無法理解不合理之處
superpandal: 以原文是故意的 除非他不講 不講就責任少80F 07/25 21:28
sirlers: 但主持會議的就是給issue過的原po 球員兼裁判當然不會把81F 07/25 21:28
sirlers: 火往自己身上引
superpandal: 沒說B要擋 我覺得懲罰算公正 只是覺得B非常嚴重83F 07/25 21:30
superpandal: 所以沒訊息可以分析 這不就跟有人假設他沒講一樣ㄚ
※ 編輯: 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
superpandal: 法
q253upng: 最大的鬼故事是貴公司產品有不少跟機率性資料毀損同等88F 07/25 21:34
q253upng: 級的issue,還敢直接release到客戶的production環境吧
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到客戶"的意圖94F 07/25 21:39
sirlers: 嗎? 他是要凸顯問題還在 看能不能被後來QA release前抓
sirlers: 到呀
labbat: 最荒唐的是feature也好A的功能也罷,都是測項而不是環境97F 07/25 21:41
sirlers: 我是不懂原po為什麼會因為氣B沒有被火而離職啦(前篇1:3098F 07/25 21:42
sirlers: 原po推文推文)
labbat: 退一萬步來說A的功能就是環境,那打死就是覆蓋率太少了100F 07/25 21:43
justfortest: 還是說其實這件事是要體現說話和詢問的技巧(x101F 07/25 21:43
pokkys: 我調解完後,我覺得B跟B主管有串過,想逃一些責任。想規避102F 07/25 21:44
pokkys: 明明測過還release這件事,但是我苦無證據 XD
superpandal: 他的意圖就是要highlight 客戶端只是工具 誰管你是否104F 07/25 21:45
pokkys: 我會氣是因為,我最終也在老闆那邊幫他們講話。105F 07/25 21:45
pokkys: 但是他們在老闆那邊是在婊A,我覺得大家沒有互相。
superpandal: 要炸客戶 炸了公司倒是真的107F 07/25 21:46
superpandal: 肯定沒有要搞客戶 搞公司是真 只是順帶搞到客戶
superpandal: 當然沒有搞客戶的意圖
sirlers: 挑commit release明明是QA幹的 把沒測出來都責任往B身上110F 07/25 21:48
sirlers: 丟上 這卸責手腕我給100
sirlers: 舉報B的是QA
pokkys: 我覺得QA也是想脫身.......XD113F 07/25 21:49
LincolnBoy: B真雖114F 07/25 21:49
superpandal: B就把feature commit上去 這commit本來就很關鍵115F 07/25 21:49
superpandal: 沒有人要付全責 指的是B特別嚴重 你反應不用那麼大
superpandal: 我沒說這件事B要全扛 倒是看到有人說A要全扛
sirlers: 真要說根因我會認為需求根本沒釐清 從上到下LAGG都不在118F 07/25 21:56
sirlers: 團隊視線範圍內 B也是意外才打到這個測項沒有的情境
knme: 以結果來說 產品出現大失誤每個人都有責任。以軟體工程角度120F 07/25 21:56
knme: 來看 功能的測試情景會缺 表示需求到捕捉需求的測試不到位
giacch: LAGG修掉了 結果在客戶那邊炸開? 想也知道就是B在搞鬼122F 07/25 21:58
justfortest: 打到 fail case 的 B,直接變事主。沒要你擋,但你123F 07/25 21:59
justfortest: 心態不行,所以責任最大,不知道我理解對不對
giacch: 只要A的BUG比LAGG修正早一步Release出去 就是炸125F 07/25 22:01
superpandal: B沒講原po不會知道  但樓主是被搞到不爽吧  心態問題126F 07/25 22:03
superpandal: 其次
giacch: B是唯一測到BUG的, 後面說詞也顯示出B知BUG未解128F 07/25 22:06
giacch: 然後B還commit下去 這已經違反專業道德了
pokkys: 回giacch, B最後是不承認他release前有測過,所以就.....130F 07/25 22:09
justfortest: 如果心態是其次,那會認為特別嚴重的主因是什麼?我131F 07/25 22:09
justfortest: 還以為是因為他有要用客戶HL 的奇葩想法才會究責,
justfortest: 不然照上面說的,沒要他擋,那他不就只能把整好的co
justfortest: de 傳上去,還是說你要說他可以選擇不開啊XD
labbat: 對啊就不要開啊,也許想到又有bug又不會出錯的方法commit135F 07/25 22:12
labbat: 這樣就能兩全其美了
sirlers: 如果B跟主管真有套過 那還真沒套好 commit前沒測過這點137F 07/25 22:13
sirlers: 是可以抓著鞭的 他們該套的說詞是"有測過,但因為LGAA測
sirlers: 項修好沒測出來所以commit" 保證責任一乾二淨
pokkys: 有測過也沒辦法釐清為什麼他會確定沒有解掉 XD140F 07/25 22:14
pokkys: 有一個時間序沒有講清楚,我跟他主管達成共識不是會議上
sirlers: 套過那句就不會出現了142F 07/25 22:16
pokkys: 是在找到LAGG是主因的會議上,所以第二個會議還不知主因143F 07/25 22:16
labbat: 直覺吧,若issue狀態是close則是解掉,沒有則是別的狀態144F 07/25 22:16
j0958322080: mouthly release145F 07/25 22:17
pokkys: 第一個/跟處理B的會議時間是同一天。找到主因是另外一天146F 07/25 22:18
sirlers: …我怎麼覺得現在像在玩海龜湯147F 07/25 22:19
pokkys: 撲朔迷離 XD, 其實我覺得有一部分真相我都沒搞懂。148F 07/25 22:20
labbat: 餅乾盒子比較經典149F 07/25 22:20
justfortest: 想問一下,如果遇到 B 的狀況 484 最好的處理方式是150F 07/25 22:21
justfortest: :測到就舉手說有。然後 A 沒解 close後再測一次,
justfortest: 如果有,就繼續卡住並向上報,卡到 B 的主管來找原p
justfortest: o 說話,如果測出沒有,那就串沒問題。阿如果沒機會
justfortest: 再測一次,就說沒再測,反正 A 說無法復現,大概是
justfortest: 我環境問題吧
pokkys: 我總覺得A/B之間的恩怨,還有B/B主管的說法。我是有懷疑的156F 07/25 22:21
labbat: 要看你是誰,下游user還是上游kernel157F 07/25 22:22
kiedveian: 提出一個問題,結果要花一堆時間被人問,最後還要扛責158F 07/25 22:22
leo255112: 不是  B看起來就沒有要解決的意思啊...159F 07/25 22:22
leo255112: 他要讓這件事爆也不是用客戶highlight吧   不知輕重耶
kiedveian: 所以b要怎麼做,繼續卡feature幾個月?161F 07/25 22:24
kiedveian: 還是要自己跳下來幫a找bug在哪
q253upng: jira的cannot reproduce這個tag感覺也有問題,有出現過163F 07/25 22:25
q253upng: 問題就代表系統一定有個狀態會是有問題狀態,但cannot
q253upng: reproduce一般的確是可以把issue close掉的,這樣會誤
q253upng: 導issue追蹤
labbat: 要說是highlight但不是典型的算帳highlight而是'你看看你'167F 07/25 22:25
labbat: 這種的highlight
kiedveian: 還是每個close的都要再檢查一次?169F 07/25 22:25
justfortest: 真的想知道 B 的最佳解是什麼,不要說是下來解決 bu170F 07/25 22:26
justfortest: g XD
labbat: 跟民主選舉一樣吧,定期輪換function owner避免沉淪腐敗172F 07/25 22:27
labbat: 好的制度下,不會有人能擺爛的
kiedveian: 最佳解應該是練習回答,他們是用b的回答定罪吧174F 07/25 22:29
justfortest: 如果這樣的話真的變相鼓勵大家測到問題不要說,不然175F 07/25 22:29
justfortest: 卡會被自己主管說話,不卡出問題要被究責,還不如裝
justfortest: 沒事直接串
justfortest: 看來真的要練習說話了XD
xam: B就確認自己的測試情境,把自己遇到的情況上報,給主管決定就好179F 07/25 22:31
kiedveian: 所以我覺得是制度有問題,或是主管要幫扛吧180F 07/25 22:31
xam: 上層的主管/PM Owner都同意無法複現,風險可承擔,就沒他責任181F 07/25 22:32
xam: 如果後來還是炸了,頂多檢討一下當初review怎麼沒考慮到這case
xam: 但不至於弄到黑掉...
lazarus1121: 聽起來B除了神經接錯線自爆外,好像沒什麼問題吧184F 07/25 22:36
xam: 另外如果要討論PM遇到這種情況,該怎麼決定放行還是block185F 07/25 22:37
xam: 那又是需要更多公司文化的資訊了...
giacch: 沒有拿 monthly release 來做最終測試?187F 07/25 22:43
xam: 喔對,第三篇ryancho推文的做法就是合理(但非積極處理)的做法188F 07/25 22:43
labbat: 下場是被摘得一乾二淨哪裡是合理解189F 07/25 22:44
labbat: 要配合公司文化,大公司可以小公司不行
xam: 他好像意思是後來爆了,但沒他責任的意思?191F 07/25 22:47
giacch: 文章有提到 通過測試release 看來SOP該改了192F 07/25 22:48
kiedveian: ryancho的做法前提是記得你發的bug沒有真的解耶193F 07/25 22:48
giacch: 怎麼大多都在討論責任 不覺得搞定問題比較有成就感嗎?194F 07/25 22:49
superpandal: B怎麼做...就提供測試基準資料和保證自己寫的沒問題195F 07/25 22:50
xam: 你覺得搞定問題有成就感,有的人覺得準時下班有成就感啊..196F 07/25 22:50
justfortest: r大的做法感覺要有充分自信才敢說的出來 XD197F 07/25 22:50
superpandal: 就好...198F 07/25 22:51
kiedveian: 問題不是早就搞定了嗎,剩討論人或制度?199F 07/25 22:51
justfortest: 問題印象中原 po 最後有找到原因了吧,忘記哪裡提到200F 07/25 22:52
justfortest: 了
xam: 反正我覺得整個故事裡面槽點很多.. 然後一堆人討論超久 XD202F 07/25 22:54
justfortest: 是蠻多怪怪的地方,但看不同觀點討論還蠻好玩的 XD203F 07/25 22:58
giacch: 問題是炸了 不是搞定 感謝善後 好人一個 替客戶感謝原PO204F 07/25 23:02
kurtsgm: 我有點小疑問(先承認我不清楚LAGG是啥XD)205F 07/25 23:15
kurtsgm: 你說所謂的「錯的環境」是怎麼定義的,既然客戶的環境跟
kurtsgm: B的環境一樣,這樣還算是錯的環境嗎?
justfortest: 我猜(雖然也不懂LAGG)這邊的錯的環境指的應該是當時208F 07/25 23:21
justfortest: 界定需求的環境。而從上面貌似客戶環境沒被納入當時
justfortest: 界定範圍,所以才會說所謂錯的環境吧
justfortest: 錯的環境:界定需求的環境之外,剛少打最後的之外
kurtsgm: 如果是要release給特定用戶的 (而且這客戶的環境也裝了這212F 07/25 23:23
kurtsgm: 個LAGG) 那不是應該認定有LAGG的才是「正確的環境」嗎XD
justfortest: 對啊,所以後面才會有原 po 說當時如果當初有界定好214F 07/25 23:28
justfortest: 環境,可能可以避免資料遺失發生
justfortest: 至少 QA 甚至更前面就能發現問題
wmtsung: 原始那篇"A認為他複製不出來這個問題,肯定是B把自己環217F 07/25 23:29
wmtsung: 境搞砸"這段來看A的心態就很有問題啊,不然你們公司大可
wmtsung: 以去跟客戶說他們把自己環境搞砸不是?當A這樣認定你們
wmtsung: 部門還讓A把bug關閉,那這個功能你們部門決定要上的意圖
wmtsung: 不就很明顯了?B想卡變成要自己去證明他的環境沒有問題
wmtsung: 嗎?再來B要不要考慮如果他真的堅持己見往上呈報後你們
wmtsung: 還是硬上,結果在客戶端和你們QA結果一樣沒問題時,B是
wmtsung: 不是反而變成個沒事找事的麻煩製造者?
justfortest: 這個上面有提到,覺得 B 沒那個理由也沒權力擋,所225F 07/25 23:33
justfortest: 以我很好奇B 要怎麼做才行。剛剛看下來大概就是 x
justfortest: 大說的,向上呈報由主管和pm 決定風險可控放行這樣
kurtsgm: B就錯在他那句「我就是要highlight他啊」 XD228F 07/25 23:34
justfortest: 真的 說那句真的奇葩 XD229F 07/25 23:35
kurtsgm: 不是不該講出心裡的話 而是不該有這種想法還付諸行動230F 07/25 23:35
kurtsgm: 然後還誠實到講出來 XDD
viper9709: 推樓上232F 07/25 23:36
viper9709: 推錯~推wmtsung
justfortest: 同意 我的意思的確也是不該這樣想,想用這樣方式 HL234F 07/25 23:38
justfortest:  (但當然講了才會知道)
wmtsung: B確實敗在那張嘴,不過要講成都是B在搞或是B責任最大我236F 07/25 23:39
wmtsung: 是覺得也太過
justfortest: 嗯,我也是認為 B 不應是責任最大的。不過有些會覺238F 07/25 23:43
justfortest: 得拿客戶炸這心態要看最重,能理解但不認同XD
WaterLengend: 認真問,這樣多一台B的機器跟環境成本很高嗎?240F 07/25 23:46
kurtsgm: 應該不是成本問題吧 主要還是沒考慮到要設置跟客戶一樣的241F 07/25 23:49
sirlers: 為了單一無法再現的bug再生一台機器不符比例 歸根結底問242F 07/25 23:49
sirlers: 題還是在需求沒弄清楚 甚至可以說B測出有問題時的環境不
sirlers: 符合RD收到的需求
kurtsgm: 環境 只能說不夠細心 但實務上有考量到的廠商也許也不多245F 07/25 23:49
WaterLengend: 前面有講b沒機器可以借,後來才沒法靠b的機器復現246F 07/26 00:00
WaterLengend: ,所以是什麼問題讓b的環境不能複製?不是反過來先
WaterLengend: 說不能復現然後成本很高ㄋ= =
WaterLengend: 啊,我看到有補充說A也少考量,不過我覺得還是兩碼
WaterLengend: 子事,只能說案情不單純,顆顆
wmtsung: 我認為原文的B release feature給客戶讓一些人以為是B把251F 07/26 00:07
wmtsung: 成品直接出給客戶吧?B只是上了自己那部分沒問題的code
wmtsung: ,bug都關了B還不上code,那feature還不能動的責任就會
wmtsung: 變成B的部分還沒完成…從組織來看只有B和大家不同bu,B
wmtsung: 就只是來支援A部門這個案子,怎麼可能B能自己release給
wmtsung: 客戶?真要說炸客戶的不是B而是A的bu啊
kurtsgm: 其實整個看下來也是滿多奇怪的地方啦...257F 07/26 00:09
kurtsgm: B是上層feature的開發者 要用到A開發的kernel function
kurtsgm: 然後B只try了一次就炸=100%這點我先不吐槽
kurtsgm: 但說起來就是B完全沒call成功過A的function
kurtsgm: 這樣為啥會認為自己的東西做完了然後就放心的commit XDD
wmtsung: 照原文來看是有call成功,只是會造成資料損毀,而這個資262F 07/26 00:14
wmtsung: 料損毀的情況在A與QA那邊不會發生
wmtsung: 上層所謂的feature有時候可能只是做個簡單的UI、流程或
wmtsung: 開關而已
kurtsgm: XD原文不是說只測1次 然後1次就爆炸=100%撞bug266F 07/26 00:17
becca945: 高壓下面一堆怪人267F 07/26 00:20
wmtsung: 只測一次確實也蠻瞎的,我猜也是因為這樣B不敢往上HL,268F 07/26 00:20
wmtsung: 既然A認定是環境問題那就當作是了
ansonwing: 整件事情以流程來看當然幾乎是原po跟A還有QA的責任為主270F 07/26 01:14
ansonwing: ,但是我認同原po說的鬼故事點,應該是說前提是這些沒
ansonwing: 有被誇大,只不過這都不能算是B陷害誰,因為按照流程沒
ansonwing: 抓到問題還是會release。我覺得最有問題的是B的心態跟
ansonwing: 想法,不確定是不是那種個人英雄主義作祟的人,基本上
ansonwing: 本來就是原po那個BU幾乎要負全責啦,所以在公司層面的
ansonwing: 檢討的確重點也應該放在怎麼再避免bug reproduce不精確
ansonwing: 的問題,而B就是把本來單純就事論事的事情變成了對人
ansonwing: 不對事情的鬥爭,B的這些嗆聲操作完全不能解決問題還會
ansonwing: 影響士氣並且模糊焦點,基本上如果對B的描述屬實,那這
ansonwing: 樣子的人的確不該是任何公司需要有的員工,他真的是最
ansonwing: 糟的那個,會讓問題都複雜化淪為無意義鬥爭
Litfal: B只是嘴控制不住吧,bug也發report了,也不在他的code裡282F 07/26 01:15
Litfal: ,QA和PL也說不能重現,他不commit留著等被你們催?他只
Litfal: 是知道這問題沒人改一定會爆,但不知道何時會爆阿
s06yji3: 原PO沒有魔改的話,B就是故意要讓他在客戶端爆。285F 07/26 01:19
s06yji3: 並不是控制不住嘴巴...
ansonwing: 甚至退一萬步說我真的覺得B就是可以讓東西上線並且沒287F 07/26 01:24
ansonwing: 有什麼責任,問題出在他要在旁邊靜靜看事情,而不是用
ansonwing: 很像是炫耀的方式去說出這些事情,重點是講出來後,就
ansonwing: 會變成是浮上檯面的鬥爭,那公司氣氛怎麼不會被搞爛?
brucetu: 簡單說,一開始就認真來測這項,不會無法復現,畢竟你們291F 07/26 01:24
brucetu: 最後還是成功復現了。不要隨便當作他是機率問題,畢竟是
brucetu: 資料全毀的bug。客戶炸掉前說做了什麼什麼都無法復現,
brucetu: 客戶炸掉後認真查能復現,就一開始太草率了。以前也遇過
brucetu: 主管跟我說某個race condition機率很低吧,不用處理,不
brucetu: 用把code寫到這麼複雜,我也是笑笑
rahit: 老實說啦 正常來看B應該是0責297F 07/26 01:24
rahit: 但他自己嘴賤 但說真的嘴賤如果有責任
rahit: 那就有點思想審查的味道了
rahit: 這件事其實該原PO全責的
ansonwing: B的責任不會是在這個功能的成敗,而是他破壞了公司的301F 07/26 01:28
ansonwing: 文化,不是什麼皇城的和氣而是他直接表達我就是要鬥爭
ansonwing: ,公司不處理這種人一定會有離職潮
rahit: 我感覺貴公司最大問題是部門內鬥304F 07/26 01:31
rahit: B用客戶端搞同事 QA用B說法搞B
rahit: 這種公司我是建議塊逃
brucetu: 認同wmtsung 是你們部門擅自認為這個bug沒什麼的,B被你307F 07/26 01:49
brucetu: 們這樣講之後根本沒有立場卡release,還有關於老闆面前婊
brucetu: A的事情,A就是最該死的那個哪有婊不婊的問題,A寫了一
brucetu: 個有機率炸掉資料的function,那種處理態度是怎樣,怎不
brucetu: 去跟客戶說你們環境有問題啊?
pemit: B 不開口沒事,後續開口說我就是要讓客戶知道A寫爛CODE. 站312F 07/26 03:48
pemit: 在A那邊的都要用客戶爆掉的代價HL. 無論是不是故意或著只
pemit: 是中二魂爆發.這人我是覺得有更適合他的地方.
mathrew: QA 直接 先 report 老闆,這心態很可議.....315F 07/26 05:43
mathrew: B 是明明就很好推掉的事情,就自己自爆掉
DrTech: 看完以後,真的覺得原PO才是最鬼的。還敢上網來公審A與B317F 07/26 06:59
DrTech: 原Po就是職場上最鬼故事的主管啊。不願意扛責,專門事後第
DrTech: 一件事情先檢討別人。
DrTech: 分析root cause後,根源在哪?完全不在A與B吧。
DrTech: 不是檢討root cause,而是引導風向檢討別人說話態度不對,
DrTech: 難怪科技業老人文化被人看不起。
safe: 放這麼多技術細節上來,是等不及想讓B知道你在論壇上公審他323F 07/26 07:31
safe: ?這 EQ 我覺得不行
ericthree: 我看起來是A在雷啦 但不否認B的處理方式太衝325F 07/26 08:07
bxc: 其實你是想檢討B吧 不過B的確是不行326F 07/26 08:11
bxc: 應該是回報完後 放者讓主管橋 自己不是主管 就別管那麼多
yesyesyesyes: 根本避重就輕,你跟a要負起最大責任,結果硬要把b拖328F 07/26 10:27
yesyesyesyes: 下水,B最笨的就是不該直接向客戶坦白一切,直接炸
yesyesyesyes: 鍋
worf: 紅的明顯 B不自爆不就沒事331F 07/26 10:46
worf: B太衝了 ... 而且B也無法重現問題不是?
giacch: B回報的BUG無法重現, 不就是BUG的責任? 風向好亂 XD333F 07/26 10:58
yinxuanh: B就一條腸子通屁眼的人,但鍋讓他背,那我會覺得是政治334F 07/26 12:01
yinxuanh: 化了
DrTech: 同樓上。這個Bug與客戶損失,是B亂說話造成的嗎?明明就不336F 07/26 12:08
DrTech: 是。還在扯B亂說話。
DrTech: 把責任與鬼故事丟給B亂說話。根本不是正常職場生態。
DrTech: 而且B為什麼要那麼嗆,根源不就是A產生Bug,身為A的主管不
DrTech: 負責。人家氣到不想好好說話了。
DrTech: B當然不夠成熟,但不到鬼故事等級吧。真的鬼故事是:自己
DrTech: 做錯了,模糊焦點,把錯誤推給不會說話的老實工程師。
DrTech: 這種主管喔,難怪底下的人也先走了。
giacch: 發現問題的是B, 知道問題沒解決就啟用且commit下去344F 07/26 12:44
giacch: 這就是炸客戶的主因, 如果不啟用, 或不commit, 都不會炸
giacch: 只要炸彈還在手上, 還是可以想辦法解, 結果B丟出去不是嗎?
sirlers: 不 真正啟用的是QA  我認為B在那個時點commit是應當的347F 07/26 12:48
sirlers: 他的失誤是沒有在commit前再run一次 但從事後反推可以得
sirlers: 知 就算他run了 因為LGAA已解他也是打不到bug的
giacch: QA測不出來就是第二順位啦350F 07/26 12:51
giacch: 說LAGG早就解掉, 卻還能踩到? 根本就是有鬼
wmtsung: B發現被mark無法複製之後,B就把feature 打開commit上去352F 07/26 12:55
wmtsung: 。(我當時不知道他是故意)…我是認為原po這裡不用講什麼
sirlers: 第一順位也不是B呀 注意身為PL的原PO看過issue是同意關354F 07/26 12:55
wmtsung: 故意,如果B不commit你們還會繼續追查這個bug嗎?還是反355F 07/26 12:55
sirlers: 閉的喔 那來支援的B要HL到哪去 不就是只能進code期望問356F 07/26 12:55
sirlers: 題能被突顯嗎? 結果release前QA沒有測出(因為根本不在測
wmtsung: 過來問B問題都關了你的部分怎麼還不上呢?358F 07/26 12:55
sirlers: 項內)359F 07/26 12:55
justfortest: 又來輪迴 B 發現問題,那是誰寫那份 code 的(A),360F 07/26 13:00
justfortest: 誰測保證沒問題出 code 的(QA),難不成 B 還要幫 A
justfortest: 把 bug 解掉,還是要卡讓東西不動,更何況在這情境
justfortest: 下,B 的環境才不符合這算法使用場域 (當初界定範
justfortest: 圍沒有考慮到客戶情境) A QA 原 po 都給過,B 不就
justfortest: 只能摸摸鼻子傳上去,最後客戶環境資料壞掉,然後反
justfortest: 過了來因為 B 的心態究主責。可以說 B 心態會影響團
justfortest: 隊士氣,所以懲處,這邊可以理解,但他的作為,要說
justfortest:  B 要為客戶環境炸掉扛責,也是蠻神秘的,只能說 A
justfortest: QA 甚至原 po 說話挺聰明的
giacch: to sir 功能是B啟用的370F 07/26 13:01
sirlers: pick commit+release都是QA371F 07/26 13:01
giacch: B應該不要啟用這個功能, 因為有資料毀損的風險372F 07/26 13:02
sirlers: 啟用功能內部測試才更有可能測出問題不是嗎?373F 07/26 13:02
wmtsung: 這裡特地寫B故意我是不知道有沒有什麼特別的意圖,只是B374F 07/26 13:03
wmtsung: 在那個時候有等你們bu把這個bug重啟解完再上的選項嗎?
giacch: 若還在內部測試不會到release吧 應該在beta或test376F 07/26 13:04
sirlers: 沒有 因為bug close不會有人去解的377F 07/26 13:04
sirlers: QA pick commit表示至少還要再build一版 正常來說這裡會
sirlers: 測過以後再release 如果測出問題就不會用有問題的commit
sirlers: 了
giacch: 若B能協助A重現BUG A就會去解, 但沒有 A無能為力381F 07/26 13:07
giacch: 對, release測了沒問題, 到客戶那邊變有問題, 所以QA該死
wtl: 本來就QA的問題 還有code review的人也放掉這個問題383F 07/26 13:10
sirlers: 哈哈 QA有問題的其實也不是這個時點 而是更早建立測項的384F 07/26 13:11
sirlers: 時候就沒有cover需求(不確定是PM或是PL的鍋, 也可能是客
sirlers: 戶真的沒講清楚 這就開發日常)
wtl: 很多人討論事情的時候在用上帝視角看這件事 只有B看到這個bug387F 07/26 13:21
wtl: 所以B應該怎樣怎樣 但實際上在開發的時候有解不完的bug 只能
wtl: 挑重要的先解 剩下的時間夠看可不可以清完 如果有上帝視角 那
wtl: 軟體就不會有bug
Vick753: 聽你的說法,我也會覺得bug一定還會在391F 07/26 15:15
Vick753: 而且一次就中 覺得100% 也是很正常的
Vick753: 所以客人不就遇到了嗎?
Vick753: 因為時間的關係,沒有找出為什麼複製不出來 才是重點
antpro: 原PO想表達,只要有bug就不會commit進去的意思嗎?395F 07/26 15:38
yesyesyesyes: 源頭就是a產生bug ,花了三周還沒解決,然後自行clo396F 07/26 16:58
yesyesyesyes: se 吧
superpandal: 上帝視角然後呢? 這與假設沒講推論後面的結果並沒有398F 07/26 17:34
superpandal: 什麼不同 B commit不是嗎 你解不完知道有問題為何要
superpandal: commit? 是怎麼得出原po覺得沒bug就不會commit的結論
superpandal: ? 首先原po很不爽被搞到 嘗試找出搞他的人覺得B很有
DrTech: 即使你今天有1000個Issue。會毀損資料的 Bug 會被列為不重402F 07/26 17:40
DrTech: 要,可隨意關?主管或owner還可以 讓工程師Merge到 releas
DrTech: e版本? 最後出事了再來檢討工程師。真是爛公司耶。
superpandal: 問因此才發出這一串故事文 有問題固然會出事 但這不405F 07/26 17:42
superpandal: 是原po想講的
DrTech: 工作量多少,跟此事件無關。工作量多就可以放bug進release407F 07/26 17:42
DrTech: ? 正常公司怎麼可能。
superpandal: 又拿close說嘴了 close不能掩蓋B知情 而且之前回覆你409F 07/26 17:44
superpandal: 顯然沒在看 真正好的公司那你就應該限制別人close 而
superpandal: 不是給人可以任意close 這事件不是只有B是工程師 A都
justfortest: 這樣想想當 A 好賺,寫出爛 code,有 QA 幫忙把關,412F 07/26 17:46
justfortest: 還有 B 要幫忙擋,不然就是你明知有問題還 commit,
justfortest: 甚至還有原 po 協助"釐清"事情,怎樣都不是 A 寫爛
justfortest: 的問題 XD 這樣還可以不爽到離職
superpandal: 是工程師 Qa都是測試工程師  你說的沒錯這是個不是很416F 07/26 17:47
superpandal: 好的公司 但不能替B的惡意解脫
superpandal: 除非你能找到技術細節 不然你要如何得出A寫得很爛的
superpandal: 結論 沒講A沒問題 只是B問題更大 懲伐兩個人是一樣的
superpandal: 會離職就是A對這件事的態度 但誰知道A因為什麼理由離
superpandal: 職? 當然用你們替B開脫的說詞解讀A肯定會得出A好
superpandal: 懲罰
sirlers: 嘿我有不同見解 這件事根源是在需求就沒搞清楚 請問這是423F 07/26 18:31
sirlers: A或B的鍋嗎?
sirlers: 再來對於issue close, PL都下來看過issue也同意解法給過
sirlers:  那麼責任就已經是在PL這裡了
sirlers: 接下來B沒run過就commit可以算他一筆 但就結果來說(LAGG
sirlers: 已解 run也打不出bug) 他這個過失根本不影響最後會爆在
sirlers: 客戶那 整件事故的究責不該燒到他
sirlers: 甚至嚴格點說 LAGG就不在最初RD收到的spec裡 B報這個bug
sirlers: 反而還不符合需求環境咧
sirlers: 我認為A真正不爽的對象會是他的主管也就是原PO,責任明明
sirlers: 該在PL頭上最後受罰的卻是底下RD
superpandal: 原po都背鍋了... 早就被懲處了 而且不知道原po 職位434F 07/26 18:37
superpandal: 是否有涉及需求...
q253upng: 你一直很糾結B的惡意,但很多人看到的是萬一今天是換成436F 07/26 18:38
q253upng: 更聰明的的人從頭到尾都沒透漏這問題,軟體還是會因為i
q253upng: ssue close release出去,客戶還是要炸掉,這樣有沒有B
q253upng: 的垃圾話有差嗎
superpandal: 不用假設 假設情況早就推論出來了 B懲罰會小 這是說440F 07/26 18:41
superpandal: 故事不是寫故事要劇情走向分析
sirlers: super你看下這篇原po提到的錯誤三 基本上客戶端需求他跟442F 07/26 18:42
sirlers: QA應該是可以弄清楚的 但這點沒做好
justfortest: 從 sir 大的分析好像能大概理解 A 會不爽的原因了444F 07/26 18:49
superpandal: 那是原po自我檢討 比較認真的主管會這麼做 不認真就445F 07/26 18:49
superpandal: 純PM的規劃
superpandal: 大家說經驗 那我的經驗就是沒看過主管很認真的
sirlers: 我個人會定調這就是個事故 而且最後客戶資料也有救回來448F 07/26 19:03
sirlers: 實質上的損傷是很小的 如果公司真的無法承受那該改進的
sirlers: 是更嚴謹的流程 若還要下懲處那還是快逃吧 (除了B該因為
sirlers: 上code紀律問題扣點考績)
superpandal: 老闆不覺得小事故阿...452F 07/26 20:05
blackrays: 樓主都解釋成這樣…樓上還在各篇文跳針453F 07/26 20:06
superpandal: 樓主只是客氣 不要事情都歸咎B 哪裡跳針你倒是說說454F 07/26 20:15
superpandal: 回應不到整天說人跳針邏輯差 證據呢
alan3100: 不就你自己也覺得可以close 有主管擔當就跟B主管喬人力456F 07/26 21:00
alan3100: 把B調來幫忙 拉不下臉就你自己要扛
alan3100: B開bug你沒任何改動哪可能就問題憑空消失 膝蓋想也知道
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

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