如何避免屎山代码

Wait 5 sec.

你是否也曾在项目中被“屎山代码”拖慢节奏?本文将带你掌握识别与预防技巧,从需求拆解到节奏控制,一步步教你如何在协作中避免技术债堆积,让你的产品更稳、更快、更好用。作为一个非码出身的产品,对于vibe coding难免又爱又恨。爱的是,我终于可以不用从hello world开始入门到放弃,而是终通过三两句的自然语言输入,就可以完成以前半天拉人开会,半天催程序员做事的工作,这怎么不算一种魔法?恨的是,自己验收自己的代码的时候,发现有几个功能需求一开始没想到,要改……作为产品,我第一次体会到程序员memes背后的泪,然后才发现自己让AI写出了难以修改的屎山。那么究竟如何避免屎山代码呢?有幸,最近在播客《十字路口》寻到了一种心法上的解决方案。播客采访了一位资深的软件开发者刘小排r。通过这期内容,我学到了避免屎山代码的简单方法论:写完整需求文档,先讨论,再写代码。揭秘 Claude Code 榜一大哥:一个 AI 创业者如何把工具用到极致|对话刘小排写完整的需求文档,不正是产品经理日常最基础的工作吗?详细来说,刘小排避免“屎山代码”的三步法是这样的:第一步:撰写详尽的需求文档(PRD)不是在聊天框里打一行字,而是使用飞书、Notion等、markdown编辑器等工具,撰写一份包含背景、目标、功能详述、非功能性需求(如性能、安全)、界面原型/流程图的完整文档。这样的做法可以强制自己思考。书写的过程迫使需求提出人自己先想清楚每一个细节,提前发现逻辑漏洞和潜在需求。你自己就是第一道过滤器。同时,详细的文档为AI提供了无比清晰的上下文,它不再需要“猜”你想要什么,最终文档本身就是后续验收AI产出方案的基准。第二步:与技术方案(AI)进行“评审”第一步完成后,我们应该将写好的PRD交给Claude Code,但不是直接让它写代码,而是给它一个指令,例如:“这是XX功能的需求文档。请你作为技术负责人,首先输出一份实现这个功能的技术方案,包括:建议的架构、需要哪些模块、模块之间的接口设计、可能的技术选型、潜在的风险和难点。我们将对此进行讨论。”这个阶段迫使AI从“代码工人”转变为“架构师”,聚焦在产品设计上,宏观地思考问题。与此同时,AI提出的技术方案可能会暴露出人在PRD中没考虑到的技术难题或不可行之处,尽可能多的清理掉掉屎山代码可能生长的温床。第三步:基于共识的编码当技术方案评审通过,确认“算无遗漏”之后,再给AI下达最终的编码指令。刘小排的核心思想可以概括为一句话:“像管理一个顶尖程序员一样去管理AI,而不是把它当成一个许愿机”。先写文档再讨论最后编码之所以有效,是因为它将“产品定义”和“技术实现”这两个阶段严格分开了,模拟了专业软件公司的开发流程。这与嘉宾十年的猎豹软件公司产品+程序员的经历分不开,他的软件开发和技术经验已然变成了他和AI交互的方式。一个案例纸上得来终觉浅。作为产品经理,为什么日常的写了那么多需求文档,最后还是做出了屎山呢?带着这个问题,我让deepseek给生成一个简单的需求:用户输入邮箱和密码,系统检查邮箱是否已被注册,如果未被注册,则将用户信息存入数据库。然后让deepseek分别生成了“屎山”代码和“非屎山”代码。这个是他的回答“优”在何处?安全:参数化查询杜绝SQL注入;密码加盐哈希处理。清晰:函数和变量名一目了然(get_db_connection, hash_password);有清晰的文档字符串(docstring)。健壮:使用try-except捕捉异常;使用with语句自动管理资源(自动关闭连接)。可维护:数据库配置被分离到config.py中,易于修改。功能模块化(数据库连接、密码处理、业务逻辑各司其职)。如果需要换数据库(如MySQL),主要修改get_db_connection函数即可,业务逻辑register_user几乎不用动。可扩展:现在要添加新功能(如注册时发送欢迎邮件),可以很容易地在不改动现有核心逻辑的情况下添加。接下来我让AI生成一份符合清晰需求定义的PRD,他的回答如下:基于我开始喂给AI的Prompt,Deepseek也生成了AI评估的方法。这回轮到我懵逼了,因为我发现并没有办法判断这份PRD是否存在过度设计,也没办法判断他给我的评审案例是否真实有效。不仅因为我的架构能力不成熟,也是因为一开始提的“用户注册”这个需求是一个随机的伪需求,实际上我从未真正从业务的角度成熟完整地考虑过用户注册流程,就像一个要完成老师作业的大学生,随机做了一道纸上习题。因此,这套“避免屎山”方法论要求的是提出需求的人类有相当的经验来洞察AI提供的方案,的评审AI的评审是否正确。这也正是有经验的职场老鸟配上AI变得无限进步,没经验的普通毕业生大概率拔剑四顾心茫然的原因。当然拔尖四顾心茫然的还有很多老板,而这又是另一个故事了……这揭示了AI时代一个核心的转变:AI并没有降低对人类专业能力的要求,而是转移了能力的重心。以前,能力体现在怎么做(How),现在更体现在做什么(What)和为什么(Why)。真正的钥匙在播客的后半段,嘉宾刘小排r在说完方法论之后并没有像我一样给出代码案例,而是给了另一种方法:读文档、看功能、结合实际的工作,再应用。AI作为工具只是拉近了我和产品落地的距离,而这些文档、功能、我写出来的每一行Prompt、思考的结果,和认真的做完并不断迭代试错,才是避免屎山代码的真正途径。“不是天生会的,而是用出来的”——这才是乃避免“屎山”代码的真正补完之道。本文由 @未来眼球 原创发布于人人都是产品经理。未经作者许可,禁止转载题图来自Unsplash,基于CC0协议