软件研发是高科技吗?

摘要
本文阐述了两个观点,一是对软件的需求已经远远超过软件的供给能力,二是目前的软件研发模式远远够不上高科技的名声,换言之,目前的软件研发流程不是高科技,企业IT主管需要采取策略改进软件研发流程,从而提升开发效率。

目标读者
企业和机构的CIO/CTO,主管科技的政府领导

任何一位政府高官或者企业高管都会告诉你,我们正在经历一个激动人心的信息文明时代。信息技术和通信技术的飞速发展,使得整个人类社会处于一个信息化、网络化、智能化的变革之中。各种新兴的技术日新月异,令人目不暇接。一方面,它们促进了生产效率的提高和社会关系的改善,另一方面,它们也带来了新的问题和新的矛盾。

对于企业和机构的CIO/CTO来说,信息技术的发展使得CIO/CTO在企业和机构里的角色越来越重要,企业和机构越来越依赖科技部门的力量来提升组织的工作效率,为客户提供体验更好、功能更丰富的产品和服务,并由此保持市场竞争的优势。

今年6月,微软以75亿美元收购代码托管平台GitHub。 GitHub上面有8500万个代码库(也可称为软件项目),2800万名开发人员在GitHub上进行协作开发。当微软首席执行官 Satya Nadella 谈到为什么要收购GitHub时,他说,“现在每一家公司都是软件公司,开发人员是这个‘新时代’的创建者,他们在为整个世界编写代码,而 GitHub 是他们的‘家’”。

有趣的是,2017年有将近70万来自中国的新用户在GitHub上注册。

微软看到了世界对软件开发人员的巨大需求,因为世界对软件的需求已经远远超过软件的供给能力

全球权威的IT研究与顾问咨询公司Gartner预测,到2021年,全球市场对应用开发需求的增长比相应的研发能力的增长快5倍以上

有人说,人工智能的发展将导致对开发人员的需求大大减少,因为一些原来需要开发人员手工编程的任务可以由人工智能代替。这种说法不无道理,但是它没有看到有大量新的应用场景需要更多的开发人员。

软件的需求增长有几方面的原因。第一,新兴技术层出不穷,移动互联网,大数据,云计算,人工智能,增强现实/虚拟现实, 3D打印,区块链,物联网等技术在较短的时期内集中涌现,另外,芯片、存储等硬件的性能不断提升,使得企业急于采用这些最新的信息技术成果以期在市场上获得竞争优势。第二,新兴的商业模式不断涌现,比如O2O,众筹,众包,P2P,共享经济,等等,使得市场上出现了大量采用新型商业模式的初创企业,它们不断蚕食传统企业的市场并创造新的市场,而这些新型的商业模式都需要全新研发的业务系统来支撑。第三,也是最根本的原因,是整个社会正在经历一场深刻的数字化变革,传统企业、机构和政府都在向数字化转型,大量线下的业务组件和业务流程都在往线上转移,这些自然都离不开软件

精确计算和预测全社会对软件的需求是非常困难的,这类统计数据很少,下面举的例子是美国军方的。虽然军用软件和民用软件有很大的不同,而且美国的情况与中国的情况也有所不同,但是毕竟这是一份难得的、公开的研究报告,可供参考。

2017年美国国防部资助的一项研究分析了美国国防部对软件的需求与供给的关系。研究报告显示,美国国防部软件需求的增长在15%~25%之间,也就是说每3-5年新增软件体量增加一倍

这张表上显示的是每年新增的代码量(美国军方的编程语言主要是Ada),并不包括需要维护的老代码。新增的代码分为两类,一类是针对老系统编写的维护性代码,一类是为全新系统编写的代码。

这是软件的需求,那么软件供给的情况又如何呢?供给侧主要包含两个因素,开发人员人数的增长和开发人员平均生产力的增长。根据历史统计数据,假设加入美国国防部项目的软件开发人员每年增长5%,平均生产力每年增长4%(两者都是最乐观的假设), 逐年的软件生产能力预测如下图所示(图中的绿色曲线):

可见在2017年美国国防部已经无力同时维护老代码又开发所有想开发的新代码了。到2020年,根据软件需求预测,美国国防部需要29万名软件开发人员,但实际上开发人员总数只能达到13.5万人,还不到总需求人数的一半。

那么,软件需求的旺盛与供给的不足之间的矛盾如何解决呢

明显的解决方法有三种,第一是控制需求,这显然是行不通的,在充分竞争的市场上先进技术就是竞争优势,在条件允许的情况下,没有哪个企业不愿意以最快速度采用先进技术来超越对手。

第二是扩大软件就业人才基数,这跟整个社会的大学教育和职业教育有关,不是哪个单独的企业或者机构能够在短时间内改变的。另外,增加开发人员意味着人力成本的增加,而企业IT项目的预算又是越来越紧张的,花更少的钱在更短的时间里开发出更多的软件已经是软件项目的常态了。

剩下的第三个选择就是提升软件研发的效率。模块化开发,敏捷开发,集成开发工具,团队协同工具,自动测试工具,等等,这些在提升软件研发效率上都起到了很好的作用。但是我们做的还远远不够,就像上面Gartner所预测的和美国国防部研究报告所指出的那样,软件开发效率的提升远远赶不上对软件的巨大需求。

那么,问题出在哪里呢

让我们来重新审视软件开发的整个过程。事实上,软件开发流程并不像我们大多数想象的那样是很高科技的,相反地,软件编程大部分还是非常传统的手工作坊式的工作,耗时,琐碎,大部分时间里个人独立工作,需要高度集中精力,经常会有缺陷。

如果你把软件编程跟真正高科技的行业,比如汽车制造业,相比的话,两者之间的差别就非常明显了。在汽车制造业,首先设计出一个概念车的数字化蓝图,这个蓝图可以以各种方式来呈现这辆概念车,甚至可以让这辆车去碰撞一棵虚拟的树来测试车的安全性能,这些都是在真正的样车生产出来之前就可以完成的。当各种测试都完成,并且所有相关方都满意的时候,这个设计蓝图会连接到一条长长的机器人生产线,进入车的量产阶段,在这个生产线上,自动化程度高的惊人,需要人工参与的地方很少。

如果拿软件开发过程与汽车生产过程相比,软件开发过程落后汽车生产过程70年。软件开发过程首先是需求分析和产品设计,其结果是一叠厚厚的文档(一般称作产品需求文档),上面描述了产品应该长什么样以及它应该有的所有功能。然后,这叠厚厚的文档交给了用户,由用户进行确认。用户确认以后,一批程序员根据这些文档编写代码,完成文档上面所要求的功能。最后,再由用户运行软件,验证文档上面的所有功能都完全按照要求实现。

首先,产品的需求文档离真正意义上的蓝图还差得很远,第二,没有一种机制让这个需求文档在接下来的开发流程中被严格的遵守,这就导致在产品完成以后,仍然需要用户再一次通过运行软件来验证所有的需求。由于产品需求文档并不是真正意义上的蓝图,其间有很多模糊的、容易造成歧义的地方,再由于整个开发流程无法保证严格遵守产品需求文档,生产出的产品与用户的真正需求之间不免产生各种差异,结果造成软件的多次修改。第三,由于有人工的大量参与,由于整个流程的自动化程度较低,软件产品的质量无法达到理想的状况。

那么,有什么更好的软件开发流程呢?敬请关注本系列的后续文章。

软件研发是高科技吗?相关推荐

  1. 技术MBA高科技企业的“宠儿”

    美国克里夫兰战略中心最近的调查表明:在发展高技术产品比较集中的300家美国大企业中,60%存在短缺高技术管理人员的问题.美国最大的20家电脑.半导体厂商中,大部分迫切需要增加这方面的人才.美国通用汽车 ...

  2. 张亚勤:高科技人才管理的五个方程式

    文 / 张亚勤 [编者按]张亚勤以高层管理者的视角,用五个方程式构建了一个适合高科技人才学习.工作和成长的系统.对于普通开发者来说,这些公式同样适用,因为每个人自成一个系统,所以五个公式又可以变形为个 ...

  3. 高科技人才管理的五个方程式

    作者:张亚勤 [编者按]张亚勤以高层管理者的视角,用五个方程式构建了一个适合高科技人才学习.工作和成长的系统.对于普通开发者来说,这些公式同样适用,因为每个人自成一个系统,所以五个公式又可以变形为个人 ...

  4. 高科技领域零的突破永不嫌多 --- 我看嫦娥四号成功登陆月球背面

    高科技领域零的突破永不嫌多 --- 我看嫦娥四号成功登陆月球背面 上周最大的一个高科技热点无疑是中国嫦娥四号探测器成功登陆月球表面.笔者有高度关注这个热点事件,这是中国航天科技事业的一个重要的里程碑, ...

  5. 字字珠玑!任正非最新内部演讲:高科技急不来,股市为了圈钱夸大太多

    来源:综合自中国企业家杂志.心声社区 摘要:"科学研究,没有浪费就不可能有成功.华为公司走到今天,我们在产品研究的成功率应该还没有超过50%,相当于我们每年有几十亿美金被浪费了,但是培养了一 ...

  6. “硅谷之父”传奇:拯救斯坦福大学、培养大批高科技人才、指导创立惠普

    作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 有人说,当今硅谷之中99%的电子工业都与一个叫做弗雷德•特曼(Frederick Emmons Terman) ...

  7. 《2040大预言:高科技引擎与社会新秩序》——2.6 会计师如何改写未来

    本节书摘来自华章计算机<2040大预言:高科技引擎与社会新秩序>一书中的第2章,第2.6节,作者:[英] 彼得 B. 斯科特–摩根 更多章节内容可以访问云栖社区"华章计算机&qu ...

  8. osg 倾斜数据纹理_高科技构筑逼真效果——无人机倾斜摄影技术在实景三维建模的应用及展望...

    三维建模作为"数字城市"地理空间框架建设工程的一个重要组成部分,直观且真实地还原城市风貌,为城市的规划建设,以及民众生活带来便利.倾斜摄影作为一个重要的信息获取技术,运用图片结合技 ...

  9. 机器人演唱邓丽君是真的吗_20年后,高科技让她与邓丽君终相逢

    程琳 前段时间,很多社交媒体上出现了一段让人惊诧的视频,在视频里已经去世了20年的邓丽君风华正茂,与影响了几代人的"摇滚姑奶奶"程琳同台对唱了那首脍炙人口的<你怎么说> ...

最新文章

  1. 计算机网络本地连接被禁用说明什么,win10系统网络被禁用重新启用本地连接的设置技巧...
  2. Devexpress之dxErrorProvider
  3. 请说明一下Spring中BeanFactory和ApplicationContext的区别是什么?
  4. NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)
  5. Mysql存储结构B树与B+树与索引
  6. 基于泛型编程的序列化实现方法
  7. anjular.js读取数据库数据调用实例
  8. AOP之proceedingjoinpoint和joinpoint区别(获取各对象备忘)、动态代理机制及获取原理代理对象、获取Mybatis Mapper接口原始对象...
  9. mysql workbench第二栏图标中英文意思
  10. 开源项目推荐:基于Qt开发的远程桌面监控和文件传输软件Aspia
  11. 隐藏于世的网站内页seo优化技术
  12. CSDN 中 MarkDown编辑器自动生成目录
  13. SSH localhost 报错解决方案
  14. 打开计算机显示服务器失败,win10系统打开windows Media player提示服务器运行失败的详细步骤...
  15. python对数正态分布函数_Lognormal Distribution对数正态分布
  16. macOS Monterey 12.2 (21D49) 虚拟机 IOS 镜像
  17. 2018年最值得关注的10家区块链公司新秀
  18. 美国大学倒闭危机!1/4高校或将破产,清华本科留学率下降
  19. 【meshlab使用指南】06、Select Faces/Vertices inside polyline area功能不能选中点/面
  20. 题目:滑动解锁 蓝桥杯

热门文章

  1. JAVA获取tomcat信息
  2. 过敏性鼻炎是怎么引起的?
  3. 2023百度统计被人恶意刷广告解决办法
  4. 【控制系统数字仿真与CAD——实验报告】实验四:黄金分割法最优化PI调节器参数(文末附完整代码 + 实验结果)
  5. 第三周-周测-Rhizomys
  6. Python学习——(2)通过网络爬虫获取数据
  7. 3---条形图(matplotlib)
  8. i.MX6ULL应用移植 | 移植ALSA到Linux开发板(alsa-lib、alsa-utils 1.2.7版本)
  9. flag = true和flag == true
  10. python学习笔记一——鸭子模型