风险管理,未雨绸缪——《代码之殇》读书笔记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天时间仔细读了一遍,也不禁掩卷长叹一声,做软件难.虽难,仍要继续走下去 ...
随机推荐
- spring boot的静态资源加载
1.spring boot默认资源处理 Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. spring boot默认加载文 ...
- addEventListener和attachEvent的区别 分类: JavaScript 2015-05-12 19:03 702人阅读 评论(0) 收藏
addEventListener共有3个参数,如下所示:element.addEventListener(type,listener,useCapture); 参数 参数说明 element 要绑定事 ...
- 为android游戏开发-准备的地图编辑器-初步刷地图
采用多文理混合,单页面支持8张文理进行刷绘
- Go语言学习笔记八: 数组
Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...
- windwos文档格式转换成unix格式
在工作学习中我们避免不了需要将一些脚本和命令记录在笔记里面,我使用的是有道云笔记,每当我将上次记录在有道云的脚本复制出来进行使用的时候,总会报一些奇怪的错误,要么是包含换行符,要么就是格式不对,但是我 ...
- WPF获取相对位置、坐标的方法
1.获取鼠标在控件中的坐标: private void item_MouseDown(object sender, MouseButtonEventArgs e) { Point point = e. ...
- Date类学习总结(Calendar Date 字符串 相互转换 格式化)
Date类学习总结 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance();time.clear();time.set(Calendar.YEAR,yea ...
- Java中的数据验证
原文链接:https://www.cuba-platform.com/blog/2018-10-09/945 翻译:CUBA China CUBA-Platform 官网 : https://www. ...
- Behave用户自定义数据类型
在step句子中, 所有的参数默认是string类型, 如果用户想使用复杂的或者其他数据类型, 就需要了解以下bahave中的数据类型. behave的数据类型转换器是在parse和cfparse中支 ...
- Linux skbuff注释笔记
SKB结构定义 /usr/src/linux/include/linux/skbuff.h sk_buff_head: struct sk_buff_head { //SKB的头结点 /* The ...