扫码阅读
手机扫码阅读

软件技术奇葩说:速度与稳定性哪个更重要?

117 2024-04-10

前段时间,公司组织了一场技术辩论赛,这里记录了我方观点。

前段时间,公司组织了一场别开生面、生动活泼、硝烟弥漫的软件技术“奇葩说”,辩题是“速度与稳定性,哪个更重要?”

我跟其他三位小伙伴组成了支持“对软件交付来说,速度更重要”的正方,也就是“快男”代表。这篇文章将跟大家分享我方四辩的论点论据,不服来战。

01

速度对市场的重要性

先从几个故事说起。

第一个故事:互联网里面有一句话——“腾讯之下,寸草不生”,但是强如腾讯也完成不了他的电商梦。

2005年9月12日,腾讯曾效仿淘宝创建了拍拍网,借助QQ的导流能力,上线白天全球网站流量排名前500。但是好景不长,初露锋芒之后就落寞收场。

之后腾讯一直没有放弃,陆续推出了QQ商城、QQ网购,并收购了易迅网、买卖宝等,都没有成功。最后只能投资京东、拼多多等电商平台,利用自己的流量赚钱。

这个故事说明了,当你有足够的快,强如腾讯也不能把你压倒。这个故事说明了在项目前期立项,在做对的事情的时候,我们需要速度!

第二个故事:每个人都离不开的微信。腾讯的马化腾有电商的梦,小米的雷军和阿里的马云也有社交梦。

其实当年小米的米聊要比微信早两个月推出。微信在一段时间内都是在追赶米聊的,在米聊用户到达1000万的时候,微信才400万,所以即使QQ的流量导流到微信,也没有能打败米聊。

后来的事情现在大家都知道了。米聊已经下线了,微信成为了我们大部分必不可少的沟通工具。

那么微信是怎么打败米聊这个对手的呢?是通过敏捷项目管理!

1.0版本的微信只有几个大功能:登录,改自己头像,导入、录入通信录,发信息图片。什么黑名单,备注这些功能都还没有。

腾讯通过不断的快速迭代,凭借着微信社交优秀产品经理、项目经理的运作,在2.0版本之后,慢慢地就把米聊功能比下去了。

当时的最大功臣是“查看附近的人”这个功能,一下子把微信从熟人通讯工具变成交友工具。很快微信用户过亿,米聊用户峰值停留在了3000万。

后来微信又推出了红包的功能,一下子把微信推到了社交软件的第一名。

这个故事很多人都亲历过。大家看到微信尝试过很多功能,也下线了很多功能,这种快速启动、快速失败的敏捷开发、快速迭代。让微信成为全球顶流的社交app。

大家试想一下,如果微信想清楚所有想要的功能再上市,它的成功率会高吗?

这个故事说明了在项目中,速度也是重中之重。

第三个故事,是辩手的亲身经历。辩手曾经在北电网络做工程师。当年的北电跟爱立信是全球顶级的无线网络公司,而华为只是一家小企业。

他最记得当年在机房里面去收集日记和核心文件去解决一个bug的时候。刚好也有华为的工程师在,他们和华为工程师几个人在机房度过了几个晚上。


在测试、收集日志的工作完成后,北电北美的研发部门告诉他要一个月之后才有修复包,因为要经过开发、测试、上线的过程。

但华为怎么处理呢?几个工程师睡在机房,把日志传给他们在深圳的研发后,研发部门立刻把这个bug重现他们的测试机房,修改、测试。

就在辩手还在跟客户解释为什么修复需要一个月的时候。华为已经问客户何时允许上线了。

北电的系统很稳定,这个是大家都认同的。但是北电在2008年宣布破产了。

这个事情告诉我们,后期项目维护时候速度也是最重要的。

这三个故事说明了速度在一个产品、项目的生命周期里面都是重中之重。天下武功唯快不破。

02

速度对团队和人的重要性

有两点想强调。

第一点,为什么软件交付要快?因为要有赢的感觉!

在疫情早期,公司内部服务于抗疫的小程序在短短几天就上线了。

这么短时间就能上线一个产品,并且随后可以频繁迭代,就能持续给人“打胜仗”的感觉,这种赢的感觉对于激发和维持团队与个人的激情非常重要。这也是一种重要的激励。

辩手也听到做常规小变更的同事因为可以频繁交付业务价值,满足感满满。

相反的例子是,公司有很多大项目的交付周期都是数以年计。在这么长的周期里面,你感受到更多的是挫败感。

辩手曾经参与的一个项目,前前后后搞了三年,项目组里的人也换了几波,没有人能从这样的项目获得任何激情。这个项目最终也被搁置,成为所有参与过的人的痛。

第二点,越是痛苦的事情,就要越频繁地做!

这是Martin Fowler《持续交付》一书里提出的。也是公司早期做DevOps试水的团队的口号之一。

正是基于这样的精神,他们挑战所有阻碍快速交付的流程,他们自动化一切重复的工作,在一年之内实现上千个发布,成为整个集团的DevOps标杆,也给了所有团队信心,要在我们的环境里实现像互联网公司那样的快速交付和频繁交付是完全可能的,也给了怎样做到的具体实践。

如果他们不是努力尝试各种Quick-win,他们不可能在这么短时间获得这么大的成就。

在集团的5年技术愿景中,有四个维度,第一个维度就是速度,可见,集团高层也是把速度放在首要位置。

简单总结,速度对外、对内都非常重要。

03

无法避免Bug,就快速修Bug

作为IT从业者,大家都清楚地知道,唯一可以避免bug的方法就是放弃编写代码,相信我们没有谁没有写过bug。

编程大师Bob Martin曾说过:“好的程序员并不是从不犯错误的人,而是懂得如何快速发现和修复错误的人。”

这里就强调了系统错误并不可怕,只要我们有足够快的响应速度,就可以从容KO掉它。

这里我们引用来自于行业标杆Google的DevOps现状报告的说法,它把组织的效能指标分为速率和稳定性两大类。其中,发布频率和部署前置时间是速率指标中的关键要素。


而在稳定性指标中的有一个关键指标是MTTR,即服务恢复平均时间,这表明发现和解决问题的速度是度量系统稳定性的关键因素。

举个刚经历不久的实际例子,2021年的Log4j安全漏洞,就是是“人在家里坐,锅从天上来”——即使我们提前做好了全部的稳定性流程,也难以避免类似于安全或监管方面的突发需求。

面对这种情况,我们最需要的是什么?那就是快速定位问题并修复漏洞。这个例子突显了速度是确保系统安全和稳定性的有力保障。

04

总结

首先,对于任何行业,时间就是金钱。

快速地开发出软件是能够提高企业竞争力的关键因素之一。如果我们的软件开发速度慢,那么我们就会失去机会,而那些能够迅速响应市场需求的公司将会获得优势。

其次,软件开发速度也直接影响到企业的成本和利润。

长时间的开发过程会消耗大量的时间和资源,增加开发成本,同时也会减少软件的利润潜力。因此,如果我们能够以更快的速度开发出软件,那么我们就能够更快地获得回报,提高利润。

当然,这并不是说我们可以牺牲软件的稳定性。

我们认为,稳定性和速度并不是彼此对立的。我们可以通过采用先进的开发工具和测试方法,以及合理的项目管理来确保软件的稳定性。但是,我们不能一味地追求稳定性而牺牲开发速度,因为时间就是金钱。

此外,随着技术的不断发展和变革,我们必须能够迅速地响应市场需求,以保持竞争优势。如果我们不能快速地开发出适应市场需求的软件,那么我们就会被市场淘汰。

最后,重申我们的立场:在软件开发流程中,速度比稳定性更重要。

速度和稳定性并不是彼此对立的,我们可以通过合理的项目管理和先进的工具和方法来保证软件的稳定性。但是,在如今竞争激烈的市场中,快速地开发出软件是保持竞争优势的关键。

原文链接: http://mp.weixin.qq.com/s?__biz=MzI1MjQ3NzE2Mw==&mid=2247485541&idx=1&sn=cf4e44f9bab787a6fd6e89fcd97db76d&chksm=e9e263e1de95eaf765c0c72a0d460636ad637089b078292385646f679016cd7b1bf2ad20fde1#rd