写点什么

Meetup 是如何解决技术债务问题的

  • 2017-08-30
  • 本文字数:2774 字

    阅读完需:约 9 分钟

定期解决高优先级技术债务问题可以实现产品的持续健康度。Meetup 的 CTO Yvette Pasqua 解释了如何通过解决技术债务来达成有影响力的结果。她建议先从影响力大的技术债务开始,并就其产生的结果进行沟通交流。

Pasqua 在 Craft 2017 大会上呈现了有关大规模解决技术债务的演讲。InfoQ 通过问答、总结和文章的形式对大会进行了报导。

在演讲结束后,InfoQ 采访了 Pasqua,内容包括如何量化技术债务、如何改进产品健康度、他们从解决技术债务中学到了什么、Meetup 使用了哪些工具来量化和减少技术债务,以及如何建立以产品健康度为中心的文化。

InfoQ:技术债务是可量化的吗?

Yvette Pasqua:从我的经验来看,我很反对花太多时间去尝试量化技术债务。如果你真的要这么做,可能需要花很多时间,而结果通常不会很准确,因为技术债务种类繁多,而且它们中的大部分都没有明确的定义。

我在演讲中引用了 Matt Holford 的文章“ Can Technical Debt Be Quantified ”,Matt 是 DoSomething.org 的 CTO,他在文章中表达了对量化技术债务的看法,他认为“技术债务通常是不可量化的”。在快速发展的技术公司,我认为对技术债务进行量化并不会带来太大的价值。相反,我认为应该将精力放在那些高优先级的技术债务上,系统性地解决这些技术债务,并把它作为组织的长期实践。所以,我建议将技术债务按照优先级进行分类,而不是对它们进行量化,然后尽快解决高优先级的技术债务。

InfoQ:在 Craft 大会上,你讲到了持续的产品健康度。你能详细地解释一下什么是持续的产品健康度吗?

Pasqua:我们要让整个公司在解决技术和产品债务这个问题上步调一致,因为这是一个影响面很广的事情。我们知道,如果想要获得成功,就不能仅仅把它看成是一个工程问题,我们需要让公司的每一个人都清楚什么是技术债务、为什么解决技术债务对我们来说如此重要以及我们的计划是什么。于是,我们把它们总结成一个简单清晰且积极正向的东西:持续产品健康度。简单地说,持续产品健康度就是“持续地关注整个代码基库而不仅仅是产品特性”。积极正向且清晰定义的产品健康度正是人们想要的东西。特别是对于那些工程领域之外的人来说,秉持这种理念是非常关键的。在我们把持续产品健康度作为帮助公司更快达成产品策略和目标的同时,他们可以尽情地畅想公司的未来。

InfoQ:你们是如何改进产品健康度的?

Pasqua:我们曾经解决过的一些高优先级的技术债务包括如下几项。

  • 我们从使用自有数据中心的 RabbitMQ 服务器转成使用 AWS SQS。我们不想把时间花在消息服务的运维和伸缩问题上,我们想专注在 Meetup 的产品迭代上。我们比较了各种托管解决方案,最后决定迁移到 AWS SQS 上,它给我们带来了重大的工程生产力提升、简化了系统、改进了可靠性。到目前为止,我们对我们的这个决定感到很满意。
  • 我们想要提高大单体代码基库的单元测试覆盖率,因为之前的覆盖率很低。我们花了很多时间为新代码和已有代码编写单元测试。这样可以加快大单体应用的持续部署速度,因为我们可以尽可能多地依赖测试框架底层的东西。我们不仅关注总体覆盖率,也尽量让修改过的“活跃代码”接近 100% 的覆盖率。我们设定了测试覆盖率目标,使用 Coveralls 收集覆盖率的度量指标,并把它们展示给工程师看,我们发现这样可以显著提高覆盖率。
  • 在过去几年,我们将数据中心迁移到云端,解决了很多技术债务问题,我们从中获得了巨大的好处。关于这些,我们有很多话要说,但我们最想说的是,最好从一开始就使用云端托管服务,这样就不需要经历中间的迁移过程。我们还将系统的很多组件变成无状态的,并将基础设施构建成代码的形式,当系统组件发生崩溃时就不会对系统状态造成影响,而且可以进行自动伸缩。我们将需要人工介入的有状态组件数量降到最少。

我在博客上介绍了我们的迁移过程

InfoQ:你们在解决技术债务问题的过程中学到了什么?

Pasqua:我们在解决技术债务问题的过程中学到了一些事情。

  • 持续地迭代,产生更大的影响力。就像通过产品迭代将产品推向市场一样,我们需要不断地迭代解决技术债务问题的方法,获得越来越有影响力的结果。可能你不会在一开始就成功,但要坚持快速地迭代跟进,评估影响力,快速地从失败中学习,然后再把它们应用到下一个迭代中。
  • 你可能需要在沟通上做一些额外的工作,特别是在工程领域之外。你需要为产品和公司目标画出一幅清晰的蓝图,并把它与解决技术债务问题关联起来。否则人们就不会明白为什么要花那么多时间在解决技术债务问题上。
  • 把最具影响力的事项放在第一位,不要把精力花在低影响力的事项上。就像产品迭代一样,如果你不花大力气把具有高影响力的事项放到路线图上,你的团队就会被吸引到那些低影响力的事项上,因为它们更易于计划、实施和完成。作为一个工程领导团队,我们需要积极地、有策略地提升具有高产品健康度事项的优先级,这样才能把我们的团队引导到少量具有高影响力的事项上。

InfoQ:你们使用了哪些工具来量化和减少技术债务?

Pasqua:为了达成公司的目标,我们建立了一些系统,形成了独特的工程文化,并总结了三个指导性设计原则,然后通过这些原则来衡量减少技术债务给我们带来的影响。这些原则包括:系统简单性、平台可靠性和速度。我们通过各种指标来衡量这些属性。

  • 我们的团队每天将多少研究产品投入生产?我们计划在 2017 年增加 30% 的量,我们主要就是以这种方式来衡量工程速度的。
  • 速度:我们评估我们的工程技术和流水线,识别出阻碍交付产品的瓶颈,并持续地为自己设定更高的目标。我们评估的项目包括:构建时间、自动化时长、部署时间、工程师上手新框架的时间。
  • 可靠性:我们量化系统的可用性,当前的目标是达到 5 个 9。我们也量化页面的总数和使用 PagerDuty 的系统组件数量,并计划将它们降低 30%。
  • 简单性:这一部分最难以量化。在我们看来,简单性带来的最大好处就是更少的软件缺陷。所以,我们认为量化简单性最好的度量指标就是工程师每周花在解决重大软件缺陷上的时间。

InfoQ:你们做了哪些事情来建立以产品健康度为中心的文化?

Pasqua:我们从中学到了很多,在过去的一年半当中,我们努力建立一种工程文化,改进产品健康度,而我们仍然在不断前进。我们让每个人都知道什么是产品健康度,让他们知道为什么产品健康度这么重要,以及我们要如何着手解决这些问题。我们使用了非技术用语与其他人交流项目背后的“什么”以及“为什么”,这样每个人就可以很容易地理解项目的目标,了解这些项目能够为产品和公司达成什么样的目标,以及这些项目会对工程文化的哪些部分(简单性、可靠性、速度)产生影响。其中最后一项最为重要,我们正在观察我们所做的每一件事情对简单性、可靠性和速度所产生的影响,然后为最具影响力的事情设置最高优先级。很重要的一点,工程师正在做的事情要与我们想要的文化变革合拍,这样每个人就可以朝着相同的目标迈进。

查看英文原文: Tackling Technical Debt at Meetup

2017-08-30 19:001560
用户头像

发布了 322 篇内容, 共 139.4 次阅读, 收获喜欢 145 次。

关注

评论

发布
暂无评论
发现更多内容

“开源之夏”活动火热报名中,丰厚奖金等你来拿!

云智慧AIOps社区

开源 活动 开源软件

量化系统开发,量化交易系统APP搭建

Geek_56201b

量化交易系统开发 量化交易源码 量化APP搭建

NFT、GameFi、SocialFi、云存储,DFINITY 生态上最热赛道详解

TinTinLand

区块链

Android系统和iOS系统两大系统占据了手机操作系统98%的市场份额,国产手机操作系统还应该从哪些方面努力才能实现逆袭?

InfoQ IT百科

最近几年,OPPO 、小米等手机厂商都开始走自研芯片之路,这条路能跑通吗?

InfoQ IT百科

摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台

阿里巴巴云原生

银行为什么要上堡垒机?选择哪家好?有案例吗?

行云管家

运维 网络安全 银行 堡垒机

区块链招聘会完美收官,行业大咖教你如何 Get Web3高薪职位

TinTinLand

区块链

CPU和GPU有什么区别?

InfoQ IT百科

开发者友好型公链Neo | 如何连接 Web2 开发者到 Web3 世界

TinTinLand

区块链

射频芯片在手机上起到什么作用?

InfoQ IT百科

2019年华为鸿蒙加入手机系统阵营,如何看待鸿蒙这三年的发展?

InfoQ IT百科

日志脱敏是什么意思?为什么要做日志脱敏?

行云管家

数据安全 日志脱敏

友好型公链Neo,助力开发者轻松掌握区块链智能合约

TinTinLand

区块链

手机摄像头越多拍照效果越好吗?

InfoQ IT百科

有研究显示,现在年轻人越来越不愿意换手机了。下一代智能手机在硬件上出现哪些更新,才会让你有换机的冲动?

InfoQ IT百科

虎符交易所Hoo研究院|币海寻珠——四月上半月区块链投融事件Top20

区块链前沿News

区块链 投资 虎符研究院

手机刷新率越高越好吗?

InfoQ IT百科

购买不同品牌的手机,怎么对比硬件配置?

InfoQ IT百科

前三个月免费试用!博睿数据告警平台OneAlert火热大促进行中

博睿数据

真正的量子计算机触手可及!英特尔宣布规模化生产硅量子比特

科技新消息

如何写出有价值的竞品分析报告?

基调听云

竞品分析 基调听云

如何看待现阶段国内手机操作系统的竞争格局?

InfoQ IT百科

从构建到治理,业内首本微服务治理技术白皮书正式发布(含免费下载链接)

阿里巴巴云原生

2020年java岗合集面试复盘,凭借这些文档掌握80%就去进阿里,大牛自我总结500页“Java成长笔记”

爱好编程进阶

Java 面试 后端开发

手机摄像头芯片主要有哪些?

InfoQ IT百科

OPLG:新一代云原生可观测最佳实践

阿里巴巴云原生

【Zeekr_Tech】ROS/ROS 2介绍

Zeekr_Tech

操作系统 机器人

Dubbo 编程之夏报名启动了

阿里巴巴云原生

手机运存与内存有什么区别?

InfoQ IT百科

自动化测试的生命周期是什么?

禅道项目管理

自动化测试 生命周期

Meetup是如何解决技术债务问题的_语言 & 开发_Ben Linders_InfoQ精选文章