Redian新闻
>
大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一被裁,要确保留下的代码不可维护!

大厂程序员提倡“防御性编程”:故意把代码写得很烂,万一被裁,要确保留下的代码不可维护!

公众号新闻

转自:51CTO技术栈 - 如烟

“码农们在工作中绝对不能按以前书上说的写优美清晰代码,要防御性编程,确保自己被裁,剩下的代码也是不可维护的”。
近日一则关于用“防御性编码”应对大厂裁员潮的消息冲上职场社交平台热搜。这一策略背后的逻辑是,通过晦涩难懂、难以维护的代码,确保自己一旦离职,留下的代码难以替代,从而在某种程度上提高自己的“不可替代”性。   
但这种方式真的能成为程序员保住饭碗的“护城河”,还是仅仅是心理上的安慰?抑或只是一句释放压力的调侃?
大厂裁员风暴逼出“奇招”
说起贯穿2023年全球科技领域的关键词,“裁员”恐怕逃不出前三。
多家外媒和数据机构针对海外科技公司2023年裁员情况的盘点显示,截至2023年11月中旬,科技行业已经裁撤超过24万个工作岗位,同比增长50%。前7家裁员最多的科技公司中,Google、Amazon、Microsoft、Meta等大公司赫然在列。
再看国内的情况,据公开报道,腾讯阿里和快手三家公司,今年上半年合计减员超1.6万人。此外,包括哔哩哔哩、美团、百度、拼多多、京东等公司也进行了一定程度的裁员。
面对各个大厂“降本增效”、“开猿节流”的浪潮,不少程序员们感到前所未有的不安,剑走偏锋提出各种“奇招”保住饭碗。
“防御性编程”就是其中一个究其背后的心理,可能有以下两点
一是行业竞争的激烈不免让程序员们担心,如果自己写出的代码清晰可读,可能很容易就会被他人理解和取代。将代码变得晦涩难懂,或许可以成为保住自己在团队中竞争优势的一个“捷径”。 
二是通过“防御性编码”这种“自保”手段,就算自己被裁,留下的代码也会成为企业无法维护的“定时炸弹”,有一种即使“鱼死”也要争个“网破”的报复感。
用“防御性代码”是自保,还是作死?
用“防御性代码”自保的策略一出,评论区可是炸开了锅,网友们众说纷纭。主要的意见大概分为三类:
一种表示支持,你不仁休怪我不义,主打一个互相伤害。

更有大厂员工直截了当给出了防御性编码的几条入门技巧:

第二种是明确反对的,认为裁员主要和工作能力、公司战略有关,此举很难保全自己,还容易被认为价值观有问题。

 第三种认为这种情况在大厂基本上不会出现,因为有代码审核(code review)机制。
也有人仿佛看穿了这是老程序员在给新手菜鸟们挖坑,直言不讳地指出这种说法只是个玩笑,不必当真:“如果你信老程序员们调侃的‘防御性编程’,那你距离被淘汰也不远了”。
   
    
客观来讲,采用“防御性编程”,就意味着一旦这位程序员离职,团队将面临巨大的技术债务,其他团队成员要花费大量时间理解和重构这些代码。有从业人员明确表示,无论从哪个角度来讲,用“防御性代码”换取保住职位的安全感并不可取。
  • 首先,从个人能力提升的角度来看,故意写晦涩难懂的“烂”代码不利于提高自身的编程水平。

  • 其次,从团队协作方面来看,如果你写的代码过于复杂或者难以理解,会严重影响项目的推进效率;此外,现代的开发环境和公司文化通常都强调代码质量和团队合作,许多公司和团队都有 code review (代码审查)机制,以确保代码的质量和可维护性。

  • 最后,故意写烂代码有极大可能会对个人职业发展产生负面影响。
 
“防御性编程”=屎山代码?别混淆概念
讨论至此,大家有没有发现,以上提到的“防御性编程”指的就是“烂”代码,这不就是业内常提到的“屎山代码”吗?
有明眼人在讨论伊始就发现了,所谓的用“防御性代码”自保,其实有些偷换概念了。 
事实上,防御性编程本身确实是编程领域的一个专业术语,本意是一种细致、谨慎的编程方法。它要求程序员在编写代码时预见可能出现的问题,并提前采取措施来规避这些问题。这种编程习惯更多地强调错误的预防和控制,以减少未来可能出现的灾难性后果。
值得注意的是,防御性编程有时也被计算机科学家称为安全编程(Secure programming),通常用于需要高可用性、安全性或安全性的地方。它是一种改进软件和源代码的方法,具体体现在:
  • 总体质量——减少软件错误和问题的数量。

  • 使源代码易于理解——源代码应该可读且易于理解,以便在代码审计中获得批准。

  • 使软件以可预测的方式运行,尽管有意外的输入或用户操作。

说直白一点就是力求“哪怕用户是个发狂的乱按键的猴子,也玩不坏我的系统”。
所以此“防”(防止代码出错)非彼“防”(提防被裁员),只是在“开源节流”的浪潮下,防御性编程被赋予了新的含义。而防御性编程的真正价值在于能够帮助我们编写出更加健壮、可靠的代码,而不是成为一种职场生存的策略
为自保的“防御性编程”违法吗?
提到程序员为防止被裁员采用“防御性编程”(屎山代码),就不由得会联想到此前程序员为发泄不满,“删库跑路”而被判刑收监的案例。
同样是程序员为了维护自己的利益而在计算机编程方面“动手脚”,那么故意写“屎山”代码违法吗?
据了解,《刑法》中已明确破坏计算机信息系统罪。根据《刑法》第二百八十六条,凡是违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役,后果特别严重的,处五年以上有期徒刑。
从劳动关系的角度来讲,如果程序员写的代码能跑通,不影响系统运行,也能确保功能的正常使用,那他就完成了对其工作职责的交付,似乎也无可厚非;如果通过“防御性编程”发泄情绪,因此给公司业务造成重大损失被追责,恐怕也很难逃脱法律的制裁。
   要么不写,要么就写优雅的代码
虽然能够理解程序员们迫于裁员压力提出自保策略的心情,但在编程的世界里,写出诗一样的代码,应该成为每个程序员追求的目标。
写优雅代码的原因很明确,首先逻辑清晰,简单直观,这样你可以把更多精力花在功能开发上;其次清新的思维写出的代码能减少bug,也就减少了修复bug的时间;最后站在自己的角度想想,你的代码质量应该取决于你自己,而不是任何其他人或者组织,应该对自己负责,不应该让其他因素成为你降低要求的理由。
在写优雅代码这件事上,计算机领域的大佬们也达成了共识:
C++之父 Bjarne Stroustrup:我喜欢优雅和高效的代码,代码逻辑应该直接了当,叫缺陷难以隐蔽;尽量减少依赖关系,使之便于维护;依赖某种分层战略完善错误处理代码。性能调制最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。
wiki 发明者 Ward Cunningham:如果每个例程都让你感到深合已意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。
世界级编程大师,设计模式和敏捷开发先驱 Robert C. Martin:在代码阅读中说脏话的频率,是衡量代码质量的唯一标准。
除了国外的大佬,小米科技创始人雷军也非常提倡代码的简洁性和可读性.
写在最后
无论是一时不爽的发泄,还是认真想通过这种策略“自保”,都反应出当下环境中,程序员的忧虑和不安。
就企业的角度而言,需要重视大厂程序员们面临的困境和压力,鼓励开放、协作的编程文化,让每个程序员都能在团队中发挥自己的最大价值,从而提高团队的整体效率。
就程序员个人而言,对于公司遵守劳动法,依法依规,给足赔偿,没必要搞小动作,不然确实是双输的局面。如果公司不遵守劳动法,躲避赔偿,应该根据劳动法来维权,不要通过不正规的手段来维权。
此外,在这个快速变化的行业中,程序员更应该注重提升自己的技能和知识,以适应新的技术和挑战,而不是依赖于编写晦涩难懂的代码来保住自己的工作。
参考链接:
https://www.zhihu.com/question/633103265/answer/3315370701
https://zhuanlan.zhihu.com/p/671314487
https://www.51cto.com/article/710674.html

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604215

Linux技术交流群:2636170

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
两位女性编剧为什么要写一个不完美的受害人?|播客被骂也要说,《新闻女王》很烂啊告文学城网友书美国服务员妹纸收到10000刀小费后火速被裁,老板理由让全网都费解马云大幅回购阿里股票,途虎起诉京东养车涉嫌不正当竞争,传上汽飞凡智驾团队被裁,苹果或放弃无人驾驶汽车,这就是今天的其他大新闻!Redis之父亲自上手用大模型撸代码:通晓古今的白痴队友,将来可以取代99%程序员微软游戏部门1900人被裁,多人就职动视暴雪, CEO也离职一怒之下删库跑路!95 后大厂程序员被判了!网友:真是个狠人40岁+,清华本硕,大厂高管被裁。降薪去了另一家大厂,年薪少点,有500多万吧Redis 之父自曝用 AI 写代码,锐评:LLM 有望取代 99% 的程序员!低保家庭到美国大厂程序员传飞凡智驾团队全员被裁,可选择内部转岗或“N+1”乌克兰火线入盟成泡影命(写得很真实)某设计院图审长期不让过,设计师怒斥:故意的吧?(附WORD下载)AI也造代码屎山!研究发现GitHub Copilot代码可维护性差,偏爱“无脑重写”而非重构复用已有代码《大炮、病菌和一场春梦》(9) 那一年的记忆,除了战争和瘟疫,还有我做的春梦窒息!39岁大厂员工被裁,每月房贷1.5万却卖不了房?新“三高”是谁的处境?QIML Insight | 寻找防御性因子头部投行男被裁,自曝跑顺风车时薪和投行差不多恭喜!客人绿卡过期两年+,又在境外逾期,保留身份成功入境美国!绿卡境外过期、丢失、逾期,美之信旅游助您保留身份成功入境美国!华硕五款笔记本亮相英国教育展:可选翻转屏、强调高度可维修性开箱蚂蚁集团程序员礼盒,大厂周边都往这个方向卷了吗?中国程序员 VS 美国程序员,太形象了...大厂员工被裁,转做女主播:我知道我正在物化自己,但直播间就是一场情感买卖男生觉得很暧昧而女生却觉得很正常的行为Redis 之父亲自上手用大模型撸代码:通晓古今的白痴队友,将来可以取代 99% 程序员教育部回应:中小学校要确保学生课间正常活动塞尔维亚面临危险选择,要么加入对俄制裁,要么~苏东坡诗文里的酒与酒鬼真的很烂吗?《拯救嫌疑人》为何被全网怒骂?6041 血壮山河 卢沟桥之变 1012.9英寸iPad Air要来了/鸿蒙或不再兼容Android,大厂急招程序员/阿里全系产品崩了,最新回应震惊:加拿大这行业25万人被裁,就业市场巨变趣图:当程序员誓死保卫自己代码的时候
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。