V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yasumoto
V2EX  ›  程序员

同事 A 写了个方法,同事 B 调用了 A 的方法 导致线上直接宕机 这个锅该谁背。。

  •  2
     
  •   yasumoto · 2021-01-11 10:28:06 +08:00 · 30906 次点击
    这是一个创建于 695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司服务器连续几次宕机,导致有很多业务数据没进来,我们投放是花了钱的 后面找问题发现

    是同事 A 写了个 sql 在 mybatis 里面用的<where><if xxx != null> xxx=xxx<if>....</where>类似这样的

    同事 B 调用了这个方法,但是他的业务有的时候值没有 导致查询全表 1000 万的数据 机器直接卡死了

    在阿里云显示慢 sql 执行了 500 多秒 - -

    今天业务找过来说让员工负责一部分损失 ,问问大家 这个损失应该谁背呢
    第 1 条附言  ·  2021-01-11 14:23:44 +08:00
    总结了大家提供的宝贵意见
    1.测试的锅--->这个跟测试没关系 因为是小需求半天工作量 年底测试也正在其他项目中就没参与

    2.A 的锅--->写的方法没有加参数拦截 导致别人调用全表查询

    3.B 的锅--->自测不全 调用别人的方法没有仔细 review 导致系统宕机

    4.领导的锅--->上线合并代码没有仔细检查 埋下了隐患

    这两天我们研发和测试会在开一个集体会讨论下以后怎么避免类似问题 和这次问题的后续处理

    哎头疼,年终奖还没发 希望公司不要拿这事给我们做文章
    273 条回复    2021-01-14 17:11:31 +08:00
    1  2  3  
    hebwjb
        1
    hebwjb  
       2021-01-11 10:30:19 +08:00   ❤️ 80
    让员工负责一部分损失......
    ichou
        2
    ichou  
       2021-01-11 10:31:07 +08:00 via iPhone   ❤️ 1
    QA 的锅
    xiaTianChiXiGua
        3
    xiaTianChiXiGua  
       2021-01-11 10:31:12 +08:00
    打算让员工负责多少呢 几百几千还是几万?
    changeTheGame
        4
    changeTheGame  
       2021-01-11 10:31:37 +08:00
    没有代码 review 吗,为啥员工要担责
    EPr2hh6LADQWqRVH
        5
    EPr2hh6LADQWqRVH  
       2021-01-11 10:31:46 +08:00   ❤️ 47
    测试背,但因为没招测试,HR 背上吧
    yasumoto
        6
    yasumoto  
    OP
       2021-01-11 10:32:33 +08:00
    @hebwjb 这个是最近出的约定 我们现在花钱做投放 程序问题导致收不到投放数据 相当于钱都白花了
    zgcwkj
        7
    zgcwkj  
       2021-01-11 10:33:19 +08:00
    好可怜的打工人~
    xiaomu8
        8
    xiaomu8  
       2021-01-11 10:33:24 +08:00   ❤️ 1
    主 A 或测试吧
    损失一部分叫员工,要是大点的公司,那么员工是不是可以直接去坐牢了?
    jintianfengda
        9
    jintianfengda  
       2021-01-11 10:33:35 +08:00   ❤️ 15
    让员工负责一部分损失就离谱
    liuxey
        10
    liuxey  
       2021-01-11 10:34:02 +08:00   ❤️ 7
    测试主责,下一题

    言归正传,这个问题主责怎么也轮不到 A,细细分析下

    A 提供的功能是过滤条件查询,如果没有条件就查所有,代码写的没问题,你说为什么没分页,问功能设计的人
    B 的功能直接面向应用,没输入查询条件调用参数就是空,没错
    C 测试:???

    总之这个问题是整个公司制度的问题,不在个人
    balezhang
        11
    balezhang  
       2021-01-11 10:35:02 +08:00
    测试主责
    misaka19000
        12
    misaka19000  
       2021-01-11 10:35:20 +08:00
    测试背
    vk42
        13
    vk42  
       2021-01-11 10:35:52 +08:00   ❤️ 1
    这……细思恐极啊,会不会几年后被前公司以代码 bug 为由要求赔偿?
    afewok
        14
    afewok  
       2021-01-11 10:36:57 +08:00   ❤️ 5
    这个锅该谁被都搞不清楚,说明是 leader 的锅。
    zxCoder
        15
    zxCoder  
       2021-01-11 10:38:50 +08:00   ❤️ 1
    员工承担损失也太秀了

    如果辞职跑路的话会跨省追捕吗
    php01
        16
    php01  
       2021-01-11 10:42:18 +08:00   ❤️ 25
    有问题,底层员工负责一部分损失。
    做好了,领导有方,提干。
    总结,做得多,错得多。
    漂亮
    ztxcccc
        17
    ztxcccc  
       2021-01-11 10:42:18 +08:00
    测试,没测试就是领导 /HR
    xmumiffy
        18
    xmumiffy  
       2021-01-11 10:42:26 +08:00 via Android   ❤️ 3
    显然是老板的锅
    xgfan
        19
    xgfan  
       2021-01-11 10:43:40 +08:00
    领导全责啊。人没带好啊。
    权责是统一的。
    ReZer0
        20
    ReZer0  
       2021-01-11 10:44:51 +08:00
    没测试直接就放生产环境……
    tankren
        21
    tankren  
       2021-01-11 10:45:10 +08:00
    B 不测的吗。。。
    lyhiving
        22
    lyhiving  
       2021-01-11 10:45:34 +08:00 via Android
    有毛病吗?关程序员什么事!? 上线前如果不测试这个锅谁背都没用
    delectate
        23
    delectate  
       2021-01-11 10:45:35 +08:00
    公司制度问题,结帖。

    这个和,拒绝加班法院判赔偿公司损失一样,离谱!
    aibx
        24
    aibx  
       2021-01-11 10:45:56 +08:00
    @php01 摸鱼不干活,就不会出错,哈哈哈
    lscho
        25
    lscho  
       2021-01-11 10:46:30 +08:00   ❤️ 34
    公司赚钱了,员工有分红吗?没有的话凭什么员工负责一部分损失?赚钱老板拿,损失员工承担,老板卖不粘锅的?

    有分红的话,损失计算到成本了不就相当于员工负责一部分损失了?这可是法律支持的。
    henvm
        26
    henvm  
       2021-01-11 10:46:37 +08:00 via Android
    那要看同事 B 的代码是加班写的还是不是加班写的。
    MoccaCafe
        27
    MoccaCafe  
       2021-01-11 10:46:50 +08:00 via iPhone   ❤️ 3
    那如果代码写得好稳定运行,能不能发奖金?如果有的话,那把奖金扣了就行了
    k9982874
        28
    k9982874  
       2021-01-11 10:47:31 +08:00   ❤️ 1
    @tankren 你自测会在自己的机器上搞 1000W 模拟数据?
    linksNoFound
        29
    linksNoFound  
       2021-01-11 10:47:36 +08:00
    你也只是个打工仔而已
    Amayadream
        30
    Amayadream  
       2021-01-11 10:48:25 +08:00
    很明显应该是 QA 主责,但是无论谁主责都没有承担损失的责任,毕竟业务赚钱也不会给员工分红。
    SuperManNoPain
        31
    SuperManNoPain  
       2021-01-11 10:48:30 +08:00
    当代码出问题导致线上出问题了, 绝对不是员工的问题, 而是整个项目上线流程出了问题吧,因为人总会出错的
    MoccaCafe
        32
    MoccaCafe  
       2021-01-11 10:49:04 +08:00 via iPhone   ❤️ 1
    当然也不能全扣奖金,毕竟你招的又不是全能全知,如果每次出 bug 都扣钱,那下次没人愿意积极负责任了

    多做多错,少做少错,不做不错
    yasumoto
        33
    yasumoto  
    OP
       2021-01-11 10:51:11 +08:00
    @tankren
    @ReZer0
    @ztxcccc
    @balezhang
    @liuxey
    @xiaomu8
    @avastms
    这个是定时跑任务的 B 自测的项目没经过测试 他说他在测试环境跑了很多遍都没事 上线第 1 天也没事 第 2 天出的问题 有几个单子他认为是必有的参数没有导致的 现在出的方案是 leader 主责 A 和 B 次责
    xiaomu8
        34
    xiaomu8  
       2021-01-11 10:54:07 +08:00
    @lscho 风险员工一起来承担,好处老板独享。
    sunrain
        35
    sunrain  
       2021-01-11 10:54:55 +08:00
    前某同事,接口参数传错,公司流量费多了 7000 多 W,公司让写了一份报告,仅供参考。
    yag
        36
    yag  
       2021-01-11 10:55:49 +08:00   ❤️ 7
    可以罚,罚个 100 200 意思一下就行了,或者通报批评都可以。
    你们要是花了几万要员工全背估计第二天程序员就全跑路了。
    joyhub2140
        37
    joyhub2140  
       2021-01-11 10:56:45 +08:00
    明面上是项目负责人应该背锅,但这个负责人一般都会追责到开发 /测试人员上面,以绩效 /奖金扣除为惩罚措施。
    goodryb
        38
    goodryb  
       2021-01-11 10:58:41 +08:00
    线上故障定责这个是正常流程 ,严重故障可能会导致绩效评分降低,甚至是扣发奖金之类的。
    但是让员工承担业务损失这就有点秀了。
    Leonard
        39
    Leonard  
       2021-01-11 10:59:54 +08:00   ❤️ 2
    员工有责任,A 和 B 包括测试都有。但是如果没有分红,损失应该老板全部承担
    exiledkingcc
        40
    exiledkingcc  
       2021-01-11 11:01:37 +08:00
    看题目,觉得背锅都应该背一点,起码是没有沟通清楚。
    但是看到描述里面:

    让员工负责一部分损失

    这就太离谱了吧!!!
    要是没出错,老板赚的钱是不是也应该都分了?
    AngryPanda
        41
    AngryPanda  
       2021-01-11 11:02:12 +08:00
    @sunrain 7000w 小公司够死好几次了
    qiaobeier
        42
    qiaobeier  
       2021-01-11 11:02:54 +08:00
    想起那个让公司损失一百多万美金的同事。。。
    在试用期就劝退了,那哥们水平其实不错,就是在不懂业务的情况下去重构不熟悉的程序。其实 QA 也是问题很大,但毛事没有,估计因为是大🐻妹子的原因。
    reus
        43
    reus  
       2021-01-11 11:03:43 +08:00 via Android   ❤️ 2
    @yasumoto 约定?写入劳动合同了吗?没写入就是无效。而且就算写入,也可能无效,因为扣工资、罚款都属于违法行为。你只能扣绩效工资,而绩效工资是有限的,他直接离职,你就没法继续扣绩效。让员工承担损失,是傻逼行为。
    lancelee01
        44
    lancelee01  
       2021-01-11 11:03:53 +08:00
    B 使用 A 代码未通知 A,B 全责,调用错误; A 知情,需共同担责,未进行代码 Review 或者未发现问题。测试用例中没有该用例,但 B 予以通过,B 全责;用例中有该部分用例,测试全责。责任分析是必须的,但是损失也要员工承担的,建议早点离职。PS:数据库或者网络存在问题,1 千万全表扫描,正常也很快的好吧,返回 1 千万数据这个比较考验网络
    yazoox
        45
    yazoox  
       2021-01-11 11:04:59 +08:00
    有意思!
    挣了钱,老板拿。
    花了钱,员工背……
    mxT52CRuqR6o5
        46
    mxT52CRuqR6o5  
       2021-01-11 11:06:54 +08:00   ❤️ 2
    《工资支付暂行规定》
    第十六条 因劳动者本人原因给用人单位造成经济损失的,用人单位可按照劳动合同的约定要求其赔偿经济损失。经济损失的赔偿,可从劳动者本人的工资中扣除。但每月扣除的部分不得超过劳动者当月工资的 20%。若扣除后的剩余工资部分低于当地月最低工资标准,则按最低工资标准支付。

    有限责任,剩余的部分公司自己承担
    FFFire
        47
    FFFire  
       2021-01-11 11:06:57 +08:00
    意思就是你们开发兼测试了呗
    AngryPanda
        48
    AngryPanda  
       2021-01-11 11:07:06 +08:00
    @lancelee01 B 调用 A 的方法,还要通知 A,你们公司都是这样操作的吗?
    h493229005
        49
    h493229005  
       2021-01-11 11:08:44 +08:00
    测试背啊
    wysnylc
        50
    wysnylc  
       2021-01-11 11:09:08 +08:00
    没测试的后果,只能说这问题出的该
    Felldeadbird
        51
    Felldeadbird  
       2021-01-11 11:10:43 +08:00
    正常来说,A 无责。B 最多负次要或者无责。
    主要责任 测试 和 验收的人。
    dullwit
        52
    dullwit  
       2021-01-11 11:12:17 +08:00
    leader 主责任,测试次责任,开发责任等级最低。另外员工的责任最多只是相应罚款和通报批评,损失当然公司承担咯。
    bleepbloop
        53
    bleepbloop  
       2021-01-11 11:12:22 +08:00
    肯定领导背啊,这群人是怎么了,脑子清醒点,你以为领导拿那么多钱是做什么的
    kiracyan
        54
    kiracyan  
       2021-01-11 11:13:38 +08:00
    如果这个 A 写的方法不是给 B 用的 B 用了出事跟 A 有什么关系啊
    jzmws
        55
    jzmws  
       2021-01-11 11:14:20 +08:00
    A 写的方法没错
    B 写的方法也没错

    如果有错就在于 A 的有没有把接口调用方法给 B
    B 的错误是有没有和 A 做好接口对接工作


    如果是查全部 A 写方法应该通过代码校验是否有参数
    caiji11
        56
    caiji11  
       2021-01-11 11:14:41 +08:00
    楼主赶紧离职吧 你们公司这不欺负人么
    xyjincan
        57
    xyjincan  
       2021-01-11 11:18:51 +08:00 via Android
    找负责的主管领导
    yeyuefeng
        58
    yeyuefeng  
       2021-01-11 11:19:26 +08:00
    @hebwjb 员工真惨。。。
    一般情况下, 主管负责
    Jooooooooo
        59
    Jooooooooo  
       2021-01-11 11:20:25 +08:00
    硬要找员工担责, 那么

    如果 B 调用 A 没有事先通知 A, B 担一部分责任, 基础架构担一部分责任(没有鉴权怎么能调用成功)

    如果事先通知并且沟通好调用方式, 那么问题聚焦到有没有沟通这个条件, 如果事先约定好这个条件需要有, 那么 A/B 共同担责, B 怎么没保证有, A 怎么没校验; 如果没说这个条件的事, 那 A 担责, B 又不知道你这里条件必须有.

    不过话说回来, 让员工赔偿的公司早点走吧.
    ahsjs
        60
    ahsjs  
       2021-01-11 11:20:46 +08:00
    我觉得 B 主锅 A 次锅 hah
    jimmyczm
        61
    jimmyczm  
       2021-01-11 11:23:46 +08:00
    如果让员工承担损失,那么也得让员工享受分红。
    tony9413
        62
    tony9413  
       2021-01-11 11:23:59 +08:00
    讨论责任没必要,这个领导说了算。
    讨论如何规避更合理。A 和 B 如何在方法调用上沟通的?公司流程上有没有代码 review 、静态检查、约束规范?测试有没有覆盖这种场景?如果没有,为什么?
    PS:测试不是背锅侠,A 是逃不了责任,你写的方法有隐患,为什么不加防护或在接口使用说明标注?这是典型的给人挖坑。可以去看看防御性编程相关知识。
    gam2046
        63
    gam2046  
       2021-01-11 11:24:17 +08:00
    肯定是测试啊,如果没有测试,就项目负责人。
    至于为什么不找开发人员,因为没有人做事情能不犯错,不能证明是主观故意造成的损失,就需要有对应职能的人负责
    FieldYu
        64
    FieldYu  
       2021-01-11 11:25:40 +08:00
    测试开发工程师?
    swulling
        65
    swulling  
       2021-01-11 11:26:36 +08:00 via iPad   ❤️ 1
    重大事故罚款,我司有过一次 case,具体罚款如下

    总经理 10w,总监 1w,经理 5k,员工 500
    ericls
        66
    ericls  
       2021-01-11 11:26:43 +08:00 via iPhone
    如果都是符合流程且没有恶意就不需要负责任
    keepeye
        67
    keepeye  
       2021-01-11 11:28:08 +08:00
    数据库公司的锅,谁让数据库性能这么垃圾
    yuankui
        68
    yuankui  
       2021-01-11 11:29:42 +08:00
    赚了钱不给你分,出了事要你背,哪有这么好的事啊?
    PureWhiteWu
        69
    PureWhiteWu  
       2021-01-11 11:31:34 +08:00
    很简单啊,出问题员工要分担责任,那么赚了钱员工按同样比例获得
    ctro15547
        70
    ctro15547  
       2021-01-11 11:33:13 +08:00
    开发不自测 ? 功能测试环境有 1000W 条数据给到测试人员验证吗? 假如测试环境 100W 能跑通没问题,正式 1000W 爆炸了,怎么怪测试?
    kaedea
        71
    kaedea  
       2021-01-11 11:33:42 +08:00 via Android
    调用 1 个方法出问题了扣钱,调用 10 个方法没问题加钱,这合理吗?
    dream7758522
        72
    dream7758522  
       2021-01-11 11:36:34 +08:00 via Android
    @sunrain 70mw 有点夸张了啊
    l00t
        73
    l00t  
       2021-01-11 11:36:51 +08:00   ❤️ 2
    A 有什么责任? 没条件输入,那自然就查全表咯,这逻辑不是很正确吗? 总不能无中生有一个条件出来。A 要有责任,你咋不说数据库 SQL 就有责任,压根不该设计出没条件的语句出来。

    B 调的接口,B 自己测试的,B 自己预期的“某些单子必有参数”,然而实际没有,显然责任都在 B 身上。
    letking
        74
    letking  
       2021-01-11 11:38:29 +08:00   ❤️ 4
    说让测试背锅的稍微过过脑子好吗?照你们这种说法,一个公司招几个测试,不管什么狗屁问题都甩过去就行了?这样行得通的话谁还会干测试呢?大家都去做写 bug 的开发不好吗?
    raaaaaar
        75
    raaaaaar  
       2021-01-11 11:41:55 +08:00 via Android   ❤️ 1
    @ctro15547 #70 这就是测试的职责呀,难不成测试没有,开发就有?
    silianbo
        76
    silianbo  
       2021-01-11 11:42:16 +08:00
    SB 公司,还想甩锅给员工。赶快离职
    yy77
        77
    yy77  
       2021-01-11 11:42:46 +08:00
    没能力反抗的人背损失。社会就是这么残酷。
    l00t
        78
    l00t  
       2021-01-11 11:45:54 +08:00
    @tony9413 #62 你怎么不说 SQL 有隐患,怎么给设计出不需要 where 的查询语句出来;怎么不说数据库有隐患,怎么大表还能允许走出全表扫描来。数据库难辞其咎!
    liian2019
        79
    liian2019  
       2021-01-11 11:46:24 +08:00
    和 A 有个啥关系
    futou
        80
    futou  
       2021-01-11 11:52:18 +08:00
    建议 A 去仲裁
    很多公司代码共享,既有 shit 山,又有宝库
    按贵司逻辑,谁从宝库里搜点代码出来上线出了问题,应该把当年写宝库的员工找出来鞭尸
    levelworm
        81
    levelworm  
       2021-01-11 11:57:41 +08:00 via Android
    当心把员工逼急了给你们来个大的啊。你们这个是制度问题。
    lawler
        82
    lawler  
       2021-01-11 11:57:56 +08:00
    损失公司来背,责任 A 来承担。

    明显是方法设计不合理引起的。
    phh
        83
    phh  
       2021-01-11 11:58:11 +08:00
    A 真的是人在家中坐,锅从天上来。人家写的方法自己用没有问题就可以了,难道写方法还要考虑到其他人的业务场景去用,而且是的使用也不问?
    luwies
        84
    luwies  
       2021-01-11 12:04:46 +08:00
    要员工才承担损失,这么秀的公司吗
    Anshi
        85
    Anshi  
       2021-01-11 12:12:01 +08:00
    项目负责人背锅
    micean
        86
    micean  
       2021-01-11 12:13:21 +08:00
    @yasumoto

    这种事我一般是 Leader 全责,一般涉及上百万行查询的 SQL 我都要一个个审。让做事的人自己审查自己是懈怠的。
    lanbatian
        87
    lanbatian  
       2021-01-11 12:16:49 +08:00
    楼主是不是这两个同事中的其中一个....
    zpfhbyx
        88
    zpfhbyx  
       2021-01-11 12:18:40 +08:00
    跟 a 有毛关系啊,又不是通用组件
    Leigg
        89
    Leigg  
       2021-01-11 12:20:57 +08:00 via iPhone
    如果认为员工能力不行可以辞退,承担损失就不当人了。
    lifetimeporn
        90
    lifetimeporn  
       2021-01-11 12:21:27 +08:00
    肯定测试背啊,跟开发一点关系都没有😉
    acmore
        91
    acmore  
       2021-01-11 12:22:29 +08:00
    如果平时赚了钱也让员工享受一部分收益,那么赔了钱让员工负责一部分损失是合理的。
    否则 F-word 回敬。
    annielong
        92
    annielong  
       2021-01-11 12:24:26 +08:00
    如何避免这种这种问题,有这类调用 sql 的提前强验证?
    ruokw
        93
    ruokw  
       2021-01-11 12:25:30 +08:00 via Android   ❤️ 1
    编程界的无上真理 no write no bug
    fuis
        94
    fuis  
       2021-01-11 12:29:22 +08:00
    这不显然是测试的问题吗
    falcon05
        95
    falcon05  
       2021-01-11 12:34:02 +08:00 via iPhone
    害怕
    bfdh
        96
    bfdh  
       2021-01-11 12:35:30 +08:00
    要是赚钱了,给员工分成吗?
    cxh116
        97
    cxh116  
       2021-01-11 12:37:30 +08:00
    公司都是有限责任公司,难不成打个工还变成无限责任.那是不是打个工还得先开个有限责任公司,以有限责任去身份去打工了.
    ayase252
        98
    ayase252  
       2021-01-11 12:40:49 +08:00 via iPhone
    当然是去 tm 的啊,业务也没按比例分钱给开发
    cedoo22
        99
    cedoo22  
       2021-01-11 12:46:51 +08:00
    说责任的话,leader >测试>B>A, 说负责损失的话就耍流氓了,除非公司有给员工股份红利分成。
    EminemW
        100
    EminemW  
       2021-01-11 12:55:17 +08:00 via iPhone
    @l00t 你告诉我 A 要这么写才对
    1  2  3  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4897 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 06:38 · PVG 14:38 · LAX 22:38 · JFK 01:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.