2025年前,LLM确实能写代码,也确实能够处理一些小型或者玩具项目,但是在中等或以上规模的项目的时候,就会进入边界地狱。
人写代码起码是会在组织的过程中会思考架构,以及代码中的边界情况,也是在写的过程中去确定这些边界行为,去捋这些不同状态交杂的各种情况下一些细节的业务逻辑。
以前的LLM,如果你在你的文档中没说明这些细节,它会选一种比较普遍的做法来填充你的边界行为,最后在测试环节,你会发现程序有一大堆不符合预期的边界需要一个一个对齐,相比在古法编程的过程中,你会有一个全局观,你知道哪里可能存在什么问题,这边界是在哪一步上面的,我调整的这里会对其它地方的影响,这都在人的脑子中思考。但那个时候的LLM的不符合预期的边界,只能用地狱形容,你不知道有多少边界需要调整,而且你没了这段代码的全局观,你也不知道调整这里是否会影响任何一个步骤,是否会产生新的边界问题。
这个时候的vibe coding,需要人大量的去测试,把所有边界问题暴露出来,再不停的烧token去修。而且LLM还存在一定的幻觉率,老是构造不存在的逻辑,同样的逻辑不停的造不同的轮子,这些都需要各种skill甚至各种规则提示词去限制,问题它还是有那么点几率会搞错,所以它根本不可能在小型项目上落地,毕竟生产环境的代码是需要责任的。举个极端一点的例子就是,一个业务功能在操作上千万的价值的资产的时候,你很难不去仔细的审核LLM的代码,当它产生错误的时候,这个损失是需要你背锅的时候,你很难去相信LLM输出的那个对于你来说是黑盒子的业务。
但说实话,如果是在需要事无巨细地把这些边界都理清楚的情况下,LLM开发,跟人工开发没有什么不同,区别在于LLM帮码农输入代码罢了,很多坑还是要踩过才知道。
然后就是这个奇点的到来,LLM突然指令的遵循度,在开发上对中等程度的项目,你发现它突然有一定的大局观了,它开始很懂多个业务之间交杂的情况了,开始会对复合状态下业务边界进行处理了。虽然vibe coding仍旧是一种面向测试的开发,但是这种边界问题已经控制到一个比较能接受的范围内了。对于把整个开发测试的流程完全代理给LLM后,起码在中型项目中,能在较短的时候内,出一个看起来还可以的版本。
对于我们这些老码农来说,确实开发轻松不少,以前需要一个月开发的东西,现在在需求清楚,一天内就可以出个基本版本,然后调整测试一两天,三天,可能就能弄出一个成品。
其实对于老码农来说,这么长的古法编程过程中,其实是有意识到的,本身开发过程中,很多模式相似的业务,但是偏偏就是不能直接复制过来用,就算复制过来,为了契合新业务,需要对原代码进行大量的调整。而要把这个模式封装成控件,特别好用的控件,也是需要大量的时间和思考去改造的。现在LLM,这种任务已经能比较放心的交给它们,它已经能很好的处理这种模式变换的业务改写,甚至封装,甚至能帮你发现一些连你都注意不到的问题。现在LLM最牛逼的能力,其实是已经把CRUD的开发的模式已经完全融入到那堆参数中了。
其实大部分软件开发,都是某种模式罢了,LLM现在能很好的识别这些模式并根据提示词调整最后人想要的软件,先不论UI好不好看,起码已经是能用的级别了。
市场上大部分软件项目都很难超过中型项目的规模,一个人,我觉得普通人这辈子是接触不到几个能称得上大型的软件项目,特别是从0到1的这种。所以能解决中型项目,其实就已经处理了大部分软件的问题。
而且撇开某些专业领域的软件,大部分软件其实就是一种信息交互系统,无非就是对信息的增删改查来流通而已,模式基本有有限的,而且也已经被LLM学得七七八八了。
……,我感觉开发变轻松了,所以我的同行们也是这种感觉。以至于现在一定程度harness的规范下的LLM,可以让一个没任何软件工程经验的人,用一句话生成一个一定规模的软件或者游戏了,但对于中等以上规模的软件,它的局限也已经仅仅是留存于一些只能靠老码农通过经验决策的问题,成本控制、安全、方案、风险等问题和软件跟现实世界或者硬件交互时候的问题了,虽然这些东西需要大量经验的试错得来的。也就是说,软件工程师所做的东西变得更加专注在架构管理、方案取舍和责任上。
也因此,程序员这个职业在某种程度上看起来好像可有可无。因为一个玩具级项目或者小型项目,压根不需要用LLM做的人知道架构是什么玩意,而且说实话,规模小的软件或者运营,上述这些仅存的东西,有或没有,基本是没有区别的。因为就算废技术出身,只要耐得住时间研究,这些经验他们也能在踩坑中积累,只不过绕了远路,不像以前,你没这个知识你是完全没有办法下手的。
对于一个问题仅存在于绕路还是花钱不绕路之间,大部分人肯定选择前者,而且这个时间成本很多软件人和非软件人其实自己也意识不到,因为现在几乎没人讨论一个有技术基础知识的人和完全为空的人做同样一个需求消耗的时间到底相差多少,消耗的token会相差多少?以及这省下来的时间,到底值不值?
其实软件行业内的人转vibe最大的障碍是正因为懂太多,放不下权,担心的东西太多,所以反而就看产品产出的效率来讲,对于没跨越这道坎的软件人来说,反而大家都用AI,还没个外行人出成果快。
同时,这也确切地导致小项目和初级程序员的价值直接被LLM吞噬。但其实反而是这些中小项目,养着绝大部分人。
因为软件的门槛被LLM拉低了,导致很多隐形成本看起来很好跨越,也导致大部分普通人觉得我行我上,也确实很大一部分小软件也几乎没有门槛了,因此现在中小软件几乎处于丧失定价权的情况,甚至以一种你让你傻眼的方式在剥离你的潜在客户。
但软件从来都不只是软件,只不过现在想单靠软件来变现变得非常困难。开发软件的门槛变低,但软件的门槛并没变低,真正能变现的软件,靠的也不只是软件。
做了差不多十年的码农,看过很多软件项目死在中途,不是所有项目都能跑到盈利那一天到来……
现在有时间让我们这些埋头在软件中的人抬头看看软件之外的东西了。虽然可能有饭碗危机😊。
我相信,软件只要是人在用,就离不开人,需要有人是暴露错误,发掘需求,进而调整。