现代软件工程是什么?

举报
云上有未来 发表于 2019/10/28 11:41:05 2019/10/28
【摘要】 现代软件工程是什么?从软件历史的横向时间轴和由外到内的纵向剖析优异现代软件公司的运作,我们可以看到现代软件工程可以是是通过优异的人/文化和服务的结合来支撑持续,高质量的极速反馈,已达到持续的商业成功。

 前言

现代软件工程的定义,特征和趋势走向都是众说纷纭,犹如盲人摸象,各持己见

盲人摸象.jpg

 

预测未来软件行业的发展也同样是较困难和充满风险,几乎不可能,很多名人,包括盖茨,曾试图预测软件未来 (“640K ought to be enough for anybody.”),结果闹出大笑话,因为市场和客户需求千变万化。然而我们比较确定和清楚的规律之一是:经济是社会的基础,有效获取并利用经济参与者的信息反馈是商业成功的核心基础。对信息反馈的依赖和需要从来未变,这是一切事物上升改进的驱动力,所谓永生凤凰的源头,很多成功的商业模式和高效的企业运作都是基于这个规律。


从软件历史来看现代软件工程

如果历史是一面镜子,我们不妨从反馈这个角度看软件的发展历史,可能会看出端倪:


1995年前软件技术有尚不少局限性,软件产品发布和反馈周期偏长(如盒装产品的Beta 通常要2-3年),产品的调整整也通常是按这个节奏,

像缓慢的周期波.png

 

像缓慢的周期波 (如上图所示)

 软件的发展历史,.jpg

 1995互联网时代的联网软件和电子商业到来,消费者和产品制造商间的反馈链路在不断缩短,消费者不需通过批发商,中间商,零售商等就中间环节或经过物理的商店就可以在网上直接和厂家电商对接并相互提供反馈,商业模式和人的商业行为因此都发生了巨大变化,社会也变得更加便利。

1999年物联网的出现和技术的不断成熟,产品制造商自身服务的反馈路径也在缩短,例如生产流水线的制造信息,可以提供IoT迅速反馈,从而保证高效运作,企业运作的模式也在发生前所未有的改变,效率得到空前的提升。特别是从2006年亚马逊公有云服务的大规模商用,使产品/服务发布和反馈的速度进一步加快,很多以前认为不可能的计算能力,现在可以通过通用服务器和几乎无限的计算资源得以实现。以前停留在理论的技术如大数据,AI等现在可以通过分布式计算,海量存储等得以完成,这些技术使得快速高质量的反馈成为可能。随着这些新技术的出现和演进 SDN 工业4.0,等),更多的商机的也更频繁的出现,商业机会的出现常是月级和周级(Forrester Research 结果显示),产品/服务提供商和客户间反馈的速度也随之加快,如快速的高频波。随着科技的突破,反馈的链路有能力变的更短,反馈的速度可以变的更快,我们如何去更快的变更以获取更快的反馈是公司竞争的焦点。

产品服务发布和反馈的速度.png


随着科技进步,信息反馈链路在日益缩短,反馈速度在日益加快。这个趋势持续下去,谷歌现有的搜索引擎业务都可能很大程度被颠覆,因为人与人的连接,企业与企业的连接是最直接的,链路是最短的 (如下图SD的红线)。


 反馈速度.jpg

相互间不需要大一统的界面和中间商才能找到彼此,南极帝企鹅家庭可以在百万群中轻松的找到彼此。

帝企鹅.jpg

企业间和个人间可以有Bot相互广播,查询,连接,交换信息等,获取信息反馈,以调整技术设计和商业设计。未来的软件更多的是去中心化和分布式,成为联邦的生态,美国的中大公司也大都意识到这点,在纷纷进行数字化转型,日益软件化和平台化,以便在·未来占取一席之地,成为大众服务和企业服务的直连点。如果美国是世界软件行业的晴雨表,我们大致可以看到世界软件行业可能的走向。

 

1995年以前相比,企业尽快获取反馈的诉求没变,但是科技的进步使得高质量的快速反馈成为可能。企业间争夺比拼的焦点就是:谁能更快的获得高质量反馈,从而迭代上升,占得先机。现代软件工程的目的很大程度上就是匹配和使能业务快速高质量的反馈,它本身的运作也应该遵从快速高质量反馈的原则和规律。

 

从先进的现代软件公司来看现代软件工程

如果我们无法很清楚的讲述啥是现代软件工程,我们至少可以从先进的现代软件公司的运作, 有外到里来观察和推理现代软件工程应该是啥样子的。以道琼斯市值第一的微软公司为例,它的运作基本上是为了缩短反馈链路而设置的

组织:微软是非常扁平化,基层员工到CEO通常不超过6级,就是为了减少纵向信息反馈链路,中间管理层很薄,强调工程师文化,业务主管也是资源主管, 便于决策管理。同时权利下放到不能下放为止,因为团队离服务数据最近,可以更快获得客户反馈以便快速决策和高速自转。横向间,角色融合例如产品经理和项目经理融合,统称PM。开发和测试融合统称Engineer。开发和运维融合为DevOps工程团队。人的能力上也是要求一人多能,工程师是全栈的,可以做开发,测试,部署,服务支持,工程师对前台,中台,后台技术都要有一定的能力。其目的就是为了减少沟通成本,context switch和信息流失,也就是提升横向信息反馈速度

扁平化组织1.jpg

 

同时企业和部门的战略,指导原则,工程标准,职称级别和能力要求等是对齐一致的,以便于纵向和横向的反馈高效,减少相互沟通反馈不同频,保证高速公转和形成共振。

复杂的软件业务经常需要协同和知识共享,为了打通人与人,部门与部门的鸿沟,加快高质量反馈速度和信息传递,微软的绩效2013年开始从个人表现,合作和利用他人成果三个维度评价员工,使员工能无后顾之忧地合作和共享。连领导和员工的绩效沟通反馈也从以前一年一次到持续Connect和反馈。

文化:强调一个微软(One Microsoft)来加快内部相互间的高质量反馈和共同对外快速响应客户的反馈

流程:DevSecOps为主的流程能够很快的完成从业务到客户和客户到业务的双向反馈。安全与工程融为一体,流程要求基本工具化和自动化,来加快反馈速度。公司和部门对齐工程分类术语,标准和度量,来保障有效高质量反馈。

 

工程:持续不断的缩短从业务到客户和客户到业务的双向反馈。例如需求管理中,持续规划调整,使用MVP Minimum Viable Product)和 A/B Test等机制迅速获取客户高质量反馈来不断瞄准靶心。开发中利用重点投入和打造的强大中台云服务和好的开源软件,快速搭建产品,上线服务。测试也是尽快的获得质量反馈,大量是LLT,因为运行速度快,反馈时间短,在结合API/契约测试, 质量有基本保障后在云上通过灰度发布等机制获得在生产线上的运营,运维数据,闭环反馈路径,实现Build Measure Learn的持续循环

企业和部门战略.jpg

 微软传统的Windows软件也是在走向服务化Windows as a Service (WaaS)和通过Ring的机制获取快速反馈。另外微软的硬件团队如SurfaceXbox也在软件化和敏捷化,用仿真,VR/AR等技术及早获得反馈.

 走向服务化Windows as a Service (WaaS).png

工具平台:打造全公司1ESOne Engineering System)生态,避免重复昂贵投资,建立快速CI/CD通道,使能服务快速上线,获取反馈。

从微软的优异运作我们可以看出现代软件工程包涵人/文化的优异和服务的优异。人与文化的优异的最高层面是彻底的角色融合,来达到高质量的快速反馈。服务的优异包涵:服务支柱和原则,工程基础知识,工具,流程

现代软件工程成熟度.jpg

现代工程的实际表现表现:人/文化到工程原则,工具和流程,到服务和特性,到客户体验的高质量快速的双向反馈

现代工程的实际表现表现.jpg

 

总结:

从软件历史的横向时间轴和由外到内的纵向剖析优异现代软件公司的运作,我们可以看到现代软件工程可以是是通过优异的人/文化和服务的结合来支撑持续,高质量的极速反馈,已达到持续的商业成功


本文作者吴昊

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。