大厂裁员逼出奇招,“防御性编程”能否自救?

异次元发卡最新漏洞0day(XSS组合拳) 异次元商店头像上传处存在存储型XSS注入(user、admin均存在)。其中,user处有过滤,admin无。 将恶意脚本插入后,管理员访问用户管理页面即可执行恶意脚本。 恶意脚本执行后,会新增一个管理员用户,进而获得权限。鉴于漏洞还没有泛滥,而且很多站都有漏洞。EXP暂时不公开。需要学习可以加入知识星球 阅读详情

“码农们在工作中绝对不能按以前书上说的写优美清晰代码,要防御性编程,确保自己被裁,剩下的代码也是不可维护的”。

“防御性编码”应对大厂裁员潮策略背后的逻辑是,通过晦涩难懂、难以维护的代码,确保自己一旦离职,留下的代码难以替代,从而在某种程度上提高自己的“不可替代”性。

图片

但这种方式真的能成为程序员保住饭碗的“护城河”,还是仅仅是心理上的安慰?抑或只是一句释放压力的调侃?

大厂裁员风暴逼出“奇招”

说起贯穿2024年全球科技领域的关键词,“裁员”恐怕逃不出前三。

多家外媒和数据机构针对海外科技公司2024年裁员情况的盘点显示,科技行业已经裁撤超过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:在代码阅读中说脏话的频率,是衡量代码质量的唯一标准。

除了国外的大佬,小米科技创始人雷军也非常提倡代码的简洁性和可读性,30年前写的代码都火了,被赞像诗一样优雅。

写在最后

无论是一时不爽的发泄,还是认真想通过这种策略“自保”,都反应出当下环境中,程序员的忧虑和不安。

就企业的角度而言,需要重视大厂程序员们面临的困境和压力,鼓励开放、协作的编程文化,让每个程序员都能在团队中发挥自己的最大价值,从而提高团队的整体效率。

就程序员个人而言,对于公司遵守劳动法,依法依规,给足赔偿,没必要搞小动作,不然确实是双输的局面。如果公司不遵守劳动法,躲避赔偿,应该根据劳动法来维权,不要通过不正规的手段来维权。

此外,在这个快速变化的行业中,程序员更应该注重提升自己的技能和知识,以适应新的技术和挑战,而不是依赖于编写晦涩难懂的代码来保住自己的工作。

参考链接:

https://www.zhihu.com/question/633103265/answer/3315370701

https://zhuanlan.zhihu.com/p/671314487

https://www.51cto.com/article/710674.html

智能驾驶域控(ADCU)方案介绍 本文主要对智能驾驶域控(ADCU)方案相关知识进行总结,以加深理解,及方便后续查漏补缺。 阅读详情

相关推荐

目标检测数据集 第059期-基于yolo标注格式的水果李子检测数据集(含免费分享)

李子作为中国三大水果之一,种植历史超 3000 年,在市场中占据重要地位。传统李子种植、施肥、采摘依赖大量人力,存在资源浪费、产量估算不准、采摘时机难把控等问题。此前,农业领域缺乏针对 “未成熟李子” 的专用数据集,现有水果检测数据集多聚焦于成熟果实(如苹果、柑橘),且未覆盖李子种植的复杂自然场景。在使用该数据集进行学术研究时,应遵守相关的学术规范,引用该数据集的来源,尊重数据集创作者的劳动成果。,用于训练改进型模型,解决李子精准检测的核心痛点。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 772

危机来临,防御性编程能否帮助程序员抵御裁员风暴?

作为全球首款面向微服务架构设计和最佳实践的软件机器人,飞算SoFlu软件机器人覆盖软件前端开发、后端开发、测试、运维全过程,改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑的同时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。这一策略背后的思路是,通过编写晦涩难懂、难以维护的代码,确保一旦离职,留下的代码难以被替代,从而在一定程度上提升自己的“不可取代性”。因为30年前写的代码登上微博热搜,被赞像诗一样优雅。

CalEx_Tech的博客 977

告别CMake依赖!在Visual Studio 2022中直接配置VTK 9.4开发环境(附完整项目示例)

本文详细介绍了如何在Visual Studio 2022中直接配置VTK 9.4开发环境,无需依赖CMake。通过图文教程和完整项目示例,帮助C++开发者快速集成VTK库,简化开发流程,提升工作效率。特别适合科学可视化任务的开发者。

weixin_26804345的博客 416

防御性编程

防御式编程的分析

m0_53817260的博客 2786

UsualToolCMS-验证码绕过漏洞复现

本文以UsualToolCMS为靶场,复现了验证码绕过漏洞

小小小屿屿屿的博客 920

创建 Qt Quick 项目

来看看如何使用 Qt Creator 创建 Qt Quick 项目!

青春不老,奋斗不止! 1万+

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

上一篇:一个中椒的年终总结转自:51CTO技术栈 -如烟“码农们在工作中绝对不能按以前书上说的写优美清晰代码,要防御性编程,确保自己被裁,剩下的代码也是不可维护的”。近日一则关于用“防御性编码”应对大厂裁员潮的消息冲上职场社交平台热搜。这一策略背后的逻辑是,通过晦涩难懂、难以维护的代码,确保自己一旦离职,留下的代码难以替代,从而在某种程度上提高自己的“不可替代”性。 但这种方式真的能成为程序...

Java和Android架构 784

环保 HJ212协议解析

由于是做环保相关的,有时需要对212协议进行拆包和解包。HJ212协议是一种字符串协议,数据传输通讯包主要由包头、数据段长度、数据段、CRC校验、包尾组成,其中“数据段”内容包括请求编码、系统编码、命令编码、密码、设备唯一标识、总包数、包号、指令参数。请求编码为请求的时间戳,系统编码ST统一规定为22,命令编码CN为该数据包的时间类型,访问密码、设备唯一标识在对接时由平台提供,指令参数为数据内容。通讯协议的数据结构如图4所示。 图4 通讯协议的数据结构 6.1.1通讯包结构组成 名称 类型 长度

ccf19881030的专栏 2万+

如何用防御式编程防止被公司裁员?!

我们从最现实的工程角度出发,聊聊如何用防御式编程的思维,让自己从“随时可下线的功能模块”,升级为“牵一发而动全身的核心系统”。当你的徒弟能在你休假时维持系统运转,但遇到重大决策仍然需要你的远程指导时,你就达到了完美平衡——既有培养人才的美名,又有不可替代的实质。把你的知识体系像敏捷开发一样“迭代式”传授:第一期教基础操作,第二期教进阶技巧,永远把最核心的“设计哲学”和“历史包袱的来龙去脉”留在自己手里。你既留下了“乐于分享、文档齐全”的好名声,又确保了这些知识的传输必须经过你这个“基站”。

chengjun_java的专栏 431

7、基于机器学习的生产效率估计方法解析

本文探讨了基于机器学习的生产效率估计方法,重点介绍了效率分析树(EAT)和凸效率分析树(CEAT)算法的原理及其与传统自由处置壳(FDH)和数据包络分析(DEA)方法的对比。通过剪枝优化、生产可能性集构建及方向距离函数(DDF)估计,EAT和CEAT在避免过拟合、提升估计稳定性与处理凸性假设方面展现出优势。结合PISA教育数据的实证研究,采用箱线图、核密度图和非参数检验方法验证了不同模型效率得分分布的显著差异。研究表明,EAT与CEAT为生产效率评估提供了更准确、灵活的工具,适用于教育、企业生产和医疗等多个

milk5的博客 93

基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)_167

本系统主要由超市环境监测部分和商品管理部分组成。环境监测部分主控芯片采用STM32F103C8T6,主要包括温湿度传感器、烟雾传感器和空调制热开关、空调制冷开关,采集的数据通过ESP8266模块+MQTT协议上传至OneNet云平台,在OneNet云平台设计手机和电脑版本可视化页面,能够在页面上查看超市的环境信息,还能在页面上手动打开空调制热开关和空调制冷开关。商品管理部分主要由RC522-RFID读卡器、上位机组成,实现商品选购、结算、顾客的VIP会员卡注册管理等功能。

6071

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

根据《刑法》第二百八十六条,凡是违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役,后果特别严重的,处五年以上有期徒刑。就企业的角度而言,需要重视大厂程序员们面临的困境和压力,鼓励开放、协作的编程文化,让每个程序员都能在团队中发挥自己的最大价值,从而提高团队的整体效率。此外,在这个快速变化的行业中,程序员更应该注重提升自己的技能和知识,以适应新的技术和挑战,而不是依赖于编写晦涩难懂的代码来保住自己的工作。

IT_1024的博客 1276

(3dnr)多帧视频图像去噪 (一)

视频图像去噪主要利用相邻帧间内容相似性,通过时域帧平均降低随机噪声。为避免运动物体产生"拖尾"现象,可采用运动自适应或运动补偿时域滤波方法。前者根据运动强度动态调整滤波系数,后者通过运动补偿使参考帧更接近当前帧。运动补偿方法虽能更好处理运动区域,但计算复杂度高且对快速运动场景效果有限。相比之下,运动自适应方法在实时视频处理中更具优势,能平衡去噪效果与硬件资源消耗。两种方法可根据场景动态切换以获得最佳去噪效果。

大熊 1872

大厂程序员提倡“防御性编程”,是自保还是作死?

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。如果我的分享对你有帮助,请关注我,一起向上进击。创作不易,希望大家给一点鼓励,把公众号设置为“星标”,给文章点个“赞”和“在看”,谢谢大家啦~今天的文章也是关于职场和防御性编程的话题,希望为大家呈现更加全面的观点。本文分享自51CTO技术栈 -如烟。以下是正文:***“码农...

codingpy的博客 155

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

防御性编程(Defensive Programming)

garbage in ,garbage out (GIGO),作为一条计算机界的“俗语”,一条相对“学院派”的设计理念,我们或多或少都有听过。但在实际的工程环境下,GIGO已然成为了一种“不作为”、“缺乏安全性”的标志。所以我们要的是:不论进来什么,好的程序都不会生成“垃圾”。

weixin_42137269的博客 3246

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

软件系统设计-10-防御式编程

软件系统设计-10-防御式编程

SpriCoder的博客 2261

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

程序员为保饭碗,开始”防御性编程”...

???? 这是一个或许对你有用的社群???? 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事上“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

芋艿V 301

防御式编程(Defensive Programming)

防御式编程是一种安全的编程思想,本质上是要求开发人员对代码和线上环境报以辩证的态度和敬畏之心。它通过以下途径,从而来提升系统健壮性:提高工程质量——减少bug和问题;提高源码可读性—— 源码应该变得可读且可理解,并且能经受code review;让软件能通过预期的行为来处理不可预期的用户操作。作为一名优秀的开发者,不能将希望完全寄托于测试,而是在设计、开发阶段,对系统的异常和边界有充分的认知和考量,这是防御式编程带给我们的思考。

AlbenXie的博客 2294

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

“码农们工作中需防御性编程,避免写出优美清晰代码,确保即使被裁,留下的代码也难以维护。”近日,一则关于用“防御性编码”应对大厂裁员潮的消息在职场社交平台引发热议。简单来说,就是程序员写一些别人看不懂,只有自己能看懂的代码,故意把代码写的很烂,难以维护。因此,从某种程度上提高自己在公司的“不可替代”性。为什么会出现“防御性编程”呢?从大环境来说,最近,互联网行业的不少巨头纷纷宣布裁员,降本增效,这让...

fengdu78的博客 783

防御性编程,真的可以防止被裁吗?

做技术的都清楚,服务器的稳定性不可能达到100%这种理想状态,因此,调侃固然有戏虐,但不乏真实性,很多技术岗位平时看起来并不起眼,关键时刻就能体现出他们的价值,而这个“关键时刻”的代价有时候会比较大。BUT,作为技术人员,小L觉得,做人一定要有自己的职业操守,千万不要违法乱纪,主观性的“防御性编程”,轻则造成线上事故,对公司造成经济损失,重则违法,切莫踩红线。本意是指为了代码和系统的安全,特意在代码中增加了一些提升代码质量的保证,比如:参数校验,安全校验等等。节流”,可怜的程序猿惶恐不安...

Sebdhsk的博客 701

防御式编程

作为一名程序猿,或软件开发工程师,或技术工人,首要任务就是编写好代码(编写高质量代码)。那么编写好代码有什么用呢?靠编写好代码可以维持你的工作(基础),可以去影响你的同事和领导(让你同事和领导从代码中认为你是一个技术能力靠谱的人)(进阶),那么继续下去,你可能参与团队或部门或公司重要的项目或事情(高级),再下去,你就可以在团队和部门中提高你的技术影响力,从而你更有机会获得更多的资源(时间和人力)和更多的成就(升职和加薪)。当然,也有可能在你工作的环境中,编写好代码和编写坏代码结果一样。

wangjiang 2114
上一篇: 苹果“后继无人”?CFO即将退休再度上演“离岗不离职”戏码,公司深陷接班人荒!库克正在千方百计地挽留乔布斯的原班人马
下一篇: 第一批因ChatGPT坐牢的人,已经上路了
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值