最近几年,国内业界越来越常提及“研发效能”这个词,追其根源大部分是始于“DevOps”运动的活跃。
知道 DevOps 发展历史的,基本都了解 DevOps 是受敏捷的影响,是敏捷原则在软件研发到运维运营层面的延伸。
很多云厂商在推广自己 DevOps 平台服务的时候,也会提及对“研发效能”的大幅度影响,比如 AWS 对 DevOps 的描述:
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
那么,研发效能 == DevOps 吗?
答案自然是否定 。
研发效能 明显是“问题域”。
DevOps 是一种解决方案,且是一种已经被验证、非常成熟的、可以提升软件研发效能的解决方案。
但就像人感冒发烧一样,吃 A 药可以痊愈,吃 B 药也可以痊愈,打针也可以痊愈,甚至有时候发现吃药效果不理想,最后还是去打了针。
研发效能低,就像人感冒发烧一样,是个 “问题” 。DevOps, 是解决这个问题的一种 “药”。
因此,弄清楚了问题域和解空间的关系之后,我们来看看研发效能和它的解空间,并且主要聊一聊解空间(研发效能治理)。
研发效能,即持续快速交付价值的能力。
将其拆解一下:研发效能 = 效率 + 质量+ 有效价值,还有这三项可重复和稳定发生的持续性。
展开来讲,就是
有了定义之后,就来看看如何对研发效能进行治理。
根据市面上大部分公司的软件工程能力状况,针对研发效能治理,这里提炼了一条“研发效能治理成熟度模型”。

从左至右,研发效能治理分为5个阶段,每个阶段也必须包含它左边所有阶段的成果。
举个例子:某IT部门采购了一个 DevOps 平台服务,但日常仅仅当做 CI/CD流水线 甚至是“发布工具”来使用,对效能治理没什么概念,这时候该IT部门的治理成熟度自然是低的,可能只在“度量和评估”的位置。
接着,展开来看看效能治理成熟度每一个阶段。
管理学之父彼得德鲁克曾经说过:“如果你无法度量它,就无法管理它”。
对管理如此,对效能治理亦是如此。因此,度量和评估,对于研发效能的治理必不可少。
那么,再来看看为何把“度量和评估”放在治理的第一步呢:
因此,度量和评估,作为研发效能治理的第一步不可或缺。
接着,来看看如何做度量和评估?
从 “健康度指标” 和 “局部诊断性指标” 分两层来看。
首先,借鉴于DORA(DevOps研究和评估组织) 的2021年报告中的Four Key Metrics,将其作为研发效能的4个关键 健康度指标:

特别注意:区别于 DevOps 只关注于“从代码提交到功能发布”这个区间的前置时间,研发效能中的“前置时间”延伸了覆盖范围 —— 从业务构想到功能发布,涉及研发运营的整个研发周期。
其他三项,与 DevOps 报告相同。
至于,研发效能中的有效价值,其与业务关系紧密,度量数据模型需要根据具体业务来设计,因此目前仅给予该项 健康度评估模型:
Measurement involves collecting factual information about the value of a deployed feature and evaluating it against the original hypothesis statement.
Rate your team's ability to collect objective information about the actual value realized by deployed features so that it can inform strategic financial decisions.
Sit (1-2): We don’t define or measure the value of Features.
Crawl (3-4): We’ve defined what "value" is but don’t know how to measure it.
Walk (5-6): We capture qualitative feedback from the business about the value of our Features.
Run (7-8): We capture qualitative and quantitative feedback from the business and our monitoring systems about the value of our features.
Fly (9-10): We aggregate the quantitative and qualitative feedback to objectively validate the original hypothesis and inform pivot-or-persevere decisions.
看到这里,是不是有点眼熟,如果原本预想的解决方案是 “DevOps一体化” 的话,加上有效价值的度量,是不是方案就要考虑"BizDevOps"?! 是不是仅仅一个DevOps的方案就不够匹配了?(重新再正视一下问题域和解空间的区别 :P)
也许有人会觉得,对比下其他类型的度量和评估报告上繁多的指标量,上面这几个指标未免有些简陋。
比如,连常见的评估应用架构维度的指标都没有。
其实,应用架构指标是有的,但并不属于效能“健康度指标”,而是“局部诊断性指标”。

有了这两层指标,整个研发效能的度量和评估模型才大体完整。
而在整个研发的过程中,可以常常阶段性的使用模型进行度量和评估一下,比如每次发布周期完成 或者 每次sprint完成的时候等等。
使用指标值的时候,也需要注意:指标值本身并不重要,重要的是通过数据驱动出洞见。而在持续改进的过程中,数据趋势比数据值更重要。

个站原文
《下篇》讲接着聊剩下的4个成熟度阶段。
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts
我想开始使用“Sinatra”框架进行编码,但我找不到该框架的“MVC”模式。是“MVC-Sinatra”模式或框架吗? 最佳答案 您可能想查看Padrino这是一个围绕Sinatra构建的框架,可为您的项目提供更“类似Rails”的感觉,但没有那么多隐藏的魔法。这是使用Sinatra可以做什么的一个很好的例子。虽然如果您需要开始使用这很好,但我个人建议您将它用作学习工具,以对您来说最有意义的方式使用Sinatra构建您自己的应用程序。写一些测试/期望,写一些代码,通过测试-重复:)至于ORM,你还应该结帐Sequel其中(imho
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我一直在Rails上做两个项目,它们运行良好,但在这个过程中重新发明了轮子,自来水(和热水)和止痛药,正如我随后了解到的那样,这些已经存在于框架中。那么基本上,正确了解框架中所有智能部分的最佳方法是什么,这将节省时间而不是自己构建已经实现的功能?从第1页开始阅读文档?是否有公开所有内容的特定示例应用程序?一个特定的开源项目?所有的rails交通?还是完全
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我希望能够将模板化的YARD文档样式注释插入到我现有的Rails遗留应用程序中。目前它的评论很少。我想要具有指定参数的类header和方法header(通过从我假定的方法签名中提取)和返回值的占位符。在PHP代码中,我有一些工具可以检查代码并在适当的位置创建插入到代码中的文档header注释。在带有Ducktyping等的Ruby中,我确信诸如@params等类型之类
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我想知道是否有人知道Ruby的rubyzip替代品,它可以处理各种格式,特别是zip/rar/7z?我知道libarchive,但它对我的目的来说并不完整(它是一个很好的gem)。(澄清一下,libarchive-对我不起作用-因为
我爱Sanitize.这是一个了不起的实用程序。我遇到的唯一问题是,它需要永远准备一个开发环境,因为它使用Nokogiri,这对编译时间来说是一种痛苦。是否有任何程序可以在不使用Nokogiri的情况下执行Sanitize的操作(如果没有别的,只是温和地执行它的操作)?这将以指数方式提供帮助! 最佳答案 Rails有自己的SanitizeHelper。根据http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html,它将Thissanitizehe
我尝试用Ruby设计一个基于Web的应用程序。我开发了一个简单的核心应用程序,在没有框架和数据库的情况下在六边形架构中实现DCI范例。核心六边形中有小六边形和网络,数据库,日志等适配器。每个六边形都在没有数据库和框架的情况下自行运行。在这种方法中,我如何提供与数据库模型和实体类的关系作为独立于数据库的关系。我想在将来将框架从Rails更改为Sinatra或数据库。事实上,我如何在这个核心Hexagon中实现完全隔离的rails和mongodb的数据库适配器或框架适配器。有什么想法吗? 最佳答案 ROM呢?(Ruby对象映射器)。还有
我尝试每天在我的Rails应用程序中自动记录一些数据。我想知道是否有人知道一个好的解决方案?我找到了https://github.com/javan/whenever,但我想确保在选择之前了解所有选项。谢谢!艾略特 最佳答案 我真的很喜欢whenever-这是一个很棒的Gem,我已经在生产中使用了它。关于它还有一个很好的Railscasts插曲:http://railscasts.com/episodes/164-cron-in-ruby 关于ruby-on-rails-rails3中c