阅读更多

原文:2018 Developer Skills Report

链接:https://research.hackerrank.com/developer-skills/2018/

编译:言则

近日,编程竞赛网站 HackerRank 基于 39441 位开发者的调研数据,总结了 2018 年开发者在教育、技能和招聘实践中的各类流行趋势。HackerRank 在算法、数学、SQL、函数式编程、AI 等众多不同领域为开发者们提供了相应的编码谜题。以下为报告全文。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

Hello World

无论你的工作是什么,对每个人来说,学习如何编码都是很重要的一件事。编码不仅有助于丰富你的计算思维,还能提高决策性,让你在招聘中脱颖而出。

我们在 2012 年底推出了 HackerRank,目标是让每个开发人员都能找到合适的工作。近年来,我们社区的用户增长速度非常惊人——截止去年,社区已拥有 320 万名开发人员,是去年所有被雇佣开发人员总数的 2%。

今年,我们首次对 HackerRank 社区进行了调查,以获得开发者技能的相关信息,比如他们第一次推代码的时间、他们如何学习编码、最喜欢的语言和框架、他们想要什么样的工作、招聘经理希望的候选人是什么类型的等等。有 39441 位开发者参与了我们的调查,希望通过本文能让你对 2018 年开发人员的技能信息有更加深入的了解。

一、学习与教育

编码学习早于驾驶?四分之一的开发者在 16 岁前就开始编码了

640?wx_fmt=png

编码不分早晚。在所有专业级别的 39000 名开发人员中,有超过四分之一的开发人员在他们 16 岁之前就写了第一个代码。

与此同时,在 26 岁以后才开始编写代码的开发者中,有 36% 是现在的高级甚至更高级别的开发人员,他们的职业发展会很快。

70 年代开发者:一场个人电脑革命引发的壮志雄心

640?wx_fmt=png

与此后的几代人不同,如果七十年代的人想要看到创新的技术,他们就必须自己去建造——处于那个年代下的他们别无选择,因为没有充分的资源来教会他们如何创建软件。在 45 岁至 54 岁之间的所有开发者(47%)中,几乎一半在 16 岁之前开始编码。同时,今天 18 到 24 岁的开发者最不可能在 16 岁以前开始编码(仅占 20%)。

45 到 54 岁之间的开发者是第一批掌握个人电脑的一代,如Acorn Archimedes、TRS-80、Commodore 64 和 Apple II。由于无法获得正规教育,“个人电脑革命”中的年轻人更有动力去学习编码。

英国卫冕最年轻的编码人员排行榜之首!中国未进前十

640?wx_fmt=png

在参与调查的 17 个国家中,至少有 100 名受访者表示,英国人开始编码的人群最年轻,编码年龄在 5 到 10 岁之间,这些开发者大多数是今天的三十多和四十多岁。

当这些开发者还在学校的时候,位于剑桥的个人电脑 Acorn Archimedes 就出现了。通过与 Tesco 的合作,英国的学校得到了相当数量的电脑,更多的孩子可以使用电脑。

今天,这种前瞻性的教育文化在英国仍然存在——它成为第一个通要求 5 岁以下的孩子参加编程课程来实现课程现代化的国家。政策制定者也曾多次指出,尽早接触编码是打造软件职业门户、了解影响日常生活的计算思维和软件原理的重要一步。

毋庸置疑,开发者都有渴望学习的心

640?wx_fmt=png

似乎每年都会有一个新的标志性编程语言、框架或库在整个开发者社区泛滥。自我教育是所有年龄段开发者的常态,尽管 67% 的开发人员拥有 CS 学位,但大约 74% 的人表示至少有一部分是自学的。

开发者平均知道 4 种语言,但是他们还想学习更多。对学习的渴望程度也因人而异:18 至 24 岁的年轻开发者计划学习 6 种语言,而 35 岁以上的人只打算学习 3 种语言。

自学作为成功开发者的重要组成部分,学习工具是成长的一种手段。但是工具总是会改变的,所以对程序的好奇心和真正的兴趣,应该推动学习新工具和适应技术不断发展的前景。

我们不一样:新一代开发者最爱 YouTube

640?wx_fmt=png

堆栈溢出是自学者的头号工具,这在各个年龄段都是如此。但是,YouTube 和书籍之间存在着明显的年龄段差距,成为编码学习中第二个最受欢迎的资源。

学习的本质正在改变,年轻一代正在涌向 YouTube,而老一代仍更喜欢通过书籍来学习新技能。更具体地说,当学习一个新工具时,千禧一代会登录到 YouTube(65%),而 X 一代则手拿起了一本书(85%)。

当然,两者都有其独特的优势。YouTube 提供了一个系统化的教学模式,可以模仿大学中结构化的课程,稳定进步。书籍的好处是适应性,虽然 YouTube 可以引领软件进步的潮流,但教科书却是 CS 的永恒基础。任何人都可以在不到一天的时间内制作出新的 YouTube 教程,尽管它不会提供教科书多年来深思熟虑的经验教训。

但无论哪种方式,明确的一点是:我们正处在编码教育发展的最前沿。

二、开发者技能需求

企业缺什么,我们学什么:五大需求度最高的语言

640?wx_fmt=png

即使不断地有新语言出现,开发人员掌握核心的传统语言也是非常重要的。总的来说,企业需求度最高的语言包括有:JavaScript、Java、Python、C ++ 和 C 这五个。

对比企业最需要的语言和开发者最常用的语言时,这五个语言几乎没有区别。但在细分领域中还是略有差异的, 例如:Java 已经在金融服务领域流行了多年;C 由于其性能以及跨多个平台的编译器可用性而主导硬件领域;而 C# 在政府机构中更为普遍。

开发者和企业间供需差别最大的是 JavaScript 框架

640?wx_fmt=png

JavaScript 框架是最受欢迎的,它是唯一能够构建前端、后端、移动和浏览器扩展的多功能语言。因此,JavaScript 在网络中有着举足轻重的地位。所以大多数情况下,企业希望招聘的是了解 AngularJS、Node.js 和 React 的开发人员。

从图中可以看出,这三个框架在开发者和企业间存在着较大的差距,其中 React 框架的差距最大。换句话说,开发人员有很大的机会将 React 学习提升成为当今企业所需要的一种可交易的技能。

实战能力 No.1,企业更偏爱作战经验丰富的开发者

640?wx_fmt=png

解决问题的能力几乎是所有企业一致要求的最重要的资格......不仅仅是编程语言的熟练程度、调试和系统设计能力,演示计算思维或分解大型复杂问题的能力也是同等重要的。

当然,小公司最关心的与大公司关心的东西之间还是有一些细微的差别。例如,较小的公司比大中型公司更需要熟悉框架使用的能力,因为拥有正确的框架知识对于初创公司来说更为重要,他们需要快速启动代码,框架可以帮助开发人员更快地推送代码。

华丽的简历?不,我们更关注你曾经做过什么

640?wx_fmt=png

有一种观点认为,企业更愿意招聘获得名牌大学 CS 学位的人,但事实证明,他们实际上更关心的是你所做的——而不是你曾经上学的地方。绝大多数的招聘经理也表示,他们更关心简历中的技能证明,如以前的工作、多年的项目经验和 GitHub 等等。无论公司规模如何,10 个招聘经理中有 9 个都认为,以前的工作和多年的经验这两个技能指标是最受欢迎的资格证明。

一般来说,简历(学位、学历、技能认可或证书声望)的资格在企业关注度中排名最低,因为这些因素并不能代表开发者的实际能力。从简历中可以轻松筛选出的唯一顶级资质是“多年的经验”,它可以作为一种替代方法,即基于简历的信号来证明技能。

好好打理你的 GitHub,企业会认真偷看的

640?wx_fmt=png

通过 GitHub 和项目经验能更好地补充简历和评估技能。当我们通过角色筛选数据时,可以发现那些处于 C 级职位的人,包括创始人、首席技术官和副总裁,他们都认为 GitHub 的项目实践比多年的经验更具价值。对这些人来说,学位的威望也十分重要。

这可能是由于开发者遇到高管的时候,他们已经到了招聘过程中的最终阶段,当开发人员与 C 级人员会面时,有更多时间根据项目、以前的工作和投资组合来评估已验证的技能。

三、开发工具

唯我不败:开发者就爱追随科技巨头所推送的语言

640?wx_fmt=png

上表中,Kotlin、Rust、Scala 和 Swift 排名最高——个人开发者乐于追随硅谷科技巨头的流行语言,这是一个很明显的趋势。

谷歌的 Go 提供了高并发性、快速编译、当然还有其创建者的广泛支持,此外还推动了 Kotlin 成为开发 Android 应用的第一语言。

此外,Twitter 还将可扩展 Scala 作为一个更有效和更具成本效益的替代方案。苹果从 Objective-C 转换到 Swift 时,开发人员也必须随之切换。随着 iOS 开发变得越来越流畅,开发者也在追逐着这些流行趋势。

Python 最佳!全年龄开发者最喜爱的语言

640?wx_fmt=png

根据统计,JavaScript 可能是企业最需求的语言,但是 Python赢得了所有年龄段开发者的心,Python 也是开发者最想学习的流行语言。

上面的语言偏好图代表了喜欢某一语言的开发者所占的百分比,Python 以其简单性、可读性和丰富的资源库而闻名,这也是计算机科学入门课程的一部分。

但有一个趋势是,年轻的开发者比老的开发者更喜欢新的语言(如 Go、Kotlin 和 Scala),其中关于 Go 的分歧最大:18 - 24 岁的开发者并不关心,但 45 - 54 岁的人认为这是他们最喜欢的语言之一,这在 JavaScript 中则正是相反的——年轻的开发者对知识有着天生的渴望,他们更有可能全面地学习语言,即使是一些他们并不喜欢的语言,而老的开发者则会根据自己的经验,选择那些经得起时间考验的语言。

Node.js 框架赢得开发者芳心

640?wx_fmt=png

上图显示,Node.js 是开发人员最喜爱的框架。作为后端 JavaScript 的唯一方法,Node.js 在所有年龄段都受到青睐。至于前端框架,我们都知道 AngularJS 和 React 是流行的,这种偏好在年轻一代开发者中最为常见,45 - 54 岁的开发者则将它们排在了较低的位置。

四、人才吸引力

如何科学地评估开发者技能?企业表示很头疼

640?wx_fmt=png

根据 7000 多个企业的资料显示,简历仍是目前评估开发者最常用的方式。调查发现,81% 的招聘经理使用简历作为申请人筛选过程的第一步,但是大多数招聘经理都认为如何正确评估技能是招聘时的最大挑战,而且只有 55% 的开发者认为简历能够很好地反映自己的能力。

640?wx_fmt=png

目前的企业招聘正在寻找更合适的工具来评估应聘者技能,用简历进行筛选是招聘的障碍,因为他们最关心的能力并不能从简历中筛选出来。

爱工作、爱自由:开发者寻求工作与生活的平衡

640?wx_fmt=png

网上的很多技术职位描述,通常都会重点介绍技术堆栈、工作内容以及津贴诱惑等等。但是招聘经理表示,应聘者更为关注的不是这些。相反,开发者首先关注的就是工作与生活的平衡,专业成长与学习则排在第二位。更具体地说,美国人比亚洲和欧洲等其他地区的开发者更渴望工作与生活的平衡。

对于 25 岁以上的开发者来说,两者的平衡是最重要的。在某些方面,我们发现了一个小小的矛盾:开发者想要工作与生活的平衡,但他们也渴望学习和成长。这也就导致了开发人员有时会感到不知所措甚至茫茫然,专注于做自己喜欢的事情可以帮助实现更好的工作与生活平衡。

灵活的工作时间表需求最迫切

640?wx_fmt=png

工作与生活的平衡对于不同的人来说意味着很多东西,其平衡可以通过灵活的时间来支持——上午 10 点到下午 8 点的日程安排是最常见的。

开发者希望输出更有价值的内容,远程办公的选择也很有帮助。对于 25 岁以上的开发者来说,远程工作的愿望特别强烈,而 25 - 44 岁之间的人们更愿意选择工作数小时后关闭电子邮件这一方式。

学生开发者:我们更关心个人成长,薪酬什么的先放一放

640?wx_fmt=png

职业成长率是学生在工作中最关注的的一点,在学生群体中,薪酬的排名甚至降到了第七。学生们渴望学习并发挥他们的潜力,因此在工作与生活的平衡中,会优先考虑他们职业生涯规划和成长。

五、报告的其他内容

VIM 文本编辑器最受开发者欢迎

640?wx_fmt=png

VIM 击败了所有其他的编辑器,其强大的键盘命令是它被各国开发者所喜爱的重要原因。

创始人在 10 之前编码的可能性是普通开发者的 3 倍

640?wx_fmt=png

15% 的创始人在 11 岁之前开始编码,而其他的开发者在 11 岁之前开始编码的概率为 5%,达 3 倍之高。

写在最后

本文是 HackerRank 对开发者进行的一项研究,以确定开发者教育、技能和招聘实践的趋势。2017 年 10 月 16 日至 11 月 1 日期间,共有 39441 名专业人士和学生开发者参与了在线调查。

通过这份报告,希望能为广大的开发者提供编程语言趋势、框架选择、就业偏好等方面提供一定的指导意义。

0
1
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 通俗易懂的RABC权限实战教程(含配套资料)

    本教程为授权出品本视频讲授RBAC权限模型的设计、以及在项目中的应用 。1. 使用Maven进行项目构建 。2. 页面设计采用响应式前端框架BootStrap 。3. 采用多种方式展现用户数据:树形结构(ztree)、图表(echarts) 等 。4. 基础业务功能采用异步数据操作,增强用户体验效果 。

  • 关于用户角色权限的一点想法(1)

    前言:权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。针对不同的应用,需要根据项目的实际情况和具体架构,在维护性、灵活性、完整性等N多个方案之间比较权衡,选择符合的方案。目标:直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组的继承,除了功能的必

  • RABC 权限拦截设置

    1 RABC 是什么? rabc 是一种用于设计权限的一种思想,流程图如下 2 硬编码实现的思想 RABC 主要有user 用户表,role角色表,permission权限表,以及role-permission和user-role的中间关联表,但是实际上对于一般的需求,我们可以只使用user用户表, 里面存储字段标识 角色信息,然后在代码层面进行编码方式 使用enum枚举出所有角色表,使用 权限注解标识方法,将权限注解与方法进行一个绑定,其中权限里面包括(角色)信息,通过拦截器进行拦截权限进行筛选。

  • 简单RABC的设计与实现

    RBAC(Role-Based Access Control ) 是基于角色的访问控制。在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。也就是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。这种“权限赋予给角色,把角色又赋予用户”的权限设计既清晰,又易管理。

  • 一种基于RABC的软件系统权限管理设计

    一种基于RABC的软件系统权限管理设计1 权限管理介绍1.1 权限管理分级1.2 常用的权限模型 1 权限管理介绍 简介:在软件系统的中的权限管理,指的是用户能否具有访问系统、系统资源的资格。在软件系统中主要通过管理员将某些资源的访问、管理、操作等权限赋予用户,达到管理和使用的目的。譬如主机的访问使用权限,某项功能菜单的使用权限亦或是某个数据的读写权限。 1.1 权限管理分级 软件系统中,我们通常将权限关联分为三级 (1)一级权限:访问权限 (2)二级权限:菜单、按钮权限 (3)三级权限:数据权限 依据不同

  • 设计实战——基于RBAC的功能权限设计思考

    关于功能权限的控制,使用RBAC可以很好地解决,网上有大量的理论性介绍,但落地过程中,仍然有一些具体的问题,需要结合自己平台或系统的规模、面向场景选择最合适的方案,从而形成最优的设计。下面我结合自己研发平台的经验,具体说一说。

  • RABC权限控制模型(概念)

    建立关联关系 权限 -> 资源 单向多对多 java类之间单向:从 权限 实体类可以获取到 资源 对象的集合,但是通过 资源 获取不到权限 数据库表之间多对多: 一个 权限 可以包含多个 资源 一个 资源 可以分配给多个不同 权限 角色 -> 权限 单向多对多 用户 -> 角色 双向多对多 java类之间双向:可以通过用户获取它具备的角色,也可以看一个角色下包含哪些用户 数据库表之间多对多: 一个角色可以包含多个用户 一个用户可以身兼数职 多对多在数据库建中间表 select t_stu

  • 自定义简单的微服务认证授权

    一、有状态 vs 无状态 二、微服务认证方案 1. “处处安全”方案 Oauth2.0 系列文章 代表实现: Spring Cloud Security JBoss Keycloak 示例代码: Spring Cloud Security示例代码1 Spring Cloud Security示例代码2 JBoss Keycloak示例代码 2. 外部无状态、内部有状态方案 3. “网关认证授权、内部裸奔”方案 4. “内部裸奔”改进方案 5. 方案对比与选择 三、访问控制模型 RABC

  • RABC权限管理

    RABC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色和权限进行关联。 简单的说,就是一个用户拥有若干角色,每个角色拥有若干权限。这样,就构成“用户-角色-权限”的授权模型。 在这种模型中,用户与角色之间,角色与权限之间,一般是多对多的关系 角色是什么呢?可以理解为有一定数量的权限的集合,权限的载体。 比如,一个论坛系统,“超级管理员”,“

  • 六,RBAC简介

    RBAC(基于角色的权限控制 role base access control)是一种设计模式,是用来设计和管理权限相关数据的一种模型 RBAC权限数据的管理,都是重复的CRUD的操作,这里我们就不再重复的从0到1开发,我们只是把模块中需要注意的逻辑和代码讲一下,重复代码不再复述 RBAC模式:基于角色的访问控制,表结构如下: 用户列表 用户添加修改 角色列表 角色修改 菜单列表 菜单修改 菜单不同于单表管理,是一个树状表结构管理,这里我们重点关注菜单(树状表结构的数据)的增删改查这里我们直接导入素

  • 什么是 RBAC 模型?

    前言 RBAC(Role-Based Access Control),基于角色的访问控制,现在主流的权限管理系统的权限设计都是 RBAC 模型,或者是 RBAC 模型的变形。 我们需要思考一个问题:为什么要做权限的管理? 我的理解是在每一个系统中,每个用户所拥有的权限是不一样的,例如一个数据表,管理员可以修改、增加、查看等操作,而普通用户只能查看。所以如何进行用户权限的设计,就是我们需要考虑的问题了。 RBAC 模型是什么 RBAC(Role-Based Access Control),基于角色的访问控制

  • Laravel8 理解RABC 初步实现

    掌握什么是RABC 掌握RABC的应用场景 掌握Laravel框架资源控制器及资源路由的创建和使用 理解角色与权限表的设计 能够实现角色列表分页展示 能够实现Ajax添加角色信息 掌握使用模型查询中的when方法搜索角色 一、RBAC RBAC: role base access control 基于角色的用户访问权限控制,就是权限分配给角色,角色又分配给用户。 即一个用户对应一个角色,一个角色对应多个权限,一个用户对应用户组,一个用户组..

  • 基于角色的访问控制(RBAC)演进历史、设计理念及简洁实现

    很多系统(例如 Kubernetes、AWS)都在使用某种形式的 RBAC 做权限/访问控制。本文基于 access control 的发展历史,从设计层面分析了 DAC -> MA...

  • RABC --权限控制解读

    一、基于RBAC的概念介绍 1、RBAC(Role-Based Access Control )基于角色的访问控制。 2、RBAC认为权限的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。即将权限问题转换为Who、What、How的问题。who、what、how构成了访问权限三元组。 3、RBAC96是一...

  • rbac 概念

    1 权限管理1.1 什么是权限管理   分享牛原创,分享牛系列。基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。 1.2 用户身份

  • RBAC简介

    目录RBAC简介RBAC0RBAC1RBAC2RBAC3 RBAC简介 RBAC是Role Based Access Control的英文缩写,意思是基于角色访问控制。 RBAC实际上就是针对产品去发掘需求时所用到的Who(角色)、What(拥有什么资源)、How(有哪些操作)的方式。 在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What进行How的操作。 RB...

  • RBAC的概念

    RBAC是基于角色的访问控制(Role-BasedAccessControl)在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。 ...

  • 一个RBAC开源框架

    Kasai是一个开源100%基于Java的认证与授权框架.它提供一个完善的,易于管理的许可方案来与你应用程序相结合的.这个框架的目的是为多用户应用程序提供一个使用简单但强大的安全环境.

  • 用户角色权限设计

    1.表结构设计,用户表t_user,角色表t_role,用户角色表t_user_role,权限表t_privilege,权限角色表t_role_privilege。   t_user表    t_role表     t_user_role表     t_privilege表     t_role_privilege表 

  • RBAC权限模型相关概念介绍

    第一章 RBAC权限模型 1.1 基础表模型 1.概念 权限管理,这是每个软件系统都会涉及到的,而且权限管理的需求本质往往都是一样,不同的角色拥有不同的权限,只要你充当了某个角色,你就拥有了相对应的功能。 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。 简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。 这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多的关系...

Global site tag (gtag.js) - Google Analytics