风险管理,未雨绸缪——《代码之殇》读书笔记II
这次的内容主要是关于软件开发过程中的风险管理,包括项目用时估计、产品的发布与更新、承诺兑现的重要性。
①项目用时估计
有人会质疑项目用时估计的可靠性,因为就事而言,这次的任务可能和上次不一样了,开发环境也许同样发生了变更;就人而言,执行者应该比上次更有经验,完成的速度理应更快;就不确定性而言,之前遇到的麻烦事可能不会再次出现,也可能这次会遇到新的问题。
其实,这些都不重要。根据个人经验并结合作者的观点,只要是难度相当的任务,实际完成时间不会相差太远,都可以控制在时间估算的误差百分比范围内,只要开发环境没用重大的变化。不过,开发环境的改变使得你有必要去适应新的环境和新的问题,所以,实际的效率也不见得会比以往的高。至于不确定性,随机事件的总体服从均值分布,只要你自己不认为这次和上次不一样,实际花费的时间也会是差不多的。
不仅如此,正确的估算是十分必要的,它能帮助你提前发现一些风险,降低随机性的影响,同时还能给客户带来一种潜在的信任感。
②产品的发布与更新
“了解发布产品的最好途径就是早发布,常发布。要让每个程序的‘构建’都是可发布的‘构建’,每天构建,且每星期至少对整个系统重新构建一次。定期发布技术预览版及测试版。定期发布将使产品逐步更新修复。早发布,常发布,生命在于运动。”
我们开发软件不是纸上谈兵,也不是做给自己欣赏的,一款成熟的软件产品最终是要发布到市场上的,是要给用户使用的。既然如此,我们就应该严格保证每个版本,哪怕只是测试版也要是能够发布的。通过发布,才能及时得到用户们的最新反馈情况和建议,才能高效的对产品进行改进而使用户更加满意,这样产品才能逐渐成长并完善。如果花费大量时间去开发自认为满意的终极版本而在此之前从未发布,则出现问题以及不能适应用户需求的风险就大大提升了,这是我们应极力避免的。
③承诺兑现的重要性
软件工程师经常犯的错误是在遇到非人所愿的问题时延期交工。为了避免纷争,他们往往并不提及延迟的事,而是匆忙赶工,牺牲质量,草率应付计划。然而事情可能并没有想象中这样简单,因为你可能只是某条链上的一个环节,个人的延期必将使得整条链延期,结果就是招致客户的不满甚至整个产品的失败。
承诺的兑现是与他人合作的基本原则,我们不能过了承诺规定的时间而将关键性任务向后无限拖延。制定承诺的作用在于防止某些可能发生的问题,排除一些不切实的想法和“死亡进军”的可能。
风险管理,未雨绸缪——《代码之殇》读书笔记II的更多相关文章
- 代码的未来读书笔记<二>
代码的未来读书笔记<二> 3.1语言的设计 对Ruby JavaScript Java Go 从服务端client以及静态动态这2个角度进行了对照. 这四种语言因为不同的设计方针,产生了不 ...
- 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
在android开发中找出当前界面对应的Activity,步骤如下: 新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法,通过getC ...
- 《编写高质量代码--Web前端开发修炼之道》读书笔记
前言 这两周参加公司的新项目,采用封闭式开发(项目成员在会议室里开发),晚上加班到很晚,所以没时间和精力写原创博客了,今天就分享下这篇<编写高质量代码--Web前端开发修炼之道>读书笔记吧 ...
- 《Mastering Opencv ...读书笔记系列》车牌识别(II)
http://blog.csdn.net/jinshengtao/article/details/17954427 <Mastering Opencv ...读书笔记系列>车牌识别(I ...
- <读书笔记> 代码整洁之道
概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...
- <读书笔记>软件调试之道 :从大局看调试-发现代码存在问题
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- 编写高质量代码改善C#程序的157个建议读书笔记【1-10】
开篇 学生时代,老师常说,好记性不如烂笔头,事实上确实如此,有些知识你在学习的时候确实滚瓜烂熟,但是时间一长又不常用了,可能就生疏了,甚至下次有机会使用到的时候,还需要上网查找资料,所以,还不如常常摘 ...
- 读书笔记--<<会说话的代码>>
三天看完一本书,说出来我都不信,不过我还真是史无前例的做到了, 现在分享一下我的收获,希望大家拍砖,共同讨论一下. <<会说话的代码>>一书是我们BJDP小组里的王洪亮老师的一 ...
- 读书笔记:《梦断代码Dreaming in Code》
读书笔记:<梦断代码Dreaming in Code> 拿到<梦断代码>书后,一口气翻了一遍,然后又用了3天时间仔细读了一遍,也不禁掩卷长叹一声,做软件难.虽难,仍要继续走下去 ...
随机推荐
- 关于class的签名Signature
举例1: public class Test05<A, B extends java.util.List<String>, C extends InputStream&Ser ...
- linux一键安装php环境
1.下载一键安装包: http://pan.baidu.com/s/1o6lWyeu 2.unzip -x sh.zip chmod -R 755 sh ./install.sh 等待半小时左右 3. ...
- wap尝试调取app(网易新闻为例)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- surgemq 添加ssl
surgemq添加ssl 1.MQTT协议 消息发布订阅功能的消息队列协议 报文组成: 固定报头(控制报文类型)+可变报头(协议名称.协议级别.连接标志.保持连接)+有效载荷(clentId+will ...
- 容器挂载volume出现“Permission denied”的问题定位解决
使用如下系统(centos)运行容器后,在容器内的挂载目录内执行ls命令出现了“Permission denied”的错误 Linux localhost.localdomain 3.10.0-862 ...
- Integer.parseInt() 和 valueOf()
parseInt("1")返回的是int类型,所以如果想要将一个String类型的数字串转为原始类型int ,建议使用这个方法, 而不是使用 valueOf("1&quo ...
- 基于Java的简易表达式解析工具(二)
之前简单的介绍了这个基于Java表达式解析工具,现在把代码分享给大家,希望帮助到有需要的人们,这个分享代码中依赖了一些其他的类,这些类大家可以根据自己的情况进行导入,无非就是写字符串处理工具类,日期处 ...
- ARM的体系结构与编程系列博客——ARM体系变种
ARM体系变种的简介 有人会很奇怪一件事情,ARM居然会变种,不会是基因突变了吧,呵呵,其实ARM变种通俗一点来讲呢,就是ARM突然具备了一种特定的功能!并非是基因突变哦!ARM是reboot好不好? ...
- centos6安装docker,先升级系统内核
安装docker,其他的源可能导致你的内核和docker的版本不一致,需要将系统内核升级至3.x 查看当前系统版本 cat /etc/issue 查看当前内核版本 uname -r #uname -a ...
- RabbitMQ.NET In Window Service
工作中要求使用RabbitMQ,以Windows Service 模式启动,中间有遇到一些问题,网上大部分博客有误导倾向, 在这里做一个简单的记录,以免后面的人走坑: 1. 自动重新连接,不需要手动处 ...