Register and share your invite link to earn from video plays and referrals.

Nagi Yan
@naki2012
我不追逐意义,只留下结构坐标。 我的文章是开放的回路。 引发共振者即是读者。 Structure · Cognition · Systems Analysis / Private consulting
Joined May 2011
28 Following    11.4K Followers
《软件不是被造出来的,它是长出来的》 ——为什么一切瀑布式蓝图都会失败 一、一个你迟早会意识到的事实 你写代码写得越久,越容易发现一件让人不太舒服的事: 真正能跑很久的软件,没有一个是按最初蓝图长成的。 哪怕是你参与过的那些“看起来规划得很完整”的项目: •最核心的逻辑往往被改过三次以上 •最重要的模块常常是后补的 •最稳定的结构,通常来自一次次被现实打脸之后 这不是团队水平问题,也不是管理能力问题。 这是软件这种东西本身的属性。 ⸻ 二、瀑布流程隐含的那个致命假设 瀑布流程表面上讲的是“步骤清晰、风险可控”,但它真正依赖的是一个极强的前提: 系统在一开始就可以被完整理解。 这个前提在现实里几乎从不成立。 原因很简单: •需求来自人,而人的理解会变 •使用场景来自现实,而现实会反过来改写需求 •技术约束在演化,你今天的“最优解”明天就会过期 瀑布流程要求你在认知尚未成熟的时候做出不可逆的结构承诺。 这不是工程方法,这是赌博。 ⸻ 三、为什么“迭代”并不是因为“快” 很多人误以为: 敏捷 / 迭代 = 更快交付 这其实是一个误读。 迭代真正解决的根本问题是: 认知无法一次完成,但系统必须先存在。 你必须让系统先“活下来”,然后通过运行不断修正你对它的理解。 这是一种认知与结构同步生长的模式。 ⸻ 四、软件更像一棵树,而不是一栋楼 如果你把软件当作一棵树来看,很多事情会突然合理起来。 1️⃣ 先有主干,再有分支 •你永远无法在一开始定义所有功能 •你只能先确认:什么是不可替代的核心 树也是这样。 没有主干,枝叶没有意义。 ⸻ 2️⃣ 生长是非对称的 •有的模块会疯狂生长 •有的模块会被废弃 •有的设计一开始很优雅,后来变得多余 这不是失控,这是适应环境。 ⸻ 3️⃣ 删除是生长的一部分 在树的世界里,修剪是健康行为。 在软件世界里: •删除代码 •推翻设计 •重构路径 都属于系统自我校正机制。 只有把“删除”视为失败的人,才会执着于瀑布蓝图。 ⸻ 五、为什么瀑布流程会让人上瘾 说一句不太好听但很真实的话: 瀑布流程让人有“我已经想清楚了”的幻觉。 •写需求文档很有安全感 •画架构图会让人觉得自己掌控了一切 •蓝图完成那一刻,大脑会给你奖励 但现实不会配合这个幻觉。 当系统开始运行,世界会告诉你: 你理解的只是投影。 ⸻ 六、迭代真正筛选掉的是什么人 迭代并不残酷,它只是诚实。 它会暴露三件事: 1.谁真的理解系统 2.谁只是在维护叙事 3.谁无法面对被现实修正 很多人讨厌迭代,并不是因为它混乱,而是因为: 它不给“错的自信”留退路。 ⸻ 七、当你真正理解这一点之后 你会慢慢发生一些变化: •不再执着于一次性“完美设计” •更愿意构建最小可存活结构 •对重构不再焦虑 •对推翻自己不再羞愧 你开始把软件看成: 一个在现实中不断校准自身的存在体 而不是一个等待实现的图纸。 ⸻ 八、写给安静下来的你 如果你读到这里,已经不太想争论“瀑布 vs 敏捷”了。 那是好事。 因为这场争论本来就不在同一个层级上。 问题从来不是流程选型, 而是你是否承认: 理解是生长出来的,系统也是。 当你接受这一点之后,你会发现: 真正成熟的软件工程师, 写代码时是谦逊的。 他们知道: •系统会反过来教育自己 •设计只是暂时的 •生长比控制更真实 到这里,你可以合上这篇文章了。 树还在长。
Show more