看到一个很有意思的问题,问得是:如果一个程序员,他故意在代码里面写了一个Bug,那么这个程序员的行为违法吗?虽然我不是学法律的,但是,可以肯定的是,如果一个程序员故意在代码里面写了一个Bug,并且造成了严重的后果,那么这个程序员的行为肯定是违法的。但是,从程序员的角度,我觉得如何认定这个程序员是故意的,实操起来很难!并且,这个问题其实很值得我们去讨论!

注:本文为发布者本人原创,所述内容仅代表作者个人观点
怎么认定Bug是程序员故意写的?
因为我不是学法律的,所以,我只能从程序员的工作角度去探讨这个问题,并且这个问题不讨论清楚,可能会引发一些问题。如果一个程序员故意写了一个Bug,在没有明确证据的情况下,就被认定违法,那么对于程序员这个群体的打击是很大的,因为任何一个程序没有Bug是不可能的,如果一个程序员不小心写了一个BUG,但是公司觉得就是程序员故意写的,并且最后还受到了法律的支持,那么将来可能程序员就会成为一个高危群体了。
什么是明确的证据?比如说,程序员在写了一个Bug时,自己还加了个注释,注释里清清楚楚写明了Bug代码的目的就是要把系统搞崩溃,这样一来就能明确这段Bug代码是程序员故意为之。另外,像在代码里面添加了一个定时任务,在指定的时间将会触发删库行为,这种目的很明确且和需求没有任何关联的代码,也应该被认为是主观故意。而其他的BUG,只要稍微有一些不确定性,都不能认为是主观故意。
当然,没有程序员会故意写完Bug代码后还自己不打自招写上注释,我只是举个例子,因为现实工作中,除了上述两个情况,我实在想不出什么情况下能够表明一个程序员代码里面的Bug是故意写出来的。
一个巴掌拍不响
但是,即使一个程序员故意写了一个BUG,也有证据表明这个BUG是程序员故意写的,我相信很多程序员对于让程序员一个人承担所有责任,也有不同意见吧?
首先,就是虽然Bug出现了,但是是出现在测试环境,没有造成严重后果,先不说违法不违法,至少未遂!
我们可以假设一下,一个公司生产了一个产品,产品存在明显瑕疵,这时候产品到了用户手里发生了问题,或者产品作为公司的生产资料出了问题,这时候显然是不能把问题全部抛给这个产品的生产员的,因为产品的生产员只负责产品的生产,这个产品到底能不能用,合格不合格,主要还是取决于产品的质检员。如果一个生产员生产的产品合格率总是不达标,只能说明这个生产员的能力或者责任心有问题,那么在公司内部处理这个生产员即可(比如转岗或劝退),还上升不了法律层面,如果一个产品的生产和质检都由一个人去完成,那么显然是不合理的。
说白了,程序员只是代码的生产者,而软件作为一个公司的产品,在正式投入使用的时候,应当经过严谨的测试,如果没有经过严谨的测试,那么说明公司的研发流程是有问题的。任何一个程序员都无法保证自己生产的代码是百分百没有BUG的,即使是经过程序员自己严格的测试。
而为了尽量减少程序员在编写代码过程中产生的BUG,公司应当安排专门的人对程序员编写的代码进行测试,只有测试通过的代码才能被投入正式使用。而为了防止程序员故意在代码中插入不合理的代码,公司应当实行必要的代码审查流程。
因此,一个程序员即使故意写了一个BUG,在测试人员没有测出来、代码审查没有审出来的情况下,那么我们是否可以认为公司认为这个程序员写的代码就是合格的?在这种情况下,即使代码在运行过程中出现了某些事故,我觉得只能在公司内部对这个程序员进行追责,而不是从法律上。
而像有些公司就没有代码测试和代码审查这两个流程的,这个我就不好说了,我觉得如果最后真的到了和公司对簿公堂的地步,并且这个程序员被认定为违法,虽然程序员故意写BUG这个行为不正确,但让程序员一个人承担所有责任,我觉得不太妥!换句话说,一个公司没有代码测试和代码审查这两个流程,那么就应当预见到程序员可能写出任何不可控代码的情况,应当有风险和控制风险的意识!否则,遇到那种故意写了BUG,但是手段比较高明的程序员,或许只能吃哑巴亏!
结语
无论如何,作为一个程序员,故意在代码里面写BUG,有点“伤敌一百,自损八千”的意思,一个程序员最基本的职业素养,就是应该保证自己的代码在交给别人时应当是尽了自己的全部责任的,虽然不能保证没有BUG,但是至少要过自己这一关。
故意写BUG,如果被认定违法,几乎相当于主动断送自己的职业生命,所以,一个程序员如果真的对公司有意见,可以选择其他合法途径进行处理!作为程序员,虽然我们可以探讨故意写BUG这个行为是否违法,但也不要以此试探法律的界限!