当前位置:网站首页>为报复公司解雇,我更改了项目的所有代码注释!
为报复公司解雇,我更改了项目的所有代码注释!
2022-07-28 09:38:00 【大数据v】

导读:公司所有项目代码均由汇编语言编写,如果没有深入研究过,汇编语言的晦涩难懂无异于机器语言。
本文经授权转自公众号CSDN(ID:CSDNnews)
整理:郑丽媛

近些年,“删库跑路”这个梗一直在 IT 圈内广为流传,许多高压之下的程序员经常以此作为玩笑,喊着“大不了删库跑路”——虽不乏个别“意外”,但大体上只是一句玩笑话。
不过,“删库跑路”总归是近年来才流行起来的梗——你是否好奇过,十几二十年前、甚至上个世纪的程序员们是如何“泄恨”的?
近日,一位名为“Thomas”的读者向外媒 The Register 分享了一则发生在 1970 年代的故事:一个前同事离职前一顿神操作、导致他莫名被“坑”的故事。
01 为了报复,更改所有代码注释
上个世纪 70 年代,各种繁杂的工具库还未出现,程序员需要遵守的开发思路很简单:优化代码,提高资源利用率。
当时的 Thomas 还是一名初出茅庐的程序员,有幸被招聘进了一家咨询公司,接手一位前同事的工作——Thomas 对这位前同事的形容是:一个非常聪明也十分讨厌的“混蛋”(以下简称这位前同事为“D”)。
平心而论,在 Thomas 看来 D 被公司辞退其实有些“冤”:公司经理们对项目难度缺乏正确认知,给 D 设定了一个根本无法实现的最后期限。
但 D 还是坚持下来了,甚至为了完成项目代码,他每周工作时长在 100 小时以上。然而,公司管理层因其产生的加班费感到不满,并由此拒绝了 D 的加班申请。结果可想而知:D 与公司管理层产生了巨大分歧,大吵一架后,公司决定解雇 D。
但问题在于,公司还给了 D 一个月时间,要求他完成当前项目的代码再走。可试问:在这种辞退理由下,D 会心甘情愿、老老实实做完这一个月吗?答案是否定的,D 果然做了一些“小动作”:他更改了代码中的所有注释。

02 被误伤的“倒霉”Thomas
乍听之下这好像这不是什么大问题,可你要知道,这个举动发生在 1970 年代:在那个年代,高级编程语言还未兴起,公司所有项目代码均由汇编语言编写,而汇编语言能在“开发者最讨厌的语言”中排名第一不是没有原因的——在 Thomas 看来,如果没有深入研究过,汇编语言的晦涩难懂无异于机器语言。
这也就是 Thomas 认为 D “非常聪明也十分讨厌”的原因:项目代码本身没问题,运行情况也良好,可对于下一个接手项目的人来说,早已与实际功能不符的代码注释就是“地雷”。
后来,这颗“雷”不幸地误伤到了倒霉的 Thomas:
我接手了 D 的项目,第一个任务是在 D 的代码中添加更多功能。结果当然失败了,因为我查看了代码注释。
尽管将问题汇报至管理层,Thomas 却并未获得有效回应,而他担心他也会被因此辞退,又接连进行了几次检查,最终得出结论:代码注释果然是在胡说八道。
可惜,就算明白了问题所在,当时整个公司也没人能弄清楚代码的哪些部分做了什么,所以最后只能删除所有注释,再将其黑盒化。
据 Thomas 表示,一年之后他就离开了这个项目,但黑盒代码此后还运行了五年,直到一家新的咨询公司接管了它:“即使如今,这些代码可能仍在某个地方运行,毕竟黑盒代码像蟑螂一般顽强。”

03 “当你想解雇某人时,请立即将他们赶出门外!”
通过 Thomas 的故事,The Register 将寓意总结为:“当你想解雇某人时,请立即将他们赶出门外!”但于多数企业、尤其是技术公司而言,这可能并非最优解:项目的交接需要时间,培养下一任负责人也需要时间。
在这方面,有位网友留言分享的故事获得诸多好评:
我曾在一个 SAP 项目上从事 Unix 和存储工作,合同原定于 5 月结束,但他们的一位全职工作人员疲于无薪加班和 24x7 值班,在 4 月成为了一名顾问,薪水还是此前的三倍。在他离开之前,他正在培训从工程部 Unix 团队中抽调出来的几个下属,因此在他宣布离开时,这些人都还很年轻。
项目负责人告诉高层,必须延长我的合同,因为我是唯一真正了解该系统的人。当他们来找我时,我都能听出他们的绝望,所以我的合同又延期了三个月,时薪高达 30 美元/小时。
后来,两个全职人员跟我说,除非他们主动要求或询问,不希望我碰任何东西:在他们看来,一旦我离开,他们就必须处理所有事情,因此他们宁愿现在试错。也就是说,我只是一个回答他们问题的资源而已。所以整个夏天我都非常悠闲,他们从一开始每天有几个问题问我,到最后一个半月基本上不理我,甚至我最后离开了他们也没注意——这是我赚得最容易的钱。
对此,许多网友称赞这家企业和这位网友的做法:
他们做得非常对!让自己跟上进度,不要让离职者施展“魔法”——让项目负责人多问问他们,向他们学习,加快工作交接。也许这样的离职者赚钱很容易,但他们的角色是老师和保险,而且每一分钱也都值得!
他们很明智,这对你也有好处,双赢双赢!

04 相聚时珍重,告别时体面
所谓“相聚时珍重,告别时体面”,离职时若能体面再好不过,毕竟近几年已有太多前车之鉴:
2018 年,思科前员工 Sudhish Kasaba Ramesh 在离职 5 个月后,在未经许可的情况下访问了思科托管在 AWS 的云基础设施,并部署了一段代码,导致 456 个 WebEx Teams 的虚拟机被删除,一系列累计损失估计 240 万美元,最终 Sudhish Kasaba Ramesh 面临至少 5 年有期徒刑;
2020 年,某吴姓员工因离职后讨要薪资而删除公司数据,最终法院以破坏信息系统罪成立,判处当事人吴某某有期徒刑十一个月;
2021 年,一名 29 岁的程序员录某未经公司许可,在离职当天,私自将即将上线的京东到家平台系统代码删除,法院认定其构成破坏计算机信息系统罪,被判处有期徒刑 10 个月。
这些“删库跑路”的惨痛后果,时刻提醒着企业及员工避免悲剧重演:更多企业重视人员分工问题,避免人员分工不合理的情况,辞退方式更为友善;员工也需谨记,勿因一时冲动而付出沉痛代价,任何事情都可在合规的情况下去解决。
参考链接:
https://www.theregister.com/2022/04/04/who_me/
本文转自公众号“CSDN”,ID:CSDNnews

直播预告

延伸阅读

延伸阅读《编程原则》
干货直达
据统计,99%的大咖都关注了这个公众号
边栏推荐
- How to learn so many conceptual things in database? Seeking method
- How to get more marks in the game under the new economic model of Plato farm
- 多线程一定能优化程序性能吗?
- Window source code analysis (I): things with decorview
- Analysis of HashSet internal principle
- Arouter source code analysis (II)
- 总线相关概念集合
- 设计一个支持百万用户的系统
- Espresso systems, which has just obtained financing, has both intellectual property rights and team ethics in trouble
- Have you ever seen this kind of dynamic programming -- the stock problem of state machine dynamic programming (Part 2)
猜你喜欢

2022-7-27周报

WPF布局之控件随着窗口等比放大缩小,适应多分辨率满屏填充应用

这款微信插件太好用了

一文读懂Plato Farm的ePLATO,以及其高溢价缘由

Opencv installation configuration test

3分钟告诉你如何成为一名黑客|零基础到黑客入门指南,你只需要掌握这五点能力

Business visualization - make your flowchart'run'(4. Actual business scenario test)

超级原始人系列盲盒即将上线,PlatoFarm赋能超多权益

Method parameter transfer mechanism of C #

学个锤子 | .Net零基础逆向教程 第三课(壳与作业)
随机推荐
备受关注的Bit.Store,最新动态一览
OSS direct upload rails service practice
fastjson中@jsonType注解的功能简介说明
实验五:用户与用户组管理
C# 读写文件从用户态切到内核态,到底是个什么流程?
MQ learning
FixedWindowRollingPolicy简介说明
使用IdentityServer出现过SameSite Cookie这个问题吗?
Arouter source code analysis (II)
Window source code analysis (I): things with decorview
初学C#必须要掌握的基础例题
【FPGA教程案例41】图像案例1——通过verilog读取图片
redis的基础知识
Have you ever seen this kind of dynamic programming -- the stock problem of state machine dynamic programming (Part 2)
Deepin 下安装 LAMP
SQL Server、MySQL主从搭建,EF Core读写分离代码实现
Analysis of the internal principle of ArrayList
Software testing and quality learning notes 2 - black box testing
数据库高级技术学习笔记1--Oracle部署和PL/SQL综述
【MySQL】Got an error reading communication packets