Accelerate 精益软件开发和DevOps

文章目录

  • 《Accelerate》精益软件开发和DevOps
    • 前言
    • 重要观点
      • 关注能力而不是成熟度
      • 关注结果而不是产出
      • 不可忽视的组织文化
      • 技术实践至关重要
      • 关注架构特征而不是架构细节
      • 内建安全胜于安全审查
      • 精益软件开发管理
      • 精益产品开发
      • 快乐工作
      • 以人为本
      • 领导者和管理者的支持至关重要
    • 关键研究问题
    • 关键能力
      • Continuous delivery
      • Architecture
      • Product and process
      • Lean management and monitoring
      • Cultural

《Accelerate》精益软件开发和DevOps

前言

作为被Martin Fowler力荐的2018计算机优秀图书,该书并没有就精益软件开发和DevOps提出新的理念,而是从问卷调查和统计学来试图解密精益软件开发和DevOps之所以会帮助提升软件交付绩效和组织绩效背后的“科学”原理。

《Accelerate》知识图谱如下:

Accelerate 精益软件开发和DevOps

重要观点

  • 关注能力而不是成熟度

  • 关注结果而不是产出

  • 不可忽视的组织文化

  • 技术实践至关重要

  • 关注架构特征而不是架构细节

  • 内建安全胜于安全审查

  • 精益软件开发管理

  • 精益产品开发

  • 快乐工作

  • 以人为本

  • 领导者和管理者的支持至关重要

关注能力而不是成熟度

表(成熟度):

工具/软件,文档,看板,过程(站会、Sprint Planning、Sprint Retrospective),Scrum Team

里(能力):

结果导向,有机结合(人,技术,工具,过程),参见下面的“关键能力”

关注结果而不是产出

坏的的度量指标:

  • 代码行数:(副作用:烂代码、啰嗦或难以维护的代码)
  • Velocity(团队速度)(副作用:忽视团队间协作)
  • 资源利用率(副作用:排队、长期间等待,请参考ToC约束理论)

好的的度量指标:

  • Lead Time (前置时间)// 更快交付、更快反馈
  • Deployment Frequency(部署频率)// 小批量、大批量意味着不容易部署、部署指部署到生产环境(至少是预生产环境)
  • Mean Time to Restore(平均故障恢复时间,MTTR)// 可靠性、响应能力
  • Change Fail Percentage(变更失败率)// 质量

不可忽视的组织文化

组织文化类型:

  • 病态(权力导向)// 恐惧和威胁、 喜不 忧、欺上瞒下
  • 官僚(规则导向)// 地盘、按流程规定办事
  • 有创造力的(业绩导向)// 专注于如何实现目标、鼓励竞争

技术实践至关重要

持续交付:

  • Version Control (版本控制)

  • Deployment Automation (自动化部署)

  • Continuous Integration (持续集成)

  • Trunk-Based Development (主干开发)

  • Test Automation (自动化测试)

  • Test Data Management (测试数据管理)

  • Shift Left on Security (安全左移)

  • Loosely Coupled Architecture (松耦合架构)

  • Empowered Teams (激励团队)

  • Monitoring(监控)

  • Proactive Notification (积极通知)

关注架构特征而不是架构细节

  • 可部署性

  • 可测试性

  • 可扩展性

  • 工欲善其事必先利其器(让使用工具的人选用合适的工具)

    这个观点认为不是微服务架构就一定好过单体架构,关键还是看架构能否满足可部署性、可测试性和可扩展性的要求。

内建安全胜于安全审查

  • 安全左移
  • DevSecOps
  • Rugged DevOps

精益软件开发管理

  • 限制在制品(WIP)
  • 可视化一切(比如Kanban)
  • 更快地从市场/客户获得反馈
  • 轻量级变更审批流程(把审批流程和CI/CD Pipeline结合起来)

精益产品开发

  • 小批量生产
  • 可视化流程和工作
  • 获得并实现用户反馈
  • 团队自主实验

快乐工作

  • 减少痛苦
  • 减少倦怠

导致倦怠的问题:

  • 工作超负荷
  • 无力感
  • 缺乏奖励
  • 工作环境不友好
  • 缺乏公平
  • 价值观冲突

如何避免倦怠:

  • 组织文化支持
  • 减少痛苦
  • 领导者支持
  • 技能投资
  • 鼓励创新

以人为本

  • 工作满意度
  • 多元化
  • 关心少数群体

领导者和管理者的支持至关重要

  • 变革型领导者(愿景、沟通、引导、支持、认可)
  • 管理者(投资团队以实现目标、减少痛苦、绩效与目标一致)
  • 支持团队

关键研究问题

  • 软件交付意味着什么否可以衡量软件交付/p>

  • 软件交付是否影响组织绩效/p>

  • 组织文化是否重要何衡量组织文化/p>

  • 有哪些重要的技术实践/p>

  • 我们可以重新验证软件交付对组织绩效的影响么/p>

  • 技术实践和自动化是否影响软件交付/p>

  • 精益管理实践是否影响软件交付/p>

  • 技术实践和精益管理实践是否影响工作的某些方面/p>

  • 在软件开发过程中集成安全性会帮助还是减慢软件开发过程/p>

  • 主干开发模式是否更有利于软件交付/p>

  • 精益产品管理对软件开发和交付是否重要/p>

  • 良好的技术实践是否能加强员工对公司的忠诚度/p>

  • 什么样的架构实践能推动软件交付效能的改进/p>

  • 变革型领导如何影响软件交付/p>

  • 软件交付是否影响非盈利结果/p>

关键能力

Continuous delivery

  • Version control(版本控制)
  • Deployment automation(自动化部署)
  • Continuous integration(持续集成)
  • Trunk-based development(主干开发)
  • Test automation(自动化测试)
  • Test data management(测试数据管理)
  • Shift left on security(安全左移)
  • Continuous delivery (CD)(持续交付)

Architecture

  • Loosely coupled architecture(松耦合架构)
  • Empowered teams(鼓励团队)

Product and process

  • Customer feedback(用户反馈)
  • Value stream(价值链)
  • Working in small batches(小批量生产)
  • Team experimentation(团队自主实验)

Lean management and monitoring

  • Change approval processes(轻量级变更审批流程)
  • Monitoring(监控)
  • Proactive notification(积极通知)
  • WIP limits(限制在制品)
  • Visualizing work(可视化工作)

Cultural

  • Westrum organizational culture(组织文化)
  • Supporting learning(支持学习)
  • Collaboration among teams(团队间协作)
  • Job satisfaction(工作满意度)
  • Transformational leadership(变革领导者)

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8793 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月6日
下一篇 2019年10月6日

相关推荐