大家好,我依然是很不低调,自我标榜“Andy Liu 出品,必定来自双手沾满泥的精品实践”的 DevCloud 某产品经理。
业界对于战略规划,有一句通俗的说法,叫做“站在后天看明天”。软件工程从诞生之初就是研究并克服软件危机而应运而生的。
软件工程 50 多年的历史,主要经历了三个阶段,并努力解决这三个阶段的主要问题。
阶段 1(借鉴制造,管理偏差)
最早的软件开发都是像手工坊一样,整个过程经常会出现混乱,无序甚至失控,软件产品的质量也参差不齐。当时克服危机的主要方法论是借鉴硬件制造,管理软件开发过程中的偏差,重点解决的是软件开发的质量、可控、有序的问题,包括 CMM,面向对象,瀑布开发等。
阶段 2(认清本质,提升效率)
第一个阶段因为强化了偏差管理,虽然偏差得到了一定的控制,但是也抑制了一定的自由,影响了软件产品的交付效率,软件开发变得趋于机械和过度流程化。而且当时适逢互联网产业的兴起,尤其是面向消费者的互联网产品肆意生长。这个时候速度、效率和创意越来越重要,甚至对于很多企业生死攸关。
因此很多业界从业人员开始呼吁回归到软件的本质:软件的生命周期是个智力和脑力活动,不同于制造业。随之敏捷宣言公布,至今,敏捷的理念和实践依然方兴未艾。总体而言这个阶段是为了尝试解决软件开发的效率和速度问题。
阶段 2.5 (理念延伸,全生命周期)
敏捷早期主要是解决软件开发的问题,其实并没有覆盖到软件的全生命周期,而随着互联网渗透率越来越高,很多的软件是通过互联网来提供服务,不再是通过软件包下载由用户来安装,提供软件服务意味着软件的生命周期延伸到运维、运营,DevOps 是这个阶段的一个代表,DevOps 也是顺应软件即服务这个趋势的,也是敏捷理念向运维、运营的延伸。
虽然软件工程历经了几个阶段,但是并不能因此认为新一代的软件工程方法就可以鄙视上一代的。笔者一直秉承的观点:任何的软件工程方法论,都一定是要解决产业问题的,不同的业务场景,不同的商业和开发模式面临的问题和挑战不尽相同,因此也需要与之相匹配的软件工程方法。不能解决产业问题的软件工程方法论,最后都被抛弃了。
在华为,其实并不存在所谓的软件工程鄙视链,华为的市场覆盖很广,从消费者业务(手机等),到企业业务,到运营商业务,都是不同的场景,不同的商业和开发模式,因此华为内部是多种软件工程方法和流程并行。只是在这个过程中,每一种工程方法都在互相借鉴,迭代改进,所以华为的 CMM 不完全是业界的 CMM,华为的敏捷也不完全是业界的敏捷,都融合了华为自己的实践和理解。
正如笔者经常说的:瀑布依然为手机终端高质量品控、全球海量发货保驾护航,敏捷依然让我们在运营商市场做到质量和效率的最佳平衡,DevOps 也在为华为云提供 Build-In 的使能。
从去年开始,从很多公共的渠道,大家也都知道华为在对华为内部的软件工程进行新的战略投入,站在外人的角度,通常会觉得华为的软件工程已经相当不错了,但是为什么华为还要进行如此大规模的战略投入呢?华为从来就不是个激进派,这背后华为的出发点来自于什么呢?
如果您希望更多的了解华为为什么没有软件工程鄙视链?
如果您希望了解在已经相当不错的基础上,华为为什么又如此大手笔的进行软件工程的战略投入?
如果您希望了解软件工程的下一步何去何从,借以了解软件工程要解决的新的产业问题是什么?
那么欢迎您来 HC 大会现场听笔者“瞎扯”一番:)
点击链接进入HC2019售票通道,注册大会账号即可购买。
评论