软件出严重bug,公司让程序员一人背锅?程序员:锅是大家的

353 阅读10分钟

【案例导读】

A任B公司JAVA工程师,后公司技术部发现C软件存在重大bug,给公司造成资金事故,带来重大经济损失。B公司经调查,认为是A在设计代码的过程中未与其他人员沟通,未了解接口的限制条件等,应对事故负主要责任,故B公司将A开除。B公司开除A的行为是否构成违法解除?A是否应该就软件bug承担主要责任?以下案例给出了答案。

【争议阶段】

程序员设计代码未全面考虑,公司认为其存在重大过失,将其开除

【案情简介】

**一、【事情起因】**A入职B公司任JAVA工程师,B公司研发部其他程序员发现公司某软件在跑批代码时存在着严重的bug,导致入账记录回滚、重复入账重复出账,给B公司造成重大损失。后B 公司经调查发现,A在设计该软件代码的过程中未与其他人员沟通,未了解接口的限制条件,未考虑特定情况下(如批量超时)对账户数据的影响等情况造成本次的事故。A基于重大失职承担主要责任,但公司人员找A调查时,A拒不如实反映相应情况,拒绝在内部事故调查报告中签字,给公司的调查工作造成了恶劣影响,因此B公司将A开除。A到劳动仲裁申请仲裁,仲裁认定B公司构成违法解除,应支付A经济补偿金,B公司不服仲裁将A起诉到法院,不同意向A支付违法解除赔偿金。

**A答辩称:**其作为中级开发人员,并不知道B公司的代码架构,因为B公司在任务文档中并没有提醒其编写代码时,要注意多少条会出现超时的情况,所以其编写的代码未考虑该问题。接口本身就是批量接口,故一般编写代码时是不考虑该因素,出现数据回滚系因B公司的架构存在问题。其开发完软件,按照公司流程提交给测试,测试环节就是负责检查发现问题的,但测试未发现问题。因此如果需要负责任的话,其认为整个过程中每个人都应负责,其不应承担全部责任或主要责任。

**二、【法院判决:B公司构成违法解除,应向A支付经济补偿金】一审法院认为:**因用人单位作出的开除、除名、辞退、解除劳动合同、减少劳动报酬、计算劳动者工作年限等决定而发生的劳动争议,用人单位负举证责任。本案中,B公司以A严重违反单位规章制度、严重失职给用人单位造成严重损失为由解除与其的劳动合同,B公司对解除理由能否成立负有举证义务。首先,B公司作为系统研发上线的统筹决策者、管理者,未举证证明针对研发团队负责人、管理层、其他成员明示过具体的职责分配及责任承担规则,亦未举证证明针对上线系统可能产生的问题制定有相关处理预案,同时其公司未就A编写代码出现问题的情况是否明显超出一般实践中的合理范围及系统上线运行的其他环节是否均做到无任何疏漏提供相关证据。A编写代码后,B公司亦有专门的测试人员进行测试,并未发现漏洞,故其公司将本次事故归责于A一人,并认定其已达到严重失职的程度,依据不足。其次,B公司虽主张曾发生的重复入账利润返点至今仍大部分未能追回,但未举证证明追回的过程及相应结果情况,且其公司亦未举证证明所持大量代理商因此终止合作的主张,应就此承担相应不利后果;同时录音中关于事件处理进程的谈话内容涉及调账过程、调减结果的内容,B公司相关负责人员已经确认此次事故所造成的金额损失已经追回,此情况可佐证A所持未发生重大损失的主张,至此本院对其公司所持产生了重大损失的主张不予采信。综上,B公司对A作出解除决定的理由不能成立,A主张系违法解除劳动合同并无不当。经核算,仲裁裁决的金额,未高于法定标准,本院予以采纳。综上,一审法院判决:B公司向A支付违法解除赔偿金、延时加班工资、未休年假工资。

【实务操作启示】

由以上案例分析,笔者尝试归纳如下启示要点,供软件开发企业以及程序员在涉及此类劳动争议的实践操作中,作为参考:

1. 从软件开发企业角度,应该对软件研发制定规范流程,对技术人员工作成果详细记录并定期考核评估。对于软件开发项目,从项目立项到规划设计,再到开发实现、交付验收、运营维护,企业都应该制定规范流程,客观记录员工工作产出情况,并对员工工作业绩定期进行考核评估,对于考核后员工工作能力不能胜任工作时,企业应及时对该员工进行培训或者调整工作岗位,经培训或者调整工作岗位后仍然不能胜任工作的,企业应及时解除劳动合同,避免损失扩大。同时避免对个人及部分技术团队的过分依赖,防止出现上述案例中的情况,由于可能的个人失误,影响整个项目的进展。

对于工作成果认定存在争议的,企业应及时留存证据,在适当时刻可以对技术成果委托鉴定机构进行鉴定。在上述案例中,法院之所以认为B公司主张不成立,部分原因是B公司未就A编写代码出现问题的情况是否明显超出一般实践中的合理范围及系统上线运行的其他环节是否均做到无任何疏漏提供相关证据,而这方面的证据涉及技术问题,一般需要权威专业的第三方机构的评估鉴定。如果B公司认为其主张确实成立,其应该委托鉴定机构对A工作是否构成重大失误进行鉴定,因为鉴定机构会从普通技术人员角度(或与A能力背景相匹配的技术人员角度),去认定开发工作是否存在存在根本性失误等,不仅是否失误可以鉴定,给B公司造成的损失,也可以由鉴定机构或者价值评估公司出具报告,鉴定报告作为证据提交,将能在很大程度上改变法官的自由心证,因为对于技术问题,公说公有理婆说婆有理,但法院可以信赖第三方中立机构——鉴定机构的意见。

当然,程序员在履行劳动合同过程中因各种原因给软件企业造成损失,在一定程度和范围内属于软件企业应当承担的经营风险,软件企业不应将经营管理失败或者运营风险,转嫁给程序员,让单个程序员成为“背锅侠”,这也不属于一个诚信经营企业的正常操作。

**2.从程序员角度,对自身工作成果及时留存,同时秉持诚信理念,认真履行自身工作职责。**程序员对于自身工作成果,及时进行留存,以备不时之需,当然不是说留存源代码,甚至他人的编程成果,因为这些本质上都属于公司,程序员未经授权,不能随意复制、使用等,但对于自身工作成果,如向第三方代码管理平台提交工作结果的记录等及时留存,在出现劳动争议时,可以用来证明“自身清白”,如可以使用版本控制工具Git、SVN等记录工作成果。如果公司侵犯自身合法权益,这些证据能起到关键作用。在上述案例中,A就具有这方面的意识,其提交的公司人员与其谈话的录音,在诉讼中发挥了关键作用,是法院认定B公司不存在损失的重要依据。可以说,很多程序员在遇到类似情况时,已经慌了手脚,大多数人都不会想着去录音。所以说日常法律意识的培养很重要。

当然,另一方面,程序员在日常开发中,也应该秉持诚信理念,认真履行自身工作职责,及时完成公司交给的工作任务,不要心存侥幸,如因重大过失或严重失职给公司造成损失的,不仅涉及赔偿公司损失的问题,严重的可能会招来“牢狱之灾”,比如因对公司不满,怒删代码,致使公司项目瘫痪,程序员因此被判刑的案例,也不鲜见。

【关联知识】

【劳动者在何种情况下,应该对公司的损失承担赔偿责任?】

《劳动合同法》第九十条规定:劳动者违反本法规定解除劳动合同,或者违反劳动合同中约定的保密义务或者竞业限制,给用人单位造成损失的,应当承担赔偿责任。

原劳动和社会保障部发布的《工资支付暂行规定》第十六条规定,因劳动者本人原因给用人单位造成经济损失的,用人单位可按照劳动合同的约定要求其赔偿经济损失。经济损失的赔偿,可从劳动者本人的工资中扣除。但每月扣除的部分不得超过劳动者当月工资的20%。若扣除后的剩余工资部分低于当地月最低工资标准,则按最低工资标准支付。

依据以上法律规定,劳动者只有在三种情形下给用人单位造成损失的,才承担赔偿责任:1. 劳动者违反本法规定解除劳动合同;2. 劳动者违反劳动合同中约定的保密义务或者竞业限制;3. 因劳动者本人原因给用人单位造成经济损失的。

【对于劳动仲裁不予受理的案件,当事人可向法院提起诉讼】

在上述案例中,B公司就A给其造成重大损失,要求A赔偿损失,首先向劳动仲裁提起仲裁,但劳动仲裁认为B公司请求事项不符合受理条件,故决定不予受理并出具不予受理通知书,后B公司向法院提起诉讼。

因此,不是所有的劳动争议事项,都必须先提起劳动仲裁,根据《劳动争议调解仲裁法》第二天规定:中华人民共和国境内的用人单位与劳动者发生的下列劳动争议,适用本法:

  (一)因确认劳动关系发生的争议;

  (二)因订立、履行、变更、解除和终止劳动合同发生的争议;

  (三)因除名、辞退和辞职、离职发生的争议;

  (四)因工作时间、休息休假、社会保险、福利、培训以及劳动保护发生的争议;

  (五)因劳动报酬、工伤医疗费、经济补偿或者赔偿金等发生的争议;

  (六)法律、法规规定的其他劳动争议。