软件开发要质量仍是要效率?

质量和效率彷佛永远都是一对冤家,尽管咱们都但愿既有质量,又有效率。html

把“质量”当作宗旨的企业,一般都有一系列的规章制度,甚至是繁重且冗余的流程用来约束软件开发过程当中种种“有意”或“无心”的威胁软件质量的行为。程序员

把“效率”当作宗旨的企业,一般其内部并没有严格的规章制度,甚至宽松到一我的均可以轻松地完成从删库到跑路。web

从事IT行业的相关人员大多知道,软件开发不一样于通常性的劳动,它并不能单纯地增长人手就能缩减开发周期,也就是说一个软件1我的开发须要10天,这并不意味着10我的就能够1天开发完成。而且在软件开发的过程当中,因为须要“适应市场的快速发展”,经常伴随需求变动等不可预知的问题。也就是在前期所作的工做可能由于某个需求而所有推倒重来。算法

下面从要质量仍是要效率两个方面来阐述,不一样的侧重点所带来的的问题。架构

咱们首先假设,公理P1:做为IT行业的从业者(开发、测试、产品等)都知道,软件开发具备必定的不可预知性测试

那么在这个前提下,倾向于“质量”的企业一般状况下有如下作法:阿里云

  • 经过规章制度让软件开发具备必定的可预知性

让软件开发具备必定的可预知性,这种方式有不少种实现,比较常见的手段是让需求变动的成本上升。一旦进入开发阶段(含设计阶段),需求不得随意变动,这种方式对开发人员相对比较友好,开发人员再也不被随意变动的需求所打扰,但同时也对产品经理提出了更多的要求。这要求产品经理须要有高超的业务能力,以及必定的前瞻性。除了让需求变动的成本上升之外,一般也会在前期作大量的工做,包括需求评审、文档设计、设计评审等会议,在软件开发的中后期不断地进行代码评审等工做。这一系列的规章制度流程,能使得软件开发再也不为所欲为,而是有章可循。显而易见,这样“传统”的开发形式,势必带来效率的降低。例如我曾经见过有的公司,一年最多发布2个版本。这在现在快速的互联网发展中是不可接受的。人工智能

而倾向于“效率”的企业,也就是一般所说的互联网公司对于效率的提高一般采起如下手段:设计

  • 经过缩短开发周期使软件开发具备必定的可预知性

目前在部分互联网公司所倡导的“敏捷开发”实际上就是经过缩短开发周期来使软件具备必定的可预知性。咱们在开头假设了了公理P1,软件开发具备必定的不可预知性。而且开发周期越长,不可预知性越大。注重质量的公司,可能更倾向于提升需求变动的成本,而注重效率的公司则缩短开发周期。二者都是为了使得软件开发变得可控。但两个不一样的方式则致使了两个不一样的倾向。htm

缩短开发周期的确会让效率变得更高,起码能更快的适应市场的需求。那为何会说缩短开发周期会使得质量下降呢?

其实这是一个显而易见的道理,缩短开发周期,理论上来说彷佛就能缩短开发时间。10个需求须要作10天,平均1个需求不就只须要1天吗?那么我为了提升个人效率,快速响应市场变化,我就采起敏捷开发的方式,这样不就既知足了效率,同时也知足了开发时间,这样的作法彷佛并不会下降软件开发的质量。这么想的一般是没有从事过技术研发的同窗。仍然回到公理P1,软件开发具备必定的不可预知性。我在作当前开发的时候,所采起的的设计基本上只适用于当前的业务模型,对于将来几乎一无所知。随着系统不断地快速迭代,一次又一次的在原有的系统上叠加新的功能修改删除旧的功能。这对于软件开发者能够说是灾难性的,没有哪个系统架构师能碰见将来的全部可能。“天下武功惟快不破”,快是快了,代码后院也快起火了。

天底下没有公司敢说我不注重质量,我只注重效率。不管是什么公司都会采起如下手段去保证软件质量。

  • 经过必定的经济利益惩罚手段

必定的惩罚手段,简单粗暴地将开发人员的bug数与绩效挂钩。不过直接将bug数与绩效挂钩的状况比较少,大多状况是bug的reopen次数,以及是否有新引入的bug。其中reopen是较为常见的一种惩罚手段,一样也能较好地推进软件质量提高。

事实上,并无哪种绝对完美的兼顾了质量和效率,对于目前的互联网公司大多所采用的是快速迭代的开发方式。但这并不表明采用这种方式的公司质量就必定低下。

“快速适应市场的变化”这自己也是一种需求,采起快速迭代的方式实际上也是为了知足这一“需求”。阿里巴巴集团CTO行癫曾谈到过,“最先,业务比技术跑的快,技术一直追业务,由于业务增加实在太快了。前两年我以为是技术推进业务,特别是人工智能兴起的以后,包括咱们程序化交易、广告平台、千人千面、推荐、搜索大量用算法和AI,包括客服等等大量用数据智能在驱动业务”1

“业务比技术跑得快”,这意味着必定一个快速迭代的过程。然后来“技术推进业务”,意味着技术走在了业务的前面,反却是技术追着业务打。这其中尽管并未说起质量,但我认为技术能推进业务不断向前跑,必定是由于有坚实的技术后盾作支撑,而坚实的技术后盾也就意味着有超高的软件质量

因此,在质量与效率的权衡利弊平衡中,不妨回过头来从新审视技术的重要性。在知足“市场快速变化”这一需求的同时,不要忘记技术也会负债,欠得越多越不牢靠。

这是一个能给程序员加buff的公众号 (CoderBuff)

  1. 《钛媒体独家对话行癫:最详解密阿里云顶层设计和底层逻辑》

相关文章
相关标签/搜索