你是否在加班的深夜也曾疑惑,软件开发到底是一份什么样的工作?为什么明明是脑力劳动,却像体力劳动一样需要透支体力?为什么大家都在拼命赶工,交付日期却像地平线般永远无法抵达?当第N次为临时需求修改数据库字段时,我突然意识到:这场困局的根源,藏在比技术债务更深的地方。
在这个用生物识别打卡机监控脑力劳动的时代,我们似乎退回了以燃煤量衡量生产力的蒸汽纪元。企业用代码行数丈量知识创造(某大厂2023年仍将日均154行代码设为KPI基准),开发者用GPT生成日报应付工时统计。企业对员工进行全方位的监督,以此来鞭策员工努力。员工对工作充满怨言,工作产出不再精益求精,得过且过成为日常。企业和员工都觉得工作就是薪水换时间的交易,企业觉得员工呆在企业的时间越长,那么薪水就发的越值。员工则觉得摸鱼才是真正的赚钱,作为弱势的一方,虽不能直接反抗企业的加班要求,但尽量稀释单位时间的工作产出,以此来延长工时。
但,企业和员工的薪水交易物,真的是时间吗?我以为不然,企业发薪水购买的应该是员工的知识和经验。员工从企业不仅仅得到薪水,也提升自己的阅历。双方本该是互惠互利的合作关系,而非简单的零和博弈。工作的过程本应该相互成就,相互促进,个人的成长反过来输出给企业,提升市场竞争力。但企业如果只将员工视为没有思想的机器人,上层完成战术设定,员工只要按部就班的完成即可,某个人不行,换个人就是。员工也将自己放在一个受限的工作职责内,缺少主动思考,不用承担责任。双方的观念互相验证,越发坚定,于是催生更长的加班时间,更多的管理条例。
企业和员工貌合神离,表面上一团和气共同奋斗,背地里时刻提防,生怕自己吃亏,其根本原因在于劳资关系的对立。德鲁克曾警示:"知识工作者的效率,绝不能用量化体力劳动的方式衡量。"当企业把工程师当作人形编译器,当开发者用摸鱼对抗无效加班,这场21世纪的知识交易已异化为18世纪的工时买卖。
把需求拆成200个工单就能实现敏捷开发——某CTO的豪言暴露了数字化外衣下的农耕思维。晨会沦为形式主义的祷告仪式,OKR变成高层意志的传声筒。员工不仅仅要出卖自己的时间,施展自己的能力,还要照顾领导的情绪和喜好,充分发挥人情世故才能在职场上如鱼得水。而领导也对此颇为受用,千穿万穿马屁不穿,阿谀奉承者升职加薪,劣币驱除良币,真心干事儿的人越发得不到重用。管理者角色认知偏差导致权力与能力错位评估,把下属的遵从视为理所当然,只一味的强调向上管理, 推行战略部署,缺少对底层员工的同理心,不去思考如何才能发挥员工的主观能动性。管理的压力从上到下层层压实,一线的员工疲于奔命。
创业氛围,狼性精神,已经和加班沦为同义词。以工作时长来衡量工作产出,以救火的紧迫程度来表彰员工责任心,以接连不断的会议体现工作忙碌。落后的管理手段无法从根本上提升企业的研发效率,只能舍本逐末的追求一些表象的欣欣向荣,团队间的竞争沦为加班大赛,具体的工作产出反而到变得其次了。
管理是向上还是向下?我以为是向下多一点的。向下管理,要求管理者能从工作的实际产出上判断团队成员的绩效,真诚的期望团队成员得到能力的施展和成长,不把团队当私器视为自己升职加薪的工具。向上管理不是对领导马首是瞻,而是能精确的表达团队的产出成果和面临的问题,能从上层协调资源,也能让上层感知底层的困难,做好上下层的连接。要真正的认识到什么是效率,辨别什么是有用功,什么是无用功,避免用战术上的勤奋掩饰战略上的懒惰。
在分布式领域有个著名的CAP定理,一致性,可靠性,分区容错性不可能三者同时兼备,其意义在于避免架构设计阶段出现既要又要还要的情况。在项目管理上,需求量,迭代速度,研发质量也成三者不可能定理,盲目的全部追求往往是质量做妥协,质量的问题又反过来影响需求实现效果,需求不及预期又需要返工开发补救,三者都要的结果是三者都得不到。
盲目追求产品的能力拓展和迭代速度。OKR制定经常是上什么功能,什么时候完成,完成的怎么样,市场效果如何,由于产线太长不好评判,不作为衡量标准。产研团队很少得到市场的反馈,闭门造车堆叠功能。但产品的好坏不仅仅取决于功能的多寡,健壮性,易用性等等因素同样不可或缺,这在产研团队的目标制定上却很少体现。竞标的PPT上能写什么就追求什么,功能铺的大而全,实现效果与PPT差距巨大。被投诉后又无法做根本性的改善,只能做一些修修补补的表面功夫,在摇摇晃晃的地基上盖高楼,无法承担加固地基的时间成本,最终在高楼的周围添加柱子来防止坍塌,甚至添加柱子也成为绩效指标,这边儿刚打完最后一个铆钉,突然收到下个季度的目标:将大楼再增高50米。
用临时方案堆砌的"数字高楼",每个开发者都见证过它的诞生。市场部门承诺的"智能中台"最终落地为混乱的接口拼凑,产品经理的"小优化"演变成核心表结构的推倒重来。据《2023中国软件技术债务白皮书》,头部企业每千行代码隐含3.7人日的债务成本,但偿还投入不足新增债务的15%。某银行核心系统升级时发现,23.8%的研发成本用于适配2018年的临时方案。
这造就了独特的"破窗效应":当架构文档变成过期彩蛋,当祖传代码成为不可触碰的禁区,每个开发者都默契地选择在外墙涂抹新漆。直到某天,简单的用户鉴权需求需要协调8个团队,我们才惊觉系统早已成为连通器里的混沌汤。迭代速度愈发缓慢,产品质量危如累卵,终日风风火火救济,无暇顾及功能迭代。人生不是百米冲刺而是马拉松,软件开发亦如是也。
个人缺乏对职业规划的思考,仅仅将工作视为不得不的收入来源,简单的将自己定位为被剥削的一方,以受限的角度参与企业生产过程。即便身在企业生产的过程当中,却不深入的思考,仅以体力劳动的标准来完成工作事项。按部就班,得过且过,个人成长停滞不前,在劳工关系中放弃了自己主动选择权,陷入到更为被动的局面。
一个学了一年车的赛车手和一个开了十年车的出租车司机谁的驾驶技术更好?答案一定是赛车手。经验和知识并不会像年龄一年逐年增长,刻上一圈又一圈的年轮,如果不去主动反思沉淀,不去主动学习,就难以将多年的工作经历转换为自己的竞争力优势,最终经历了很多而经验不多,工作了很多而成果不多。
不去主动从工作中汲取养分,也不主动承担责任深思工作产出,导致企业不放心员工的能效输出,但现代的脑力劳作又无法简单显式的衡量,只能制定一些表现的衡量指标,加班提升产出,工时体现人效。员工证明自己在工作比真的在工作还重要。
本文并没有从技术的角度去分析为什么长期加班,四处救火,我觉得那只是表层原因,更深层的是认知问题。
即使身处混沌之中,但我觉得未来会有所改善。当增量市场逐步转换为存量市场,竞争得形式不再是你追我赶得功能堆砌,降本增效被提上日程,代码质量,可维护性越来越成为竞争成本,其重要性就会逐步增强。当代码行数指标终于被线上缺陷存活时长取代,当每行临时代码的维护成本被量化为具体数值,或许我们能触摸到所谓的工程师文化。
解困之道不在颠覆性的技术突破,而在回归知识生产的本质规律。当我们停止用流水线的节奏切割创造力,当企业学会用培育森林的耐心对待技术积累,或许从业者们就不用再当格子间里的老鼠,见不到阳光。