速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Stack Overflow 技术报告给开发者哪些启示

  • 2015-04-17
  • 本文字数:3936 字

    阅读完需:约 13 分钟

最近,国外著名的技术问答社区 Stack Oeverflow 发布了一个技术报告,里面包含了关于开发者对于技术好恶程度的调研结果,非常有意思,InfoQ 也做了相关的新闻报道,不过里面更多的是数据,缺少了数据背后的分析,希望这篇文章能够结合数据来探讨其背后的原因、启示等等,对开发者有所帮助。

先说说这篇报告的代表性,据说,Stack Overflow 的问卷调查在今年 2 月份通过它们的网站进行,内容为全英文,并且在各大社交媒体上进行广告宣传。来自总共 157 个国家的超过 2 万 6 千名开发者回答了问卷中的 45 个问题。虽然,Stack Overflow 特别提示大家其调查结果无法全面准确地反映出全球各种开发者的真实情况,但我却认为其结果很具有代表性,试想哪个开发者问卷能够获得如此多的采集样本,其反应的趋势和问题值得我们认真的分析和思考。

接下来,让我们看看编程语言(也包括部分框架)在开发者中的使用程度。 看这张图:

解读:

  • 排在第一位的是 JavaScript,情理之中又意料之外。居首位的不是传统的服务器端语言 Java 或者 C#,而是 JavaScript,这充分反映了如今前端开发者的重要地位,首先,用户体验在过去几年被各个公司提到了前所未有的高度,导致前端领域的语言、框架、社区都得到了快速的发展。关注前端的人多了,JavaScript 的开发者自然也多了。第二点,“前端语言后端化”的进程在加速,以前,JavaScript 只作为一种前端的语言存在,而随着 Node.js 技术和“全栈工程师”出现,JavaScript 被越来越多地应用到后端服务器场景中,并且表现不错,所以 JavaScript 的领地又扩大了不少。第三点,移动互联网的发展,虽然 iOS 有 Object-C、Android 有 Java,但是为了兼容各个平台,技术社区冒出了很多跨平台的移动开发框架,其中核心的语言就是 JavaScript,加上 HTML5 的成熟,混合应用的不断出现,JavaScript 在移动开发领域也占据了一席之地。由此,我们可以看出 JavaScript 超过 50% 的开发者使用率是实至名归,也是大势所趋,虽然现在有些新的前端语言比如 Dart 出现,但根本无法撼动 JavaScript 在未来 5 年的地位,新兴语言更多地选择了最终转化成 JavaScript 来运行。虽然 JavaScript 语言并不十分漂亮,存在各种问题,但时代给了它发展的好机会,被社区推动着向前发展。对于开发者来说,不论是前端还是后端,掌握 JavaScript,都是不错的技术投资。
  • SQL 排在第二位,其实这让我心情有些复杂。一方面说明开发者平时都与数据库打交道,而且人数众多;另一方面,我不太提倡大家在日常开发中自己写 SQL、做数据库相关的编码。因为,以我个人的经验包括和一些性能分析专家、APM 厂商交流的结果,软件产品或者应用中最突出的性能问题往往来自于拙劣的 SQL 语句、调用、资源处置等。这些问题往往都是一些普通的开发者制造的。我的建议是,大家可以懂一些 SQL 知识,但是在实际工作中,最好由团队的数据库专家(如果没有的话,最好马上指定并培养一位)来搭建数据库相关的代码框架、规则,然后根据你的需求,由数据库专家来编写实际的 SQL 代码和相关调用,避免出现严重的性能问题。
  • 第三、四位分别是 Java 和 C#,这两位总是结对出现在各种场合,而且往往排在前面的是 Java。今年是 Java 诞生 20 周年,这么多年来,Java 经历了很多,也出现了很多的竞争对手,但现在依然是服务器端语言的首选。在移动互联网时代,Java 又依靠 Android 平台抓住了开发者,这几年,Java 的发展更多的依靠于社区,并且在不断推出新的语言特性,追赶新语言。不管怎样,20 岁的 Java,优势在于成熟的社区和环境,中规中矩,依然值得开发者学习和关注。说到 C#,不如说说.NET 家族,如今的微软越来越开放,今年开源.NET,在社区中也是引起了重点关注。前几天,我和一位.NET 社区的媒体编辑聊天,他说 C#在国内的使用者其实很多,大部分高校都用的是免费的 Visual Studio,所以学生们都用的是.NET 平台,不过毕业之后相当一部分人因为工作的需要换成了 Java 或者其他语言。由此也可以看出,.NET 的群众基础不错,企业级开发市场也有一定的市场份额,接下来要在互联网、移动互联网开发方面发力了。最近,Windows 10 在中国的落地也很有新意,和 360、小米、联想、腾讯等合作为用户升级操作系统,而且不论盗版与否。所以,C#的前景值得期待。
  • PHP,排在第 5 位,老当益壮的 Web 开发语言,没什么可说的,Web 开发者的必备技能之一,致敬。
  • 第 6-8 位的是 Python、C++ 和 C 语言。Python 语言很低调,它的位置比较靠前,也反映出了目前运维、云平台等领域对脚本语言的强烈需求,Python 又一次找到了自己大施拳脚的地方。作为曾经的 Python 应用开发者和粉丝,我想说,Python 干得漂亮。C++ 和 C 作为系统级开发语言,其江湖地位一直无人能敌,不过也基本无人想涉足竞争,所以一直保持不温不火的状态。
  • 第 9-12 位的是 Node.js、AngularJS、Ruby、Object-C。Node.js 和 AngularJS 作为这几年发展最迅速的技术框架,已经被当成了“语言”来对待,由此可见其领先的地位,开发者此时上船还不晚。Ruby 作为一门“亚洲语言”发展势头不减。得益于苹果产品的大热,Object-C 成为 iOS 开发者的首选,当然未来要看 Swfit 语言的发展情况。

说完了每个语言,我们再总体看一下趋势。对比 2013 和 2014 年的调查结果,今年的报告显示大多数语言开发者使用率都有所降低,这表明主力语言正在受到各种新语言、新技术的影响和冲击,开发者的选择越来越多,一方面是好事,另一方面也会导致“选择焦虑症”,技术选型成为开发者经常头疼的问题之一。

接下来,我们看另外一张图。

我想首先解释一下表格中的三列含义,第一列表示开发者在使用某项技术或者语言时对其喜爱的程度;第二列表示开发者在使用某项技术或者语言时对其讨厌的程度;第三列表示开发者还没有使用但是想要使用某项技术或者语言的程度。

先来看喜爱程度排行榜,不出意外,基本上都是新语言或者老语言的新版本,像 Swift、C++11、Rust、Go,都属于比较小众的语言,但也代表了技术未来的趋势,一方面说明正是这些新语言的特性吸引了开发者,另一方面也说明亲身实践的开发者也对这些语言表示了赞许。没有上榜或者排名比较靠后的新语言说明不太得人心,开发者们要小心了。

接下来是讨厌程度排行榜,榜单上的名字(Salesforce、VB、Matlab、Perl)只能说让开发者又爱又恨,这些语言或者技术之所以上榜,一方面说明其行业地位优势明显,开发者不得不用;另一方面,问题有很多,让开发者很不爽。所以对于榜单上的名字,我们一方面要祝贺它们:你们很牛,是业界的佼佼者,大家都要用你们的东西;另一方面,我们也需要提醒它们:要不断的优化和改进,要聆听开发者的声音,不然竞争对手会抢走开发者的心。

第三列同样反映了技术趋势。这些是开发者最想学习的技术或者语言,包括 Android、Javascript、Python、Node.js、Java、iOS、Swift 等,看看这里面有没有你想要学习的东西?如果没有,那就要思考一下自己的方向有没有问题。

其实关于这个报告的解读应该到这里结束了,但是考虑到目前移动开发者特别多,而且报告中多次提到了 iOS、Android、Java、Object-C、Swfit 语言等,所以我引用另一份 VisionMobile 的移动开发报告把移动开发的语言、收入等情况再展开说一下。

从平台来看,iOS 在高端市场仍占据领先位置。

  • 占据 54% 的开发者份额
  • 37% 的全职开发人员将 iOS 作为首选平台

Android 则在中低端市场占据霸主地位,几乎达到“几乎人手一部 Android 手机”的程度。

  • 在开发者份额方面,安卓占据了 70% 的份额
  • 40% 的职业开发者将安卓作为首选平台
  • 在美国和欧洲以外地区,安卓则占据 74% 的开发者份额,并且有 48% 的开发者将其作为主平台

当然还有 Windows Phone,与 2013 年 3 季度的 21% 相比,Windows Phone 的开发者占有率有所增长,达到 30%,不过调研中也指出 Windows Phone 的市场份额很小,只有 3%。报告中提到“美国最大的两家银行——摩根大通和美国银行,已经失去耐心决定从微软平台上下架他们的应用”,不过“相比于安卓平台,这种大品牌应用的差距让独立开发者能够获得更多的曝光机会并且能够为他们带来更多的收入。”作为开发者首选平台,Windows Phone 的份额稍有增长,从 2013 年的 4.5% 增长到 8%。

Swift 的前景如何呢?看看报告中是咋说的。

作为 iOS 平台的首选语言,Objective-C 目前拥有 39% 的开发者份额。比较有趣的是,只有 42% 的首选平台为 iOS 的开发者将 Objective-C 作为首选语言。其他的开发者则将混合或跨平台解决方案(56%)或 Swift(2%)作为首选。

Swift,苹果在 iOS 平台上的新语言,由于其刚刚发布几个月就有如此“空前的”采用水平,在这次的报告中获得了单独一章的篇幅。全部的开发者中有 20% 使用 Swift,2% 将其作为首选语言。48% 的 Swift 采用者同时也使用 Objective-C,但是并未作为首选语言,而 23% 的采用者并未使用 Objective-C。这被看作是“一个对苹果有利的信号”因为“它能够在将来带来更多真正原生的应用”。剩余 29% 的 Swift 早期采用者已经将 Objective-C 作为他们的首选程序设计语言。

从平台的角度比较,iOS 平台的开发者的收入最高,其次是 HTML5 和安卓的开发者。61% 的 iOS 平台开发者每月收入小于 $5k,而 HTML5 开发者的这一比例是 71%,安卓是 81%。iOS 开发者比安卓开发者收入更丰厚的同时,他们在软硬件方面的支出也更高一些,这让两个平台之间的差异有所减少。

64% 的开发者的首要目标市场是消费者市场,只有 20% 的开发者将企业市场看做他们的主要市场。不过在收入方面,只有 19% 的消费者应用开发者每月收入高于 $10k,而企业应用开发者的这一比例是 43%。

作者的微信公众号“老崔瞎编”,关注 IT 趋势,承载前沿、深入、有温度的内容。感兴趣的读者可以搜索 ID:laocuixiabian,或者扫描下方二维码加关注。

2015-04-17 07:2725342
用户头像

发布了 501 篇内容, 共 257.3 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

Linux内核结构组成之进程调度,java开发直播系统相关教程

Java 程序员 后端

Myabtis源码分析六-代理对象Mapper的创建流程分析,死锁全详解,一文带你搞定

Java 程序员 后端

mybatis-plus代码生成器,一键生成代码,springcloud教程百度云

Java 程序员 后端

Log4j使用指南,java入门视频教程

Java 程序员 后端

markdown编辑器的使用教程,Java成长路线图

Java 程序员 后端

Maven的核心概念,java面试高频知识点

Java 程序员 后端

MyBatis详解(二)(1),轻松拿到了阿里Java高级开发工程师的offer

Java 程序员 后端

Linux系统:第十一章:常用命令,华为java面试面经

Java 程序员 后端

Mybatis 传参的各种姿势,看这一篇就足够,java使用教程下载

Java 程序员 后端

MyBatis(四):参数处理器,linux运维架构师

Java 程序员 后端

mybatis-plus使用教程,java面试题基础篇

Java 程序员 后端

MyBatis的jdbcType和javaType详解,spring框架入门教程

Java 程序员 后端

MyBatis详解:spring和mybatis整合,linux视频格式转换

Java 程序员 后端

Linux系统:第十章:服务器环境搭建,附Java面经

Java 程序员 后端

MyBatis详解(一),实战java高并发程序设计

Java 程序员 后端

MyCat:第四章:Mycat中的概念,linux内核编译教程

Java 程序员 后端

Kubernetes教程之新手安装必看(快速浏览少走弯路),java集合详解和集合面试题目

Java 程序员 后端

MySQL 5,java架构师成长直通车

Java 程序员 后端

Linux上安装Mycat和配置连接MySQL 8,三年经验月薪50k我是怎么做到的

Java 程序员 后端

linux安装oracle XE,详解Java架构进阶面试题

Java 程序员 后端

MongoDB :第六章:Java程序操作MongoDB,mysql复合索引面试题

Java 程序员 后端

Mybatis一二级缓存实现原理与使用指南,java后端技术梳理

Java 程序员 后端

mybatis开发要点-insert主键ID获取和多参数传递,mybatis原理详解

Java 程序员 后端

MyBatis详解(二),java开发岗高频面试题全解析祖国的花朵

Java 程序员 后端

MyCat教程【分库分表】,java教程pdf百度网盘

Java 程序员 后端

KubeVela + KEDA:为应用带来,kafka入门

Java 程序员 后端

Linux云服务器搭建SFTP服务器图片服务器,java线程原理

Java 程序员 后端

Mybatis学习笔记--Mybatis实现CRUD,springboot注解面试题

Java 程序员 后端

mybatis常用注解(绝对经典),java程序设计教程张延军课后答案

Java 程序员 后端

Maven相关知识点整理,java基础语法的格式

Java 程序员 后端

Mybatis Generator最完整配置详解,Java面试

Java 程序员 后端

Stack Overflow技术报告给开发者哪些启示_Java_崔康_InfoQ精选文章