项目的进行比预想中还要更糟糕。项目开始了,可是T公司迟迟不能提供数据。这个供应链软件是以T公司的生产数据为基础的,如果压根不知道T公司的供应链设计,开发软件纯属空中楼阁。拖了一个多月才收到数据,可是数据错漏百出,前后矛盾。像T公司这种非IT公司,数据管理的水平往往非常低,数据库设计混乱,还有许多数据只存在于人工记录的excel里。每次收到T公司的数据,都要耗费许多时间清理。而且每次数据的格式都不一样,不能自动化处理。直到项目开始后第三个月,开发才正式展开。
在2026年初的今天,AI是IT行业最热门的议题。一个避不开的问题是:程序员会被AI取代吗?起码就目前来看,这还不太现实。
根据我的经验,实际动手写代码只占程序员工作的一小部分。大量的时间其实花在前期沟通上。无论是面对客户还是项目经理,程序员都需要把那些模糊、带有歧义的商业需求,转化为精确的、可执行的技术需求。
处理客户数据就很难完全依靠AI。举个简单的例子,客户数据经常存在缺失。比如一份产品全年的日销售额报告,偏偏缺了几天的记录。这几天的数据是直接忽略,还是用某个数值(比如当周的平均值)来填补?如果只是简单地要求AI「做一个统计按钮」,而不明确这些细节处理方案,背后隐藏的成百上千个类似的小问题累积起来,就会导致最终结果完全错误。
即便具体的代码逻辑可以由AI生成,但每一个处理细节的审核与决策,始终需要人工参与。除非客户完全不在乎软件的可靠性,否则这种逻辑上的「把关人」角色,目前依然无法被取代。
K在多年工作中认识到了一个真理:客户永远不知道自己到底要什么。在理想条件下,一个软件开发项目在一开始就定义好所有功能需求,然后就不发生变化了,程序员只需要按照合同手册写代码。可是现实中客户的需求总在变。每周和T公司开会时,T公司总是提出新的想法,好像改变功能只要用橡皮把旧代码擦掉,随便改改就行了。因为开发时间极其紧迫,K和L只能用非常急功近利的方式写低质量的代码,只要代码能正确运行就行,没有任何优化,也缺少灵活度,修改起来非常困难。这样不停的修修改改,进一步拖延了开发进度。
T公司的项目负责人员不是一个人,而是一组人,这些人之间还存在着办公室政治斗争。T公司这样的国际企业,每年都会给各个部分分配资金。一个经理P主导了xtech的外包项目,他尽力说这个项目的好话。T公司内部的IT经理Q想要让内部人员开发这个项目,就一直挑刺。P为了在T公司内部推进这个项目,跟xtech提出要求,每个月都要提供demo,好让P向上级展示。可是在产品开发中途制作可以展示的demo,往往意味着要分心开发一次性的半成品。比如说功能1还没开发完,但是非要展示,就只能做一个半成品workaround出来,demo之后就作废了。这种任务完全是讨上级开心的面子工程,同样延误开发进度。
AI之所以还无法取代程序员,是因为开发软件不单是跟机器打交道,更像是一场没完没了的人际拉锯战。AI确实能高效地执行清晰的指令,但它无法像人类一样,从客户那些含糊不清、甚至前后矛盾的表述中,梳理出真实的业务逻辑。程序员更像是一个经验丰富的翻译官,得先把那些混乱的念头理顺,才能动笔写下第一行代码。更现实的一点是,程序员还得在复杂的「人情世故」里寻找生存空间。在T公司的项目中,开发进度往往不仅仅决于技术难度,还取决于甲方内部的权力斗争。说到底,只要软件还是给人用的,只要背后还牵扯到人的利益与算计,中间就会充满沟通的错位和临时的变卦。只要这种「人的混乱」还存在,程序员作为桥梁的作用就不可替代。
在多重问题的作用下,在截止日期前完成任务几乎不可能。可是总裁根本不想听这些,他只想让下属找到一个方法可以完成合同。总裁反复说,xtech正处于生死存亡的危机时刻,如果年底的收购方案不成功,xtech就会有倒闭的风险。
一个似乎显而易见的方案是加班。但是法国有严格的劳动法,加班必须额外支付加班费,会让项目成本超标。K和L即使同意加班,公司会计也不会同意。这几乎成了一个僵局。xtech需要的是一个奇迹,在不延长工时的情况下,怎么能以双倍、三倍效率完成项目。所以这个会开了很久,一直讨论不出一个结果来。
最后总裁拍板作出了决定:雇佣一名自由职业程序员加入项目。对他来说,这不仅是为了增加人手,更是一笔完美的财务账。自由职业者的费用可以计入一次性外包支出,而不会像正式员工那样增加长期的薪酬负担。这样一来,公司的账目在投资者眼中依然保持着盈利的假象。至于新人的加入是否真的能缩短进度,已经不在他的考虑范围之内了。
在法国,严格的劳动法让老板无法随意压榨员工。作为一家外包公司,我们却在继续把任务转包给下一级的自由职业者。我曾当面询问部门经理,为什么不聘用本地程序员,而是招募东欧的自由职业者。他的回答非常直接:「因为可以随时让他们走人。」
人事迅速地展开了招聘。因为时间紧张,xtech开出的待遇又很一般,应聘的都是在职场上弱势的程序员:外国人和女性。他们在职场上的弱势不是因为职业能力差,而是因为受到职场歧视。外国人通常来自贫穷的国家,需要工作签证;女性则是因为性别歧视,科技行业的男女比例失调。
K负责技术面试。程序员面试非常古怪。面试中的问题是从来不会在现实中遇到的。比如说青蛙跳台阶,每次可以跳一阶,也可以跳两阶,问跳上N阶一共有多少中跳法,要在半小时内写出代码。还有更莫名其妙的智力题,比如烧绳子测时间。这些问题脱离实际,如果没有提前准备,很难现场想出答案。实际写代码时通常可以在网络上搜索解答,用不着冥思苦想。如果一个问题是有价值的,肯定有人已经解决过了,不需要重新造轮子。这种白板面试最终只是检测一个人有没有时间提前准备,记住答案。能回答这种问题的人不一定是好程序员。好程序员需要思维清晰,善于沟通,这些软能力是难以在一个小时的时间里测试出来的。因为美国的大公司喜欢搞这种面试,xtech就跟风做同样的面试。尽管K完全不相信这一套,还是只能硬着头皮准备这种题目,但是他在面试中不会刁难面试者,只要对方的思路清晰,看得出来确实有编程经验,就算回答不完全正确也算通过面试了。
这种「跳台阶」的问题,我曾在面试中亲身经历过,而且还是难度更高的变体:每次跳跃的阶数不再设限,可以从一阶,两阶,三阶一直跨到N阶。我无法理解这种题目有什么现实意义。在多年的职业生涯中,我极少需要亲手编写复杂的算法。作为一家应用开发公司,我们的工作重点是解决业务问题而非科学研究。实际上,如果一个技术难题足够重要,市面上一定已经有了成熟的方案。比起自己去写几千行代码,直接调用经过验证的开源函数库,反而是更稳定、更负责的做法。
最后xtech招聘了一个来自塞内加的女程序员N。N态度很认真负责,但是她要学的东西太多了,无法立即帮上忙。无论什么项目,在最后一刻增加人手只会帮倒忙。即便是技术水平高超的老手,加入一个新项目也需要培训。而培训必然占用了其他程序员的开发时间。新人一开始的贡献是负的,加入的新人越多,付出的额外时间成本就越大。
这个项目对于新人的难度在于xtech有一套自己的开发套件xdev studio,开发者必须熟悉这套私房工具。这套工具和xtech几乎同时诞生,xtech一开始想要把xdev studio商业化,但是一直没卖出去,最后只好自己用。一套私房开发工具,先不谈质量好坏,首先就提高了员工的培训成本。xdev studio的一开始的设计思路并不差,甚至可以说很有创意。但是随着十年来xtech的发展,xdev studio不断地变换组件和平台,一开始支持windows系统,后来又只支持linux;一开始有一套云平台的接口,后来又全换成本地部署。有些部件的选择本来无伤大雅,怎么选都行,比如说内置的数据库,居然也换了好几种。很多时候选择架构不是出于技术评估,而是为了市场宣传,比如说号称支持人工智能。在不断地追逐潮流的过程中,这套工具根本没有变得成熟,而是越来越四不像。产品代码里堆满了屎山。很多代码服务于于已经不存在的功能,可是xtech公司从来都没有时间优化代码,只是留在那里发臭。经常有些功能出现莫名其妙的错误,费了好大力气才查明原因,但是往往没有时间修复,因为那意味着把一大坨代码推倒重来。最后只能搞些治标不治本的应急方案。而这些本应该只存在一时的应急方案最后都变成了永久方案。
软件工程界有一条堪称金科玉律的布鲁克斯法则:向进度落后的项目增加人手,只会使进度更加落后。程序员的工作不是搬砖,它需要极高的默契和对复杂规则的深度理解。当新人N来到项目组时,她就像是一个刚踏入原始森林的探险者,而负责带她的老手们,必须停下手里砍树开路的工作,回过头来一点点教她如何辨认方向。这种培训不仅耗费精力,更打断了原本就紧绷的开发节奏。在赶进度的紧要关头,这种「磨合」带来的损耗,往往比新人产出的那点贡献要大得多,结果反而是越帮越忙。
最让人心累的,还是公司那套自造的开发工具。我总觉得这是在自讨苦吃,不仅培训难、维护难,想往外移植更是难上加难。曾经有客户直截了当地跟我反馈过:能不能直接用C++开发?因为对他们来说,标准工具更好维护。他们担心万一哪天我们公司垮了,这套只有我们自己会用的工具也就跟着断了气,那用它开发出来的项目也就彻底死掉了。
小公司的员工来来去去很频繁。过去十年里很多程序员离开了xtech,每次离开都带走了宝贵的知识。公司不在乎员工的个人成长。好像每个程序员都是可以随便替代的。而实际上程序员的经验很宝贵,很难招聘到恰好符合要求的程序员。就拿xdev studio来说,现在xtech公司内部几乎没有人对这个工具的所有方面都有深入的理解。一个资深程序员跳槽,要招聘两个程序员来顶替。法国的工资涨幅很低,每年不过是百分之二三,要涨工资就得靠跳槽。人事不愿意给老员工涨工资,反而愿意花大价钱招聘新人。而且程序员的工资有上限,事业心强的人都想转去管理岗。本来只是分工不同,可是管理岗却高人一等,尽管程序员才是真正生产产品的人。进一步地说,这个世界上没有著名程序员。尽管程序员是高薪群体,社会对程序员的认知并不高。
至于薪酬倒挂、管理岗高人一等,或者是外行领导内行,这些圈子里的常态也就不多提了。在法国,程序员确实也算高薪,但远没有美国和中国那么夸张,薪水的涨幅更是慢得惊人。虽然跳槽是涨工资的捷径,但跳上几次也就撞到天花板了。除非你技术过人,能一路做到CTO或首席架构师,可这种职位一家公司也就一两个坑,根本算不上是大多数程序员的出路。
评论
发表评论