什么是价值

在《禅与摩托车维修艺术》一书中,作者罗伯特 · 波西格塑造的主人公斐德洛一直在探索什么是良质(quality)。斐德洛认为,“良质,就是那些你喜欢的东西”。在软件开发领域,我们也引入类似的观点。

什么是价值?我们会基于价值决定要做什么,以及不做什么。我们会先做价值高的事情,而将价值低的事情放到后面去做。那么,这里的价值指的是什么呢?

简单来说,价值就是“我们想要的东西”。

有些浏览器的卖点就是打开网页速度快,那么价值就是速度快。

对于12306而言,价值就是用户能订到票,界面丑陋,体验差劲都是其次。

如果我们的产品开发速度太慢,我们决定精简一些功能,加快速度,这里,价值就是开发速度。

选择价值,就是选择那些对我们重要的东西。
所谓价值,就是那些我们想要的东西。

同时构建功能特性与基础

软件开发好比建筑,造一个房子,想要打下基础,软件开发也一样。

每个功能特性都需要有坚实的设计基础,或者说坚实的“基础架构”。

如果对于每个必需的功能特性,我们都能构建出小的版本,同时还为它们打下足够坚实的基础,那么我们就能够做到最好。

零缺陷与良好的设计

缺陷相当于拙劣的功能特性。它使项目进展变得不确定。只有消除缺陷,我们才清楚真正完成了哪些功能特性。

修复缺陷会带来不确定的时间延迟。随时发现缺陷随时修复,这样才能清楚知道完成了哪些功能特性
 

随时随地的测试你的软件

延迟交付产品,而且交付的还是有缺陷的产品,这会让我们看起来很蠢。我们最好还是别这样。

实际上,并没有什么别的好办法。在每一次迭代结束时,我们都必须尽可能地使软件没有缺陷。要做到这一点,唯一的方法就是测试。

测试不但没有减慢开发速度,反而使其变得更快!这是因为测试可以使我们犯更少的错误,同时使错误更快地被发现。

软件始终保持良好的设计

在改变设计的同时保持其良好状态,这通常被称为重构(refactoring)

若不能保持设计处于良好状态,轻则影响项目的进度,重则导致项目失败!

测试和重构结合起来,使得增量式开发成为可能。

能力是提高速度的前提

每个创业团队都想走得更快。拼命往前跑说不定会出bug(缺陷)、犯错误,累死团队,到头来更耽误进度。

为了加快开发速度,我们能做的最有价值的事情就是提高团队成员的技能。这一投入很快就能带来以下回报:浪费在修复缺陷上的时间会更少、开发过程会更加顺畅。不要将迅猛当作高效。速度最快的团队总是平稳、优雅地前进。

团队的实力是速度的上限。要想更快只有一个秘诀:找到更好的人才。

精简功能

简洁比复杂更难做到。你必须努力厘清思路,才能让一切变简单。但这终究是值得的,因为一旦你做到了,就能创造出奇迹。
——史蒂夫·乔布斯

假如你把策划中的4个功能砍掉2个,开发速度立即就会变快一倍。本来计划中一个半月才能完成的版本,现在三周就可以发了。再说,早期产品功能少是好事。

苹果公司为了创造出质量卓越的产品,会选择性限制产品功能。iPhone第一次出现时就是一款非常卓越的产品,尽管它缺少了一些你期待在智能手机中出现的功能,如应用程序不能组织起来归入文件夹,不能在同时运行的应用程序之间切换,也不能在手机锁定时进行拍照。难道真的是苹果公司的天才们一时糊涂正好忘了这些产品功能么?不太可能。他们很清楚在产品一开始就填入许多功能,只会延误发布时间,降低产品质量,而且他们知道在产品更新时可以再加入功能的。所以2007年第一款iPhone发布时,苹果公司并没有获得多少商业人士的追捧,那些欢欣鼓舞的用户更多是娱乐型消费者。

Gmail之父Paul Buchheit曾这样说过:“如果你的产品是伟大的,那么它就不需要是一款在各方面都做得很好的产品。” Buchheit在这里所要表达的核心观点是,你需要将少数几件事情做到最好,而不要想着每一件事都要做得完美。

重构

我们需要稳步前进。为此,需要时刻保持设计的清晰和整洁。而为了做到这一点,则必须进行重构。

构建一个功能特性所需要的时间大致来自以下两个主要方面:一个是它本身固有的难度,另外一个则是将它加入现有代码时可能的难度。对于功能特性固有的构建难度,开发团队一般会估计得比较准确。因此,使开发速度变得不确定或者慢下来的就是将功能特性加入现有代码时可能的难度。我们称这一难度为“劣质代码”。
如果我们允许代码的质量下降,那么有些功能特性可能很容易就被加了进来,而另外一些看起来相似的功能特性则可能陷入劣质代码所形成的曲折通道中。这导致两个看起来相似的任务所需的时间大不相同。
为了保持进度的平稳,我们必须避免这种曲折通道;而当这样的通道确实存在时,我们需要做的就是使它变直。

如何快速交付高价值的软件相关推荐

  1. 实战Practice丨拉动DevOps持续交付的三匹马 —— 快速交付实践总结与思考

    本文节选自<金融电子化>2018年3月刊 作者:中国银行软件中心  付大亮  2018-04-03金融电子化金融电子化 本文节选自<金融电子化>2018年3月刊 作者:中国银行 ...

  2. 《规范敏捷交付:企业级敏捷软件交付的方法与实践》——3.11 观点总结

    3.11 观点总结 本章描述了规范敏捷交付过程框架所基于的核心敏捷方法的根基.它们之间有很多相似之处,但每个方法又都有一些不同.肯·施瓦伯,Scrum的创始人之一,曾经将敏捷方法比作象棋比赛.这里面只 ...

  3. 支持软件快速交付的高效能团队组织架构模式

    目录: 一.团队即交付 二.流式设计团队拓扑&改进团队交互来促进创新和快速交付 三.应用实践和持续改进,保持上升趋势 一.团队即交付 1.高效能交付团队的特征和问题 增强:包括但不限于以下示例 ...

  4. 有了实例化需求,交付高质量软件不再是空谈

    引言: 去年12月, infoQ采访了<实例化需求>作者,在采访中作者给出了一些阅读本书的建议和原则,帮助大家在软件开发项目中采用实例化需求去创建活文档.实例化需求是一组方法,它以一种对开 ...

  5. 以人为本 | 如何保证高质量的软件交付

    软件团队想要保证高质量的软件交付,一般情况下会想到以下几点: - 多的测试人员 - 高薪资.福利 - 各种质量管理工具和手法 - etc- 我们有大量的实际经验表明,这些方法往往没有达到预期值,更有甚 ...

  6. 快速找出高价值用户,3分钟学会RFM模型分析

    在众多的客户关系管理分析模式中,应用最广泛的就是RFM模型,它可以通过一个客户的近期购买行为.购买的频率以及花了多少钱三项指标来描述客户的价值情况. RFM模型用户分群是介于千人千面的个性化运营和未加 ...

  7. 吐血整理 | 快速学习大厂们的软件案例经验

    大家好,我是煎鱼. 前几天,很怕冷的煎鱼去了趟北京,参加了为期三天的全球软件案例研究峰会(TOP 100). 同时记了大量笔记,整理后分享出来,希望对大家有所帮助,拓展眼界非常重要. 内容比较多(已经 ...

  8. 快速交付 敏捷开发的特点_什么是敏捷开发?它有什么特点

    原标题:什么是敏捷开发?它有什么特点 随着软件开发技术的不断发展,现在出现了很多种不同的开发模式,其实敏捷开发已经成为现在很多企业开发应用程序都想要选择的开发方案.那么什么是敏捷开发呢?下面一起来了解 ...

  9. 高通Camera 软件工程师的成长之路

    本文以个人的工作学习经历来描述一 Camera 软件工程师的披荆斩棘之路,时间从大学开始,以至任职于高通 Camera 软件工程师结束,杂以本人学习过程当中的一系列学习笔记和博客文章,绝对是干货满满, ...

最新文章

  1. java生成流水号001_可变数据如何批量生成?
  2. opencv中图像的基本结构 类型的定义
  3. Java JNI浅析(一)
  4. python3纵向输出字符串_Python 3.x 格式化输出字符串 % format 笔记
  5. AES地址栏传参加密
  6. python有趣小程序-小码王分享python一些有趣的小程序
  7. array_filter移除空数组
  8. datatable高效写入mysql_如何将DataTable批量写入数据库
  9. 嵌入式系统应用开发—FPGA开发板—一位全加器仿真测试
  10. 嵌入式linux快速入门
  11. 会计考计算机是WPS还是Ms,wps和office的区别 wps和office哪个好
  12. 大一第一学期c语言考试题及答案,大一c语言试题及答案.doc
  13. 网站seo优化到底该怎么做?
  14. IDEA修改静态资源(html)不重启,即时生效
  15. 为什么z-index在众多标签中失效
  16. asp 收集的资料了,为了方便查阅。
  17. 详解eclipse如何配置tomcat
  18. html怎么垂直对其,html – 垂直对齐方法
  19. 课程学习之计算机网络
  20. 20221229今天的世界发生了什么

热门文章

  1. 【ARM】制作Linux 文件系统
  2. Qt中调用thrift
  3. php 3d animation,基于three.js的酷炫Canvas 3D线条动画特效
  4. 关于富士康N连跳事件的思考
  5. 十二个鸡蛋三次找出坏鸡蛋
  6. 消防设备电源监控系统在苏州某工业区项目的应用-安科瑞耿敏花
  7. VS Code编译file not found问题
  8. GitHub代码阅读神器,你值有拥有!
  9. Java--关于ROUND_HALF_DOEN五舍六入
  10. 李明--linux教学视频 笔记 CH1----5