项目变更程序-项目变更流程
项目刚上线的时候,开发人员盯着屏幕傻等半小时,结局页面还没加载完,浏览器就提示“超时”。
那时候我站在会议室角落,手里捏着两张纸,一张是那个被毙掉的方案,另一张是今天刚在群里发的紧急通知。大家盯着我,我低头看了一眼手里的纸,没讲话,只是把纸拍在桌上。 “咱们今天这版方案,”我指着上面乱糟糟的草稿,“连个根本的测试用例都没有,连个‘为啥选这个’的逻辑都没理顺,光是一堆代码堆在一起。” 那一刻,空气突然凝固了。 实际上这事儿之前也没啥复杂的审批,就两个人在争论。甲方说:“三个功能点,咱们周一下午前搞定。”乙方那边盯着大模型生成的报告,心想“哇,这个架构文档多漂亮,几千字,全是图灵奖级别的结论”,然后憋不住就拍了大模型屁股,结局一大坨代码直接甩出来,全是废话,根本没法跑。 我随手把那本厚厚的《架构设计方式论》往他桌上一顿,然后拿着笔在那张速写的白纸上乱画,画了三天,画得像个原始人,连个连续的“流程”都没画成,全是断断续续的线条。 “你看这个图,”我指着上一版,“连个进件入口都没有,用户如何进来?你说这是‘全栈重构’,网站要重做吗?那主要功能还得练手啊。” 乙方老板听完脸色铁青,眼神里的光瞬间熄灭了。“那你说如何办?人家说‘先上线,再重构’,但我手没有,代码写不完,软件全是坏的。” “那咱们就‘先上线,再重构’,”我顿了顿,语气平平稳稳,“并且目前的软件,坏了能修,得先用个临时方案顶着。我们先把这个好办的‘注册登录’跑起来,哪怕它不大方,人能用就行。剩下的我们慢慢聊。” 乙方老板沉默了两秒,然后从包里摸出一支笔,在速写本上画了一个圈,那圈里写着:“先活下来再说。” 实际上那时候我就想不通,为啥非要改成原盘算如此复杂?把需求拆得支离破碎,把文档做得花里胡哨,最终结局就是上线了个垃圾,连个响都没响过。 这事儿让我反思得挺深。 咱们大厂那会儿总说“敏捷”,我说“敏捷”就是到了项目启动撕论文、大模型生成方案、然后直接扔给我们一堆烂代码。
那时候我们当作“快”就是“快”,结局脑子一热就写成了“快”,最终只能是“慢”上加“快”,项目干到一半直接崩了。 那个工作周,我拉了个群,群名就叫“救火队”。群公告里只有一条话:“要是没有紧急需求,别动。
要是有,咱们按优先级排序,绝不为了赶进度牺牲质量。一切以交付为准。” 群里人气挺旺,大家聊着吐槽那大模型生成的废话文档,说它“别看快,但不准,会误导项目方向”。我也启动吐槽,说“大模型说的都是云端的道理,落地就是屎”。 但哪位也没想到,这“救火队”干到第二天,就发现群里那个“优先排序”的优先级表,写得跟天书似的。 我找来了那个负责技术架构的同事,让他做最终裁定。
那同事看着那堆文档,一脸茫然,然后指着那个“项目经理”那个职位,突然破口大骂:“他是哪位?这个项目经理根本就是个‘高级项目经理’,他的权限只有‘改写需求’,连‘验收’都没有!。” 那一刻,全场静悄悄。 原来,项目最大的坑,往往不是技术没水平,而是管理流程彻底断掉了。所谓“敏捷”,实际上就是“没有流程”。
没有审批流,没有文档流,只要有人愿意写代码,就能够直接改需求。 故此,咱们搞项目,不能光靠大模型吹牛,还得靠流程定生死。 比如那个“注册登录”的功能,甲方说务必要在三分钟内上线,乙方说接口复杂,咱们得先让个 Demo 跑通。我就拉了个临时群,叫“只讲代码的群”。群里不许讲话,只能发代码链接。 我发了一行:`POST /api/login; Body = {"username": "user123", "password": "123456"};` 群里沉默了三秒。 那人接着发:`if (user == "admin") return 401; else return 200;` 然后在那儿敲了一整晚,代码像流水账一样,全是死逻辑,根本不会处理异常,也没做任何边界检查。 我拿着那笔代码,走到会议室门口,看着大家,说:“那我把这段代码删了,重新来。
这次,咱们把‘登录’拆成三步:第一步,验证用户存有;第二步,校验密码强度;第三步,生成 Token 并回。每一步都要有文档,每一步都要有测试。” 那人差点把笔扔出去:“行啊,那咱们就按这个来。
反正赶明儿也没人记得大模型生成的东西,咱们自己记就行了。” 这次行动,彻底转变了局面。 我们重新画了图,这次图挺好办,画了个漏斗:用户进来 -> 输入密码 -> 校验 -> 回 Token -> 跳转。 测试环节,我们请了个实习生,叫小张。让他拿各种奇葩的账号,比如“空字符”、“带 emoji 的密码”、“连字符”,全撞了一遍。 小张吭哧吭哧地敲了待会儿,最终指着屏幕说:“老板,这个‘带 emoji 的密码’,数据库里存不住,得算一个特殊值。” “那你帮我写个规则,”我接过话茬,“规则就是:要是密码里有 emoji,就去掉那个 emoji,然后重新存,再试一次。” 小张照办,待会儿就把测试报告发给我。 那一刻,我看着屏幕上绿色的数字,心里那堵墙仿佛就慢慢退下去了。 实际上项目变更这事儿,跟写代码一样,最怕的就是“过度设计”。甲方总爱说需求不清楚,实际上怕的是对方后期改需求时,他负责的东西变了。乙方总爱说大模型生成得快,实际上怕的是文档忒厚,害得大家没工夫看细节。 咱们搞项目,得学会“及时止损”。
那个“先活下来再重构”的策略,今天看来真不冤。先让软件能跑,哪怕慢点、笨点,能有个雏形就好。后面慢慢补,总比目前空荡荡的好。 我也得回去给大模型立个规矩:“别写假大空的架构图了,写出来能跑通就行。别写几千字的文档了,写个结论就行。
记住,代码是活的,文档是死的,并且文档一旦写完,往往比代码更难改。” 最终,咱们把那个“先活下来”的决议,又拍成了正式文件。 从那赶明儿,项目里启动流行一种对话方式: 甲方:“这功能,能不能先做个 Demo?不要那么复杂,起码得让用户能进。” 乙方:“行,那咱们就定个 Demo 标准,接口要整个,逻辑要对。别搞那种‘原型阶段’,连个测试用例都没有,那叫‘为了演示而演示’。” “明白,”我点头,“那咱们就按这个标准来,流程上确保所有人都知道,测试环节务必有人参与。” 实际上,只要咱们能把流程立住,大模型再吹牛也没用。出于程序不管多大,人一旦动不了,它就变废铁。而人一旦动不了,整个项目就完了。 故此,搞项目,得学会和机器吵,更要学会和流程斗。 别怕费事,流程就是用来过滤“为了赶进度而牺牲质量”的人的。流程就是用来确保“大家往同一个方向走”的。 下次再遇到那种“大模型生成方案”要么“甲方临时改需求”的时候,别急着去辩驳。先停下来,看看流程里有没有漏洞,看看哪位能帮咱们把那个“先活下来”的共识立起来。 毕竟,咱们干活到最终,不是为了证明自己能跑得快,而是为了让大家都能用得上,都能用得起。 那个“注册登录”的小 Demo,别看目前看着有点简陋,全是断断续续的线条,但也真是第一次,让一群人看着屏幕上跳出来的数字,真正松了一口气,心里那块石头落地了。 这就是咱们项目变更程序,有时候不讲究大道理,有时候就连有点“土”,但却是保命的大道理。 毕竟,在项目里,没有人知道明天会形成啥,故此流程务必充足硬。
只要流程硬了,大模型生成的废话文档就彻底没用了,出于没人敢随意改代码。 我也得回去给大模型立个新规矩:“赶明儿别写几千字的架构文档了,写个结论就行。
记住,代码是活的,文档是死的,并且文档一旦写完,往往比代码更难改。别写假大空的方案了,写出来能跑通就行。别为了演示而演示,那样最终就是垃圾。” 然后,把这事儿正式记录在案,让大家都能背下来。 这就行。 (完)
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
