书评:《加速——全面的DevOps指南》
在我读过的所有关于DevOps的书籍和博客文章中,大多数都提到了Nicole Forsgren、Jez Humble和Gene Kim合著的《Accelerate》这本书。现在我明白了为什么。这本书全面概述了重要的DevOps实践,单凭这一点就非常有帮助。
研究
更重要的是,本书以研究为基础,为遵循这些实践提供了充分的理由。作者进行了广泛而令人信服的研究,这些研究构成了本书的基础。他们成功地将版本控制等实践与组织的商业绩效联系起来。本书涵盖了所有与DevOps相关的重要实践,并发现了这些实践对公司和个人产生积极影响的诸多有趣方式。
每当我对书中提出的某些观点产生怀疑时,它总能出其不意地消除我的疑虑。这本书有很多章节都在努力说服读者相信其研究的有效性。这些章节让我信服得足够充分,使我能够专注于研究的实际发现,并且也让我知道如何解读这些发现。
软件对大多数公司的商业和非商业成功都具有显著影响。这一点早已被反复提及,而对于我们这些开发人员来说,更是深有体会。研究通过将多个软件交付因素与公司绩效关联起来,证实了这一观点。
持续交付
对我来说,最有趣的发现之一是某些软件交付实践对开发人员自身的影响。例如,如果公司采用持续交付实践,开发人员就更不容易感到职业倦怠,也更有可能对自己的工作感到满意。
这里的数据很容易解释。发布截止日期、加班加点、大规模发布和部署冻结都会给开发人员带来巨大的压力。通常,这些还会伴随着繁琐的委员会和流程,让人更加沮丧。显而易见,这样的环境会让开发人员精疲力竭。而当通过应用持续交付实践,将部署变成日常事件时,压力水平就会下降。
除了对开发人员的影响之外,持续交付还对系统成功至关重要的几个指标产生积极影响。持续交付与降低变更失败率密切相关。更小的变更量和自动化部署可能是这种改进的原因。
令人惊讶的是,用于计划内新工作(而非计划外工作/返工)的时间也与持续交付的实施密切相关。平均而言,实施持续交付的公司会将更多时间用于计划内新工作。在大多数情况下,用于计划内工作的时间越多,意味着用于那些能够改善业务成果的事情的时间就越多,无论这些成果是什么。
我想每家公司都希望获得这些好处。“实施持续交付”或本书中介绍的任何其他实践都不是件容易的事。因此,在阐述研究成果的同时,你会看到一些切实可行的建议,例如,你可以采取哪些措施在你的组织中实施持续交付实践。这其中包含大量(经过研究的)实用技巧,我发现它们非常有用。
例如,研究数据显示,系统和应用程序配置比应用程序代码更重要,因此也需要进行版本控制。我发现其中有很多实用技巧,既适用于刚刚接触这些实践的公司,也适用于已经以某种形式应用这些实践的公司。
文化
文化是Accelerate课程中的一个重要主题。课程首先介绍了韦斯特鲁姆组织文化的概念。这是一个衡量员工所体验到的组织文化的量表。韦斯特鲁姆定义了三种不同类型的组织:
- 病态的(权力导向型)
- 官僚主义(规则导向型)
- 生成式(以绩效为导向)
在病态组织中,信息因恐惧而被隐瞒。在官僚组织中,规则比组织使命更重要。而生成型组织则全心全意地专注于其使命。根据韦斯特鲁姆的研究,生成型组织的绩效优于病态组织。
这三种类型构成了一个量表,可以预测组织内部信息的流动情况。当人们不再害怕分享信息时(因为信息被用于改进而非指责和惩罚),信息共享就会更加频繁,合作与学习也会得到改善。如此一来,信息共享的增加有助于组织实现其使命。这正是韦斯特鲁姆的研究发现:
韦斯特鲁姆的理论认为,信息流动更顺畅的组织运作效率更高。
在《加速》一书中,作者分析了这种文化结构。他们发现,韦斯特鲁姆的组织文化结构能够预测组织绩效、软件交付绩效和员工满意度。这与韦斯特鲁姆本人的理论预期相符。
我发现文中提出的改善企业文化的建议非常有见地。归根结底,企业文化取决于员工的行为和互动。作为一名员工,你可以通过以下方式树立榜样:
- 鼓励跨部门协作。你可以通过“积极寻找、鼓励和奖励有助于协作的工作”以及与其它团队的同事建立信任来实现这一点。
- 营造学习氛围。您可以尽可能地开放资源/时间/预算,创造机会让团队之间分享学习成果,并营造一个让人们感到可以安全地承担合理风险和接受失败的环境,以此来鼓励这种氛围的形成。
- 对应用程序的性能保持透明。您可以通过公开分享关键指标、警报、服务级别目标/服务级别协议以及故障(例如以事后分析的形式)来实现这一点。
如果你还没有这样做,那么定期安排时间让团队之间分享经验教训,是积极影响公司文化的好方法。
结论
我认为《加速》这本书对于任何想要了解DevOps实践如何影响或已经影响其组织的人来说都是必读之作。如果你也想了解这些,一定要读一读!
文章来源:https://dev.to/raoulmeyer/book-review-accelerate-the-compressive-devops-guide-8h1