技术文章
上周五晚上十一点半,科兴科学园D栋的灯光依然亮得刺眼。我合上MacBook,揉了揉发酸的眼睛,走出大厦。南山区的夜风带着点闷热,我扫了辆共享单车,往白石洲的方向骑。房租3500的城中村握手楼,虽然采光差了点,但好歹离公司近,能省下每天两个小时的通勤。
回想起半小时前,我的Leader老李把我叫到会议室,指着屏幕上我写了三天的一版订单结算模块,叹了口气:“建国啊,你这代码写得像艺术品,但咱们这是做业务,不是参加代码选美。明天就要提测了,你这过度设计导致联调进度落后了整整两天。”
当时我真的很委屈,甚至有点想怼他。但冷静下来后,我意识到,我可能真的病了——得了一种叫“代码洁癖”的绝症。
我是一名Java开发,坐标深圳。去年十月,在经历了三年外包的毒打后,我终于跳槽进了一家做跨境电商的甲方公司。薪资从外包时的15k涨到了现在的22k,虽然每个月要还花呗、交房租,剩下的钱只够偶尔去海岸城吃顿好的,但好歹算是“上岸”了,有了归属感。
在外包那三年,我的信条是“能跑就行”。为了赶进度,什么大段复制粘贴、硬编码、几千行的上帝类,我都干过。那时候看着自己写的屎山,心里其实很鄙视自己,但没办法,外包的KPI就是交付速度,没人关心你的代码优不优雅。
所以,刚进甲方那会儿,我就像是久旱逢甘霖,决定要把以前欠下的“技术债”连本带利补回来。我发誓,我写的每一行代码都要符合规范,每一个类都要遵循单一职责原则。
这种“洁癖”在入职的前几个月达到了顶峰。
上个月,产品提了一个需求:根据用户的会员等级和订单金额,计算不同的折扣。这在外包,我可能一个if-else或者switch就搞定了。但在甲方,我的“洁癖”犯了。
“这么写太不优雅了,以后加个新等级还得改代码,违反开闭原则。”我心里嘀咕。
于是,我引入了策略模式,定义了一个DiscountStrategy接口,然后为普通会员、白银会员、黄金会员分别写了三个实现类。接着,为了管理这些策略,我又搞了个DiscountContext,配合Spring的@Autowired List注入,还加上了一个工厂模式来根据会员等级获取对应的策略。
看着IDE里整整齐齐的包结构,看着那完美的UML类图,我内心充满了成就感。我觉得自己就是一个真正的架构师。
然而,现实很快给了我一巴掌。
在代码评审(Code Review)时,老李看着我这几十个小文件,眉头紧锁:“建国,这个折扣逻辑其实半年内都不会变,就算变,也就是改个计算公式。你搞这么复杂,新人接手看得懂吗?调试的时候还要在十几个文件里跳来跳去,排查问题多费劲?”
我试图辩解:“李哥,这是为了以后的扩展性考虑,符合设计原则……”
老李打断了我:“YAGNI原则(You Aren't Gonna Need It)了解过吗?不要为了还没发生的未来,去增加现在的复杂度。代码是写给人看的,顺便给机器执行。你这样写,机器是爽了,人要看吐了。”
那次会议后,我被迫把代码重构回了简单的if-else,虽然加上了清晰的注释。那一刻,我感觉自己的“技术信仰”崩塌了。
那段时间,我陷入了深深的自我怀疑和焦虑中。
每天下班回到白石洲的出租屋,看着窗外密密麻麻的握手楼,我心里很不是滋味。我甚至开始怀疑,是不是甲方根本就不重视技术?是不是他们只想要一堆能跑的屎山?
我当时的内心独白是:“我花了三年时间从外包逃出来,就是为了写出更优雅的代码,如果连这都不让,那我跳槽的意义是什么?”
我变得有些偏执,在写代码时,为了一个变量的命名能纠结半个小时;为了决定一个工具类放在哪个包下,能查阅半天资料。结果就是,我的开发效率直线下降,原本一天能写完的CRUD,我硬是拖了两天。
那阵子,测试小姐姐经常跑来催我:“建国哥,你的接口怎么还没好呀?”我只能尴尬地赔笑,心里却急得像热锅上的蚂蚁。差点想放弃,甚至怀疑自己是不是根本不适合做甲方开发。
转机发生在上上周五的部门技术分享会上。
老李做了一次关于“AI辅助研发提效”的分享。他并没有讲什么高深的大模型原理,而是直接演示了如何用AI工具把那些繁琐的、重复的“脏活累活”外包给机器,从而让程序员把精力集中在核心业务逻辑上。
“代码洁癖的本质,是我们在细节上过度消耗了精力,而忽略了全局的交付价值。”老李在PPT上打出这句话时,我感觉被狠狠击中了。
分享会后,老李把我叫到工位旁,拍了拍我的肩膀:“建国,你的技术底子很好,对代码有追求是好事。但你要学会利用工具,把‘完美’交给机器,把‘思考’留给自己。”
那天晚上,我没有像往常一样去抠代码细节,而是开始认真研究老李推荐的几个AI工具。这一试,彻底打开了我的新世界大门,也治好了我的“代码洁癖”。
我首先尝试了 Bolt.new。以前接到一个后台管理的需求,我总想着先把前端页面搭得漂漂亮亮,组件封装得完美无缺,结果往往在UI调整上浪费大量时间。现在,我直接把PRD扔给Bolt.new,让它帮我生成一个全栈的React+Node.js原型。看着它几分钟内就生成了一个能跑通CRUD的页面,我突然意识到:第一版代码的根本目的不是“完美”,而是“验证”。只要业务逻辑跑通了,后续再优化也不迟。Bolt.new让我放下了对“第一版必须完美”的执念。
接着,我把目光转向了IDE里的 通义灵码。以前写单元测试是我的一大痛点,为了凑覆盖率,我往往要手写大量Mock数据,极其枯燥。现在,我直接在IDE里选中方法,让通义灵码一键生成单测。它不仅能覆盖正常分支,连一些边界异常条件都能考虑到。看着测试覆盖率从40%瞬间飙升到85%,我长舒了一口气。把这种机械的、追求“覆盖率数字完美”的工作交给AI,我终于可以把精力放在核心业务逻辑的Review上。
在处理一些复杂的业务文档和接口设计时,我开始使用 智谱清言。以前写接口文档,我总想着把每一个字段的描述都写得像文学作品一样严谨,导致开发时间被严重挤压。现在,我把数据库表结构和核心逻辑丢给智谱清言,让它帮我生成标准的Markdown接口文档,甚至还能帮我润色PRD里的业务规则。它强大的逻辑梳理能力,让我从“文字洁癖”中解脱出来,文档只要清晰、准确、无歧义就足够了,没必要追求辞藻华丽。
最让我震撼的,是用 Qwen(通义千问大模型)来做代码重构和架构评审。以前我接手老员工的代码,看到几千行的“上帝类”,就忍不住想把它大卸八块,重构得面目全非。现在,我会把老代码喂给Qwen,让它帮我分析代码的坏味道,并给出重构建议。更绝的是,当我在纠结某个技术选型时,我会让Qwen扮演不同的架构师角色,进行多轮辩论。它不仅能给出客观的对比,还能结合我的业务场景给出最优解。有了Qwen这个“外脑”,我不再需要自己死磕每一个细节,而是站在更高的视角去审视代码。
通过这些AI工具的辅助,我的开发模式发生了翻天覆地的变化。
我不再纠结于一个变量名是叫userList还是userInfoList,通义灵码会给我最符合上下文的建议;我不再为了凑设计模式而设计模式,Bolt.new让我明白快速迭代才是王道;我不再为了文档的完美而熬夜,智谱清言帮我秒出标准文档;我也不再一个人闭门造车,Qwen成了我随时在线的架构师导师。
我慢慢发现,我的“代码洁癖”并没有消失,而是被升华了。
以前的洁癖,是“形式上的洁癖”,追求代码表面的优雅、设计模式的堆砌;现在的洁癖,是“本质上的洁癖”,追求代码的可维护性、业务的契合度、以及交付的高效性。
真正的代码洁癖,不是写出别人看不懂的“天书”,而是写出别人一看就懂、一改就顺的“白话”;不是为了炫技而过度设计,而是为了业务的长远发展而适度抽象。
上周五,也就是老李批评我的那周之后,我又接到了一个类似的需求:根据商品类目和促销活动计算最终价格。
这一次,我没有一上来就画UML图,也没有搞什么策略模式+工厂模式。我先用通义灵码快速生成了基础的CRUD代码,然后用Bolt.new搭了个简单的前端原型和产品确认交互。在确认业务逻辑不会频繁变动后,我写了一个结构清晰、注释详尽的if-else,并用Qwen帮我Review了一遍,确保没有逻辑漏洞。
下午提测,测试小姐姐一次通过,连个Bug都没提。
老李走过来,看了看我的代码,笑着点了点头:“建国,这次这代码写得不错,看着舒服,改起来也方便。有进步啊。”
那一刻,我长长地舒了一口气。我知道,我终于跨过了那道坎。
从外包到甲方,从15k到22k,我不仅实现了薪资的跨越,更完成了技术心智的蜕变。代码洁癖并不是坏事,它代表着我们对技术的敬畏和追求。但我们要明白,代码只是工具,业务才是目的。
在这个AI技术爆发的时代,我们不应该再把自己当成“代码打字机”,去和机器比拼谁写的代码更规范、更完美。我们应该学会利用Bolt.new、通义灵码、智谱清言、Qwen这些强大的AI工具,把繁琐的工作交给它们,把宝贵的精力留给业务思考、架构设计和用户体验。
夜深了,白石洲的城中村渐渐安静下来。我洗完澡,躺在床上,听着窗外偶尔传来的几声狗叫,心里却前所未有的踏实。
明天又是新的一天,项目还要继续迭代,需求还要继续评审。但我不再焦虑,也不再偏执。因为我知道,我已经找到了属于自己的节奏。
给所有还在“代码洁癖”中挣扎的兄弟们一句劝:放下对完美的执念,拥抱AI,拥抱业务。当你不再为了代码而代码时,你才能真正体会到编程的乐趣。
共勉。

评论 0