国内外软件开发上的差距与分析

提高自己,迎接好的未来。


在开始任何其他文字之前,首先有必要正视一个根本现实:国内外软件开发的水平是有差距的。

这一结论的最直接证据是每一轮新技术的发起者基本上都是国外的人或公司:

从方法论(CMMI,敏捷等)到各种框架(近来很热的Hadoop等)再到新的编程语言都是如此。


总的来看这类差距似乎可以概括为“原创的缺失”,大多时候,我们只是处在一种“跟随者”的角色上。

RUP出来后我们跟谁RUP,敏捷出来我们跟谁敏捷,云计算出来后我们跟随云计算,大致如此。


年纪小的时候,会单纯的以为造成这种局面的主要原因是个人技术能力不足或努力不够。

但现在想来,这反倒是次要原因。

单以单兵能力来看,国内外的程序员群体未必就有很大的差距。

这点可以反过来看,那么多开源的库,看过代码后,那个是国内程序员看不懂并完全写不出来的?


如果说既能看懂,有足够的时间也可以自己写出来,那么大致上就不是个人技术能力的问题。

这样事情就变的有些微妙,我们也就需要在更高的视点上审视一下促成一件事情的因子。

一件事情的成败大致可以用四个维度去考量:

  • 有没有意识去做 -->创新
  • 有没有能力去做
  • 有没有时间去做 -->环境
  • 有没有动力持续去做 -->意愿和环境

排除第二点能力之外,其余三点可以大致概括为:勇为天下先的意识(创新)和创新得以生长的泥土(意愿和环境)。

这几者彼此影响,不可分割。


一提创新,很多人可能会想到其瓶颈是没有想法,进而认为差距的主要原因是意识问题。

但这很可能是错的,就我自身的观感,程序员这个群体里,现实的情形应该是想法很多,但受种种制约,实践下来的不多。

现实的需要激发了创新,也提供了实践创新的场所和养分,脱离实际需要的创新是走不远的。

这似乎只能寄希望于本土软件企业的崛起,为程序员提供相应的环境(时间+实践创新的场所),

接下来如果程序员这个群体再有实践自身追求的意愿,那么事情将会改观。


国内外差距的一个间接证据是国内软件开发的工程化的程度过于薄弱。

软件这东西过度工程化是不行的,但不工程化也一定是不行的。

先不论CMMI这种大型方法论,就说最简单的软件工程数据收集。

在这点上国外比较容易找到各种数据,比如下面这样的表格:

代码行/天 最低值-最高值(典型值)

软件类型

10,000代码行的项目

100,000代码行的项目

250,000代码行的项目

航空电子

15-150(30)

3-45(7)

3-30(6)

应用系统

120-2,700(450)

30-1050(90)

15-750(75)

命令与控制

30-450(75)

7-90(15)

6-75(12)

嵌入式系统

15-300(45)

4.5-75(11)

3-60(9)

公众因特网

系统

90-1500(225)

15-300(45)

15-225(30)

内部内联网

系统

225-2700(600)

45-1050(120)

30-750(90)

微代码

15-12030

3-306

3-154

过程控制

75-750(150)

15-150(45)

13-130(30)

实时系统

15-225(30)

3-45(7)

3-45(6)

科学系统/

工程研究

75-1125(150)

15-225(45)

12-150(30)

套装软件

60-750(150)

15-150(30)

10-120(30)

系统软件/

驱动程序

30-750(90)

7-150(15)

6-120(13)

电信软件

30-450(90)

7-90(15)

6-75(7)

即使是在日本,也有一个叫IPA这样的机构在定义各种指标,并持续收集数据。而国内似乎还没人做这类事情。

这样的话对软件开发个体而言,负面影响可能并不直观,但从整体来看却也是一种切切实实的差距。

这点上很难靠个人来推进和改善,需要有一种组织(软件协会?)来持续推进才有可能改观。

------------------------------------------------------------------------------------------------------------------------------------

理想流口号:创建超一流方法论,为培育超一流软件公司贡献力量。

理想流博客:http://blog.csdn.net/leezy_2000


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask爱家租房--订单(房东接单、拒单)

文章目录0.效果展示1.效果展示2.后端接口3.前端js4.前端html0.效果展示 1.效果展示 1)当房东点击“客户订单”,js向后端接口get_user_orders()获取数据,订单页面开始加载; 2)当房东确定接单时,js会向后端…

WebView性能优化--独立进程

Android允许一个app同时存在多个进程,可以根据需要把不同的模块放到不同进程中处理。 一、WebView独立进程的好处 1.有效增大App的运存,减少由webview引起的内存泄露对主进程内存的占用。 2.避免WebView的Crash影响App主进程的运行。 3.拥有对WebView独立…

linux修改python默认版本

linux修改python默认版本 update-alternatives --config pythonposted on 2018-05-24 22:42 psycheman 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/psycheman/p/9085576.html

什么是有穷状态机

有穷状态机的作用是描述对象在它的生命周期内所经历状态序列,以及如何响应来自外界的事件。有穷状态机首先包含一个有限状态的集合,还包含了从一个状态到另外一个状态的转换。 有穷自动机看上去就像是一个有向图,其中状态是图的节点&#xf…

linux设置开机自启 etc rt.d,Linux下禁止服务开机自启动

一、 Upstart是兼容System V的配置方式的,但主要的服务配置放在 /etc/init 下,这也就是为什么修改 /etc/rc${runlevel}.d/ (Ubuntu默认启动runlevel2,也就是/etc/rc2.d/)下的MySQL启动配置并不能真正起到禁止MySQL自启动的原因(比如使用命令 …

开发经验和屁股的关系

昨晚为CSDN俱乐部的同学们做了一个讲座《微博开发、云平台及一个微博应用开发的简单方案》。已经用屏幕录相机记录下来了,不想讲完一边和同学聊着,一边收拾,直接关机,教室中带有保护卡的电脑自然不给面子,录相文件就此…

ZCARD key

返回key的有序集元素个数。 ##返回值 integer-reply: key存在的时候,返回有序集的元素个数,否则返回0。 ##例子 redis> ZADD myzset 1 "one" (integer) 1 redis> ZADD myzset 2 "two" (integer) 1 redis> ZCARD myzset (in…

Petri网

并发系统中遇到的一个主要问题是定时问题。这个问题可以表现为多种形式,如同步问题、竞争条件以及死锁问题。用于确定系统中隐含的定时问题的一种有效技术是Petri网,这种技术的一个很大的优点是它也可以用于设计中。Petri网是由CarlAdam Petri发明的。在…

Flask爱家租房--房屋管理(获取房屋详情)

文章目录0.效果展示1.思路总结2.后端接口3.前端js4.前端html0.效果展示 1.思路总结 1)房屋详情页面开始加载时,detail.js首先通过定义的函数(重点:document.location.search),截取需要向后端取得详情页面的…

MAC 安装 pygraphviz 找不到头文件

networkx的有向图只能通过箭头来区别两点之间的两条边,但是我在复现snake论文的时候,需要绘制两个交叉口之间的两条不同方向的路段,最后选择了pygraphviz 直接通过anaconda打开对应终端,pip install pygraphviz,一直报…

linux ntp连接失败,linux ntp服务器连接异常

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率三年低至5折,多种配置可选了解详情认证鉴权|…

如此如此,怎能师夷长技以制夷!

以一个爱国的软件设计者的角度来看这样一个weibo,大概的内容就是:北京南站的4SQ上有个老外留言吐槽:“没有中国身份证根本就没法在自动售票机上买票,那他妈的他们弄个英文界面干屁啊!” 出于行业的敏感性,我感到很有意…

基于supermap webgl三维楼层显隐控制思路

supermap 9D 产品中,可以先获取到模型的simd值,再调用setOnlyObjsVisible方法控制模型中单个物体的显示和隐藏。 var smid "94"; //楼层的smid值,多个楼层,则用数组的方式 var ids []; var layers viewer.scene.la…

#python计算结果百位500向下取整,(0-499取000,500-999取500)

!/usr/bin/env python coding:utf-8 计算结果百位500向下取整,(0-499取000,500-999取500) import math calc_Amount float(input("输入所有可需金额:")) act_Amount calc_Amount if calc_Amount > 0: value2 calc…

什么是Z语言

Z语言是一种用“数学文字”或“数学符号”来描述计算机系统的规范化语言,它不但能应用于计算机硬件系统,而且也特别适用于计算机软件系统,Z语言描述“做什么”而不涉及“怎么做”,只对目标软件系统进行功能描述。实际上&#xff0…

Flask爱家租房--房屋管理(搜索房屋列表)

文章目录0.效果展示1.后端接口2.前端js3.前端html0.效果展示 1.后端接口 house.py部分接口: # GET /api/v1.0/houses?sd2017-12-01&ed2017-12-31&aid10&sknew&p1 api.route("/houses") def get_house_list():"""获取房…

c语言用if语句判断字符类型,C语言if语句的使用

C语言if语句的使用【例3】#includeint main(void){char c;printf("input a character: ");cgetchar();if(c<32)printf("This is a control character\n");else if(c>0&&c<9)printf("This is a digit\n");else if(c>A&&a…

SQL的特点

1.综合统一集数据定义语言&#xff08;DDL&#xff09;&#xff0c;数据操纵语言&#xff08;DML&#xff09;&#xff0c;数据控制语言&#xff08;DCL&#xff09;功能于一体。可以独立完成数据库生命周期中的全部活动&#xff1a;定义和修改、删除关系模式&#xff0c;定义和…

编程语言API性能大比拼

Ciaran是Skimlinks项目团队中的一名领导者&#xff0c;热爱开发&#xff0c;在业余时间喜欢研究一门新语言。作者和他的团队在开发Skimlinks项目时遇到了一些困难&#xff0c;于是做了这份测试&#xff0c;文中将Node.js、Scala、Go、Python、PHP进行对比&#xff0c;最终Pytho…

ubuntu 安装ssh服务

1&#xff1a;安装 $ sudo apt-get install openssh-server 2&#xff1a;检查ssh服务开启状态 $ ps -s | grep ssh 3&#xff1a;启动ssh服务 $ service ssh start 4&#xff1a;本地登录 $ ssh localhost转载于:https://www.cnblogs.com/andy1327/p/9089930.html