zoukankan      html  css  js  c++  java
  • 精益软件开发七原则之我见

    精益软件开发七条原则

    前段时间看完了《Lean Thinking》这本书,学到很多东西,也有很多感触。这两天又在网上看到一个老外根据自己的理解诠释七条原则,但他的解释中有不少曲解之处,所以产生了写本文的动力,也来按照自己的理解阐述下这七条原则,感兴趣的朋友最好去看原著。

    • 消除浪费
    1. 任何不增加价值的工作都是浪费;
    1. 没有人会去看的文档是浪费,不符合客户使用场景的需求是浪费,开发出来的特性不是用户最急需的是浪费,工作转交是浪费;所有的Bug都是浪费;任何多余的东西和步骤,都是浪费;
    1. 尽量减低复杂性,减少重复劳动;仅做必要的工作;
    • 增强学习
    1. 软件开发的过程是个不断发现,不断学习的过程,这个过程中会不断涌现出很多新的知识和新的信息,充分利用这些信息将帮助团队把软件做得更好
    1. 通过尽快开始尝试,快速失败,获取信息并调整这种做法,能有效增强我们对未知事物的学习;
    1. 不要过早框定自己,保持灵活性,以便获取新知时可以及时调整;
    • 延迟决策
    1. 延迟决策意味着在获得足够的信息之前,不要草率下决定,或者在你不得不决策的时候(影响商务目标时)才下决定;就是说让你的决策尽可能依赖于充分的信息,而不是依赖于对这些信息的假设;
    1. 如果提前做出决定,意味着你必须做出各种假设,这将造成对应的风险;譬如在需求不清晰的时候给出项目的时间估计,在没有充分调研的情况下决定采用某种技术;
    2. 与延迟决策配套的是快速响应的能力,如果做不到快速响应决策,那么决策是无法延迟的;这也意味着系统的架构设计要能容纳变化,高内聚,低耦合;
    • 快速交付
    1. 快速交付能够使客户更早地看到产品,能使产品更快地投入市场,更早地回收产品价值;
    1. 快速交付缩短了最终用户对产品的反馈循环,避免创造出客户不需要的内容而造成的浪费;
    1. 快速交付还可以暴漏你在价值交付流程中存在的问题,促使这些问题得到解决;
    • 给团队授权
    1. 工作在一线的人最了解实际情况,他们知道现在发生了什么,知道当前情况下的最佳应对方法;
    2. 要让他们熟知每天使用的工具、流程、规则以及背后的原因,完全具备足够的知识提出改进意见;
    3. 获得授权的团队会产生更强的动力和更好的创造力;
    • 内置完整性
    1. 完整性是为了让客户对产品的体验具备平滑性、一致性,完整性是在整个开发过程中产生的;
    1. 为了保证完整性,关键是建立客户到开发人员之间通畅的信息流;
    1. 通畅的信息流有助于各类参与人员做出的各类决定之间具有协调一致性,也帮助发现和解决对完整性的背离;
    • 考虑全局
    1. 整体的表现,通常不是受制于某一个局部的表现,而是受制于各局部之间的协调配合;
    1. 局部的优化,有时候会恶化整体的协调一致,若局部优化不能带来整体的改善,将是没有价值的;
    1. 拿合作的双方来说,彼此之间也有一个大的全局,那构成他们的共同目标;这种情况下优化局部通常都不能导致好的结果;
  • 相关阅读:
    用goto做异常处理
    零长度数组的妙用
    DTMF三种模式(SIPINFO,RFC2833,INBAND)
    Myeclipse下的struts2.3.8 配置 保证绝对好用
    Linux内核--内核数据类型
    Linux内核:kthread_create(线程)、SLEEP_MILLI_SEC
    3.4.4 数据预留和对齐(skb_reserve, skb_push, skb_put, skb_pull)
    Linux 2.6内核中新的锁机制--RCU
    Linux中SysRq的使用(魔术键)
    CentOS Linux服务器安全设置
  • 原文地址:https://www.cnblogs.com/cavenran/p/2059265.html
Copyright © 2011-2022 走看看