欲速则不达,我们是否需要 放“慢”脚步
2009-07-29 22:14 敏捷的水 阅读(2941) 评论(35) 编辑 收藏 举报在软件开发时,经常会出现质量下降的时候,从我自己做过的项目来看,主要的原因是开发的太“快”了。这里的快不是真正的快,而是有问题的快。
这里可能有的人说了,我们要的是快速的反馈,我们要的是“敏捷”。这里我想说,如果只是给客户演示产品最终是什么样的(这只能是Demo),那么这种快,也许可以接受,但是我们很多时候做的都不是Demo产品吧。
我说过这个问题,但有人反驳说:“我们不需要过度设计”。然而,我的经验是我们设计不足的情况比过度设计要常见的多,为何设计不足?大概有一下几个原因:
- 程序员“说”时间不够。
- 程序员设计方面的知识欠缺。
- 程序员被要求快速的完成功能。
- 程序员受到太多干扰。
上面有两种情况都是太快了(怎么解决上面的问题,这里就暂不提了),举个Web开发的例子(以下的三层开发,都是指单个功能的,而不是指整个层全部完成才进入下一层,因为常常是增量开发):
- 代码全写到Code Behind里,然后就迅速的写界面,然后就不停的运行页面,发现问题,修改,最后完成功能。
- 典型的三层结构,写界面,写后台代码,写逻辑层,写数据层。由上到下。运行界面调试,修改。
- 三层结构,定义Model层,定义数据操作层,定义业务逻辑层,写界面。运行界面调试,修改。
- 三层结构,从底层到上层,每一层做充分的测试后再进入下一层,最后写界面。
上面的4种方式,第一种最先看到界面(但常常最后完成,因为代码有问题,调试修改很麻烦,应为代码多时很难定位错误),第二种次之,第四种最后。第一个迭代(或者说项目的早期)第一种方法最先完成,第四种方法最后完成。所以有不少人人习惯了前三种方式,然后被一种“高效率”的假象所欺骗,这往往会瞒过管理人员甚至是客户。但最终回过头来看,整个过程是“快、慢、更慢、项目停止”。我不是危言耸听,经常会出现这样:
(下面的四个迭代只是说明顺序关系)
- 第一个迭代递交功能了,但质量较差。
- 第二个迭代也递交了,但之前差的代码让我们慢了下来。
- 第三个迭代想递交时,发现差的代码越来越多,开发效率大大降低,客户开始受不了了。通过加班或者延迟提交,终于客户可以看到功能了。
- 第四个迭代刚准备开始时,发现客户反馈了大量的问题,当想修改代码时,发现代码已经一团乱麻,我们自己这个时候会说当时最么会这么些呢?由于什么什么原因太难改了,我们需要推倒重写。Oh My God,客户这个时候会说,见上帝吧,偶尔会有客户客气点说“下次再合作吧”。
通过上面的分析,有时侯我们太快了并不是好事,我们是否需要慢下来,为每一层的方法加上测试,一步一个脚印,而不是急于展示自己的“成果”呢? 我们每一步都走的很自信不是很好吗?
最后补充一下:
有以下几种慢,是不同于本主题说的慢,我一般认为是人品有问题。
- 一天应该做完的,三天都没做完的。
- 三天的活用一天做完,汇报说是干了三天的。
- 在客户的项目里实验各种新技术的。
- 晚上不知干啥,白天眯着眼睛干活的。
- 白天边上网,边聊天,边…, 边写代码的。
转载请注明如下内容:
博客园
王德水
扫码关注公众号,了解更多管理,见识,育儿等内容

出处:http://www.cnblogs.com/cnblogsfans
版权:本文版权归作者所有,转载需经作者同意。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2008-07-29 弹性工作制下的IT项目管理