人月神话札记:未雨绸缪

简介: 版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/45344605 前言:软件在设计阶段如果能够多考虑一些后续的维护工作,显然是非常棒的。
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/45344605
前言:软件在设计阶段如果能够多考虑一些后续的维护工作,显然是非常棒的。然而对于现阶段的我,或者很多程序员来说,未雨绸缪有很大难度,我们往往即使已经下雨了,也依然无法把窗户关紧,那么如果你想得到一些指导的话,请随我来,看看我能否品出一些味道来。

没有什么是永恒的,除了变化。

普遍的做法是,选择一个方案,试试看;如果失败了,没关系,再试试别的。不管怎么样,重要的是去尝试。

我觉得书中提供的这两个观点非常的棒,首先,任何事都不可能一成不变,敏捷宣言也提倡我们要拥抱变化。其次,在解决问题的时候,就是要不断的尝试,这个方案没有解决问题,就去尝试另外一个,直到你想不到别的办法,你再去求救别人。

实验性工厂和增大规模

现如今,很少有公司敢把没有经过beta测试的产品直接上线运行,那带来的后果是不可估量的。

当你完成了代码测试,就觉得程序万无一失,着急上线的话,往往打击是惨痛的。就如同诸葛亮认为马谡熟读兵法再加上跟随诸葛亮多年,派他去守街亭,结果被马谡的昏招教训的惨痛。

在好不容易开发出第一版产品后,即使它非常的差,我似乎很眷恋它,无法丢弃它。然而更好的做法是,在开发第一版产品的时候,要考虑在日后变更它,甚至丢弃它的可能性,至少能够对一些关键点留下后路。

唯一不变的就是变化本身

我个人就非常的讨厌一个方案确定下来后,再因为用户的需求变化而做出调整,从思想的源处,我似乎还没有接受这种观念,说实话, 我就是厌恶变化。

但是现实就是喜欢开玩笑,用户的需求会变化,软件的技术会变化,你的能力会变化,如果你在设计之初没有考虑到变化,那么当你不得不做出改变的时候,将会十分的痛苦。

举个例子来说,银行流水号,一般情况下,年月日时分秒+4位随机数就够用了,于是你可能把字段设计为long型,字段长度为18位。如果你这样做的话,我告诉你,你会后悔的,你最好设计为string类型的25位长度的字段,这样才能拥抱变化。

为变更计划系统

的确,变更就想小孩子的脸,如果你不准备好糖果或者奶水,那么一旦小孩子变脸,你将无法再控制他。那么对于软件设计,我们能做些什么呢?

  • 为产品迭代建立合适的周期和版本。
  • 采用更高级的软件框架和开源技术。

为变更计划组织架构

当只有一个新野的时候,刘关张没有选择的就要驻扎在一起;而当有了徐州和小沛,三人就要分开,但至少有两人还在一起;然后当有了荆州,并且了双线进军西川的时候,三人就要完全分开。而在此时,关羽要做的不仅仅是守荆州,同时还要单刀去赴会;张飞不仅仅要葭萌关大战马超,还要能使用计谋义释严颜;彼此在武力和智力上都要经得住考验。

那么在应对软件变更过程中,组织可以做些什么来应对呢?
  • 技术人员和管理人员具有互换性。(目前的我似乎已经习惯于在更多的角色定位中穿梭)
  • 在管理线和技术线上设置具有相同薪水的不同阶层,同时树立各自的威信。(每朝每代,文官和武馆都会站在不同的列队,然而层级是一致的,这样就确保文武百官各司其职,并且能够相互依赖)
当然最好的就是,每个人都能文武双全,像周瑜(三国演义是为了衬托出诸葛亮的牛,但事实上周瑜在智力和武力上都属于顶级水准)一样,这样可以使结果在面对变化的时候进行更快捷的调整。

前进两步,后退一步

对于广泛使用的程序,维护成本通常是开发成本的40%或更多。

缺陷修复总会以固定(20%-50%)的几率引入bug。

总体上能够前进一步,已经实属难得。结合我自身的经验就知道,在现实的软件开发以及维护中,每当修复一个当前问题时,总会有一定几率引入新的bug,我之前总是怪罪自己的不小心,但是后来我知道,能够快速解决问题才是王道。即使像诸葛亮也无法预知在他进行七星灯工作的时候,魏延在最后关头摆了他一刀。

前进一步,后退一步

用在修复原有设计上瑕疵的工作量越来越少,而早期维护活动本身引起的漏洞修复工作越来越多。

这个现象也普遍的发生,有些产品无论再怎么改进,他的水平也就维持在那样一个高度,不会发生质变。

那么最好的方式是什么呢,那就是重新再来一个。就如同中国的道路一样,没过一段时间,就要让人忍受马路的修修补补,然而并不能从根本上解决问题,一段时间过后,另外一处要重新打上补丁。那么如何解决呢,那就是放弃那个豆腐渣的公路吧,重新搭建一条新马路。
相关文章
|
缓存 NoSQL Java
【JetCache】JetCache的使用方法与步骤
【JetCache】JetCache的使用方法与步骤
9325 1
|
2月前
|
SQL 关系型数据库 MySQL
【全网最详细】Navicat下载免费版 | Navicat数据库管理工具安装图解(2026最新)
Navicat是一款专业、直观的数据库管理工具,支持MySQL、PostgreSQL、Oracle等十余种主流数据库。图形化界面替代命令行,轻松实现建表、SQL编写、数据导入导出与同步,大幅提升开发与DBA工作效率。(239字)
7676 132
|
2月前
|
人工智能 IDE 架构师
AI 编程工具唯一推荐 Claude Code:但实名认证的这道门槛,让人笑不出来
JeecgBoot AI专题研究 为什么 2026 年 AI 编码只推荐 Claude Code,以及最近实名认证政策带来的真实焦虑 一句话结论:不要再纠结了如果你是一个正在 2026 年做技术决策的开发者、CTO 或者架构师,正在犹豫 AI 编码工具该选谁,我的建议很直接:别想太多,先用 Cl
632 1
AI 编程工具唯一推荐 Claude Code:但实名认证的这道门槛,让人笑不出来
|
4月前
|
人工智能 运维 IDE
Claude Code神器:Manus同款文件规划法,价值20亿美元的工作流秘密
你有没有遇到过这种情况:给AI下个任务,聊了50轮后,它就开始"脑抽"了。 接口规范?忘了。 变量命名风格?混了。 你半小时前定的规则?直接抛到九霄云外。 你得一直提醒它,像保姆一样伺候它,效率低,还累。 但如果我告诉你,现在有个方法能让AI拥有"持久记忆"。 你只需要在项目里放三个Markdown文件,AI就会自动记录所有发现、避免重复踩坑、恢复断开的会话。 效率提升3
2202 9
|
2月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
44110 72
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
2月前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
9847 21