ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

代码烂却受重用?领导视角下的职场价值与自救指南

代码烂却受重用?领导视角下的职场价值与自救指南 “代码写成一坨屎却能受重用”这件事我在不同公司见过至少五回每次吐槽的同事都觉得“无解”我一开始也觉得无解后来踩过的坑多了才反应过来不是没解是我们一直用“技术人的评分标准”去衡量“领导心中的价值”尺子拿错了自然怎么量都不对。先说清楚这篇我不是来安慰你的。我既不会说“博士就是会包装”这种情绪话也不会灌“迟早露馅”这种毒鸡汤。我想做的是把“博士同事代码烂却受重用”这个现象彻底拆开从领导视角、职场博弈、需求管理、代码债务四个方向逐个解剖然后给你一套真正能落地的自救方案。里面包含大量我在项目里踩过的坑也会有具体的需求梳理模板和代码整改实操希望对你有用。1. 先别急着骂“博士”——领导眼中的价值排序和你完全不一样很多技术人有一个默认前提代码写得好 工作做得好。基于这个前提看到“代码烂”的人被领导看重第一反应就是“领导瞎了眼”。但实际上领导不是瞎是你们俩用的根本不是同一张评分卡。1.1 领导眼里的核心价值稳定、可控、向上能交代做过管理的人都知道一个需求从提出到上线中间变量太多了业务方说不清楚、产品方案反复改、排期突然被压缩、做一半发现技术方案根本走不通。在这种环境下领导最怕的不是代码烂而是“失控”——需求问东答西、进度一问三不知、风险藏到上线前一天才爆。博士同事哪怕代码写得烂只要他能在会上声音洪亮地讲出“我打算怎么搞、目前到哪一步了、什么时候能交付”领导对他的评价就已经站在“可控”这一档。而代码写得好但沉默寡言的同事开会只说“还在做”领导心里默认是“不可控”。这不是讽刺这是管理视角的日常。我举个真实例子。之前项目组里有个老哥代码功底明显高出博士一截代码审查意见几乎挑不出毛病。但每次产品评审他都一句话不说做完就默默丢到测试环境。结果季度复盘领导评价他“主动性不足、跨部门协作待提升”。博士同事呢每周主动写一个“Alpha版本进展汇报”邮件塞进各种数据图表哪怕功能只跑到40%领导已经在周会上拿他举例“项目进展顺利”了。1.2 “不了解需求就开搞”的另一面执行力被当成优点这点更气人但我们必须承认在一些管理者眼中“不了解需求就先动手”会被包装成“执行力强”“很有冲劲”。尤其是当团队里大部分人还在谨慎评估、迟迟不动手时博士已经把原型跑起来了——哪怕跑错方向领导看到的也是“速度”和“响应力”。这不是说“不了解需求就开搞”是对的而是说领导的价值系统里“快”本来就是权重很高的指标。尤其在向上汇报压力大的时候领导需要“有东西可以讲”的手下而不是“还在了解需求”的手下。我见过最夸张的一次需求方只给了半句话“要把用户访问数据做成看板”博士第二天就搭出一个半成品页面功能不对、数据也不准但大领导路过往屏幕上一瞥说了句“不错年轻人有执行力”。底层同事气得半死但在领导眼里这一瞥已经盖过了后面两周的返工成本。1.3 学历光环与“信任前置”博士身份是隐性的信用背书这个原因说出来可能不好听但真实存在。博士这个标签在非技术出身的管理者眼里约等于“聪明、靠谱、有钻研能力”。因为有了这层信任前置他讲出来的话天然比普通同事的可信度高一个档位。同样是说“这个方案可行”普通同事说出来领导可能会追问一句“你确认过了吗”博士说出来领导往往点头。同样是一个功能延期普通同事找理由会被当成借口博士找理由会被当成“技术难度确实大”。这种隐性信任让博士在领导那里的容错率比你高得多。明白这一点你会发现“无解”是一个假象。真正的问题不是“博士为什么被看重”而是“凭什么让领导也这样看重我”。这才是值得投入精力的方向。2. 代码烂不是玄学——“一坨屎”的四个典型技术信号光吐槽代码烂没有说服力。我做了几年Code Review发现“烂代码”烂得都很有规律。建议你对照这四个信号看看那位博士同事到底踩了哪几条好针对性下手。2.1 命名反人类、结构混乱代码可读性灾难烂代码第一症状是命名灾难。变量叫a、b、tmp函数叫dealData、doThing、handle111一个方法三五百行没有任何注释。你问他这个函数干什么的他能讲出前后矛盾的两个版本。可读性差带来的直接后果不是“看着不舒服”而是任何一个接手的同事都要花大量时间考古。每修一个Bug得先花两小时搞懂他在写什么。这种隐形成本是最致命的——它会拖慢整个团队的速度哪怕只有一个人的代码烂全体成员都会跟着买单。我曾经在项目里接手过一个遗留模块一个 800 行的函数里面嵌套了六层 if-else变量复用同一个名字七次且每次类型都不同。我第一遍读完大脑直接过载只能把代码一行一行抄到新文件边抄边加注释才勉强搞明白流程。那次之后我就立了规矩新代码不通过命名审查直接打回。2.2 代码解耦不存在的牵一发动全身的耦合地狱烂代码第二个特征是强耦合。模块之间没有任何边界函数直接读全局状态业务逻辑和 UI 混在一起改一个字段能影响六个页面删一个文件能让整个服务启不来。这种代码最怕的不是“烂”而是“没有人敢动”。你改了这里不知道哪里会炸于是大家只能无休止地在上面打补丁。补丁多了代码越来越厚越来越乱最后变成谁都不敢碰的屎山。如果你在产品迭代快、需求经常变的业务里工作这种耦合的代码简直是灾难中的灾难。日常开发里“代码解耦”这个词博士同事大概率听过但从来没动手做过。因为他解耦需要先设计、再重构、再回归测试这些环节在他“先跑起来再说”的节奏里全被砍掉了。结果就是上线一时爽维护火葬场。2.3 没有测试、没有监控风险全靠线上用户顶雷劣质代码的第三信号是几乎没有自动化测试。功能能跑就算完不写单元测试、不写集成测试甚至连基础冒烟测试都懒得做。上线之后也没有有效监控应用报错全凭用户投诉然后人肉排查。这带来的体验是灾难级的线上出问题你根本不知道是哪个模块、哪次改动引入的只能一台一台查日志一行一行对代码。排查成本高得离谱而且每次线上故障整个团队都得跟着陪绑——半夜被叫起来处理问题的往往不是写烂代码的人而是后续接盘的同事。不要觉得“没有测试”是小问题。在没有测试保护的代码库里上线的每一次改动都是在赌命。我一个同事被打回 Bug 的原因就是他改了一行判断条件结果把某个用户的老数据全部重置了。如果当时有单元测试覆盖这种低级错误不会留到线上。2.4 文档缺失最致命需求文档、规格说明书一样没有代码烂之外博士同事往往还有一个致命伤不写文档。需求阶段不输出需求规格说明书设计阶段不画流程图开发完不补接口文档交接时只有口头一句“你看看代码就懂了”。文档缺失的杀伤力比代码烂还狠。代码再烂你还能一行行读需求不落地成文档后面就是无底洞——需求从哪来的、业务方想要什么、方案为什么这么做、哪些边界被否过这些信息全部锁死在博士的脑子里。他一休假、一离职团队瞬间失忆。我见过太多团队上线半年后问当初需求是谁提的已经没有人说得清问这个逻辑为什么这样实现所有人面面相觑。这时候你会发现外包维护团队报价翻倍是有道理的——人家卖的就是从屎山代码里考古的成本。3. 想不被“不了解需求就开搞”带节奏吃透需求的三个落地步骤关于需求分析这个话题网上的方法论已经泛滥到令人麻木了什么五问法、用户故事、敏捷估算听着都对用起来全废。我挑了三个我自己一路跌撞才掌握的动作分享出来它们比很多方法论都实用——核心就一句把口头讨论变成白纸黑字的文档再用文档逼着所有人对齐。3.1 第一步把模糊需求翻译成“需求规格书”——哪怕只有一页很多同事听到“需求规格说明书”就发怵觉得那是产品经理的活。但我的经验是干开发的人最该自己养成的就是随手把需求“文档化”的习惯。你不用写几十页正式文档你只需要在自己的项目笔记里把需求转译成结构清晰的几条用户是谁谁在用这个功能解决他什么痛点核心场景在什么时间、什么状态、什么操作下会走到这里输入输出需要什么数据、经过什么处理、产出什么结果边界条件哪些情况不处理、哪些异常忽略、哪些数据直接丢弃这四条写清楚你对需求的理解就超过 80% 的人。我见过太多同事需求评审会上不打断下来就动手结果做出来的东西跟业务方脑子里的完全两样。一个简单的转账功能有人做出来没有手续费说明有人做出来没有重复提交校验全是需求理解偏差导致的返工。3.2 第二步给需求画边界明确“不做什么”避免无限扩张需求工作中的另一个大坑是“需求蔓延”。业务方刚开始只说了要一个列表页做完之后又说要筛选、要导出、要图表、要权限控制。如果你没有边界意识这些会全部演变成你的内存括约肌通过无休止的加班消化掉。写需求文档时我习惯专门开一个“不做什么”的清单。比如“本次只包含查询功能不做数据修改”“本模块不涉及跨部门审批”“性能优化单独立项不随业务开发摊派”。清单不是用来顶撞业务方的而是用来校准预期的明确不做什么能避免做出一堆没必要的功能也能在需求蔓延时有一个可以回退的锚点。3.3 第三步开工前和产品、业务方确认“验收标准”这是我最常被问到、也最想把经验甩出来的一个动作需求对齐不是把需求文档读一遍而是把“怎么算做完”聊明白。你需要和业务方确认三件事第一这个功能的成功指标是什么是访问量、转化率还是操作时长第二有没有可量化的效果指标第三验收时谁拍板是业务方直接判定还是需要走一轮数据测试。这个对齐动作看起来不产生代码实际上决定了你后面开发的靶向性。如果没有这一步你代码写得再漂亮业务方一句“不是我要的感觉”就全部推倒重来。让业务方在开工前就把验收标准签下字你的返工率会急剧下降。这比任何代码技巧都管用因为它从源头上降低了返工风险。4. 在烂代码和领导偏爱的夹缝里普通工程师如何自救吐槽归吐槽真正要紧的是怎么破局。我结合自己见过的实例给你列几条可执行的自救方案不保证让你瞬间翻盘但保证能让你从“憋屈的位置”挪到“有话语权的位置”。4.1 不要正面对抗用数据和事实说话而不是情绪很多人看到博士同事代码烂第一反应是直接开怼或者在评审会上当面指出。这在大厂里有个专有名词叫“送人头”——你也许说的是事实但在别人眼里这是内部斗争是搞事情。更有效的做法是把代码问题的“影响”量化成领导能听懂的语言。不要说“这个代码写得乱”要说“这个模块的 Bug 率是平均水平的3倍上季度因为这个模块返工了两次导致上线延期”。用数字代替形容词这是技术人向管理语言转译的第一步。我整理过一份“代码健康度周报”把每人负责模块的 Bug 数、平均修复时长、技术债务评分做成表格发给团队负责人。发了两期之后博士同事自己开始主动找我讨论重构方案了——倒不是他突然觉醒了而是每次周会数据摆在那他也不好意思继续硬撑。4.2 把埋坑变成机会主动写测试、补文档做那个“兜底的人”与其抱怨烂代码不如反手把烂代码变成你职业成长的垫脚石。怎么变主动把坑给填了。博士埋坑你去补测试用例博士不写文档你去补接口说明博士不上监控你去把报警加上。这些动作在同事眼里可能是在帮别人擦屁股但在领导眼里是“有担当”“能兜底”。我甚至见过一个同事专门去接别人不愿意接的维护性需求半年后顺理成章成了这个系统的负责人。不要觉得做这些事亏。你写的测试、补的文档带走的都是你对业务的理解和代码的熟悉度。这玩意儿跟解耦、重构一样都是自己长在身上的本领。等到你成了那个“离了你业务就转不动”的人你在话语权上的位置自然就上来了。4.3 建立自己的“可见度”让努力被正确的人看见很多工程师有一个致命误区只要我代码写得好领导自然会看见。真相是领导一天看太多东西了他根本看不见你写了多么优雅的代码他只看得见你主动汇报的频率。当然我不是让你学讨厌鬼每天去领导面前邀功。你可以做的是固定输出一份“模块进展日报/周报”简单描述做了什么、下一步做什么、风险有哪些。坚持一个月领导对你的印象绝对远超那些“只干活不吭声”的同事。我自己试过一个更狠的办法团队周会上主动把当前系统里最大的技术债列出来再提出一个 30% 时间的重构方案。领导对“有方案的人”通常态度是开放态度的。哪怕当场没拍板至少你给领导留下了“这个人看问题全面且有解法”的印象。4.4 当烂代码已经拖垮你绩效时两个可操作的抽身策略如果上面的动作你都做了博士同事依然在系统里持续埋雷而你已经因为他把大量时间花在救火上绩效被拖垮那就要认真考虑抽身了。第一个策略申请换模块。在周会或绩效沟通时明确表达“我想去更有挑战的新方向”把旧模块留给能容忍它的人。这是体面的退出不伤害关系也不背锅。第二个策略把工作交接清单做到极致。当你准备走人时请写一份极其详尽的交接文档包括系统架构、核心逻辑、已知坑位、未完成事项。很多人好奇为什么要给讨厌的人写这么细因为这份文档是你的作品集。面试时拿出来讲你会收获一份极具信任分的工作经历而不是一段关于“同事很烂”的职场恩怨。5. 把纸面理论落地一次“填坑化反”的真实复盘实录前面的内容理论性偏多我讲一个真实发生在我自己工作里的“填坑”经历。它完整展示了从“代码烂到想离职”到“靠填坑完成职场翻身”的全过程你可以直接参考里面的做法。5.1 现场还原一个数据库连接泄漏的“世纪大坑”那年团队接了一个数据分析平台主程是一位博士。他负责底层数据采集模块代码写得极其随性连接池不释放、异常吞掉不处理、线程直接 new 一个丢一个不回收。上线一个月后每天凌晨高峰必掉线。运维排查了两天把所有责任都推到网络波动上后来数据量越来越大系统直接在白天也崩了。部门头儿火急火燎开大会问谁能解决。博士低头不说话我因为之前私下读过他的部分代码隐隐感觉是连接没释放。我说给我两小时排查看看。结果一查果然代码里 execute 完连 connection 都没 close连接池被耗尽新请求全部排队最终服务雪崩。我把那几十行代码打印出来用红色笔圈出问题写了五分钟的排查报告然后顺手把连接管理改成了 try-with-resources还加了自动重连机制。5.2 复盘报告怎么写既解决问题又没有让任何人难堪那次故障处理后我写了一份《故障复盘与整改报告》分为四节现象描述、根因分析、修复方案、预防建议。封面写上“本文档由 XX 整理感谢 XX 提供模块背景”给足了博士面子。报告里我没有用“错误”“缺陷”这种词而是说“发现该模块连接资源生命周期未显式释放存在优化空间”。这不仅是情商问题也是安全策略——因为谁也不知道后面会不会有人为这件事找连带责任。我的目的是解决问题、展示能力不是树敌。领导看完报告当场在周会上表扬了“有人愿意深入底层排雷”。也就是从那时候起我开始接手底层架构相关的任务博士继续开发业务功能我则负责系统韧性。说白了他把坑挖出来我把坑填上填坑的人成了系统最不可或缺的人。5.3 顺手沉淀的护城河规范、检查清单、交接文档三件套处理那次故障后我干了一件极其出格的事私自建了一份“代码走查检查清单”覆盖了十个最容易埋雷的点——资源未关闭、空指针未判断、循环里操作数据库、异常被吞、线程未受管、密码硬编码、日期格式化线程不安全、大事务长时间持有锁、日志打全量对象、配置散落各处无统一入口。每次有同事提测我就用这份清单过一遍。被发现的问题列成表格贴到项目群人证物证俱在代码烂者也不好发作。这不是针对谁而是让“提质增效”这件事变得有规则可依。与此同时我每一段接手的模块都同步更新一页交接文档写清模块入口、依赖关系、已知坑位、修复记录。半年下来我的文档加起来有一百多页。那位博士同事再怎么“不了解需求直接开搞”只要有我的文档兜底团队就永远乱不到哪里去。这三件套就是我的护城河。哪怕有一天我要离开这个团队这套代码走查规范、排查清单、系统交接文档就是我跟下一家公司谈薪资时的硬货。你写代码的水平可能一时半会儿没法碾压博士但这些软实力是可以快速积累并且立刻生效的。6. 最后再分享一个小技巧把“烂代码”变成你成长的“错题本”个人体会很深的一条烂代码不是你的敌人它是你免费的“错题集”。每次看到值得吐槽的代码别只停留在嘴头上把它记下来分析为什么烂、怎么改、用什么模式替代。积累二三十个案例后你对“什么样的设计合理”会有一个极其清晰的认知。我自己就保存着一个“反面代码明细表”记录了模块名、问题描述、改进方案。面试时被问到“你踩过最大的技术坑”时我直接从明细表里挑出一个最经典的案例展开讲既展示了问题处理思路又说明了复盘总结能力面试官反馈普遍很好。遇到“代码烂却受重用”的同事最差的做法是把精力耗在嫉妒和抱怨上。最优的做法是把他踩过的坑、埋下的雷变成你手里的一张张经验卡牌。等到卡牌足够多你在任何团队里都是那个“懂的怎么避免重蹈覆辙”的人这种价值不依赖某个领导对你的看法它长在你自己身上谁也拿不走。如果你此刻正被烂代码坑得焦头烂额不妨先深呼吸把这个帖子里的方法挑一条试试看。哪怕只有一条也比你继续站在边上生闷气有用得多。我们没有义务替别人擦屁股一辈子的但每一次擦屁股都可以成为垫高自己的砖。这一点我试过实测有效。
返回列表