编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起

Visual Studio Code(VS Code)的使用率在迅速上升,现在已经成为大多数工程师的首选编辑器,并似乎正迅速抢占其他顶级编辑的市场份额。

Triplebyte 每周都会面试数百名工程师。在每次面试中,我们都会记录面试者使用的编辑器、编程语言和操作系统。我们不会根据这些信息来决定面试者是否可以通过面试(我认为这不公平)。不过,这些非常令人着迷!它让我们可以深入了解不同工程师群体喜欢哪些工具,以及这些偏好如何随着时间发生变化。我们还可以借此识别出工程师选择的工具与他们在面试期间的表现之间的相关性。

我的同事 Mike 在一年前写了一篇有关这些数据的文章。Triplebyte 从那时起已经得到了长足的发展,因此我们现在可以更深入地挖掘这些数据,所以我写下了这篇文章。

编辑器使用率

我提取了去年所有面试中使用的编辑器数据:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


从这张图中可以看到,Visual Studio Code 有多么的突出。VS Code 占了 17%的比例,它是去年多个 Triplebyte 候选人使用的编辑器。这让我感到些许惊讶,主要基于两个方面的原因。首先,VS Code 是一款来自微软的相对较新的产品。其次,去年它甚至都没有出现在我们的排行榜上——它的比例小到足以落入“其他”部分。

为了更好地了解这一点,我基于相同的数据绘制了另一张图:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


VS Code 正在吃掉其他编辑器的份额!很明显,在过去的一年中,VS Code 的使用率从 5%上升到 22%。与此同时,Sublime Text 的使用率从 17%下降到 11%,Atom 的使用量从 11%下降到 6%,甚至连 Eclipse 也在下降。VS Code 每个月都在增加。Google Trends 显示了类似的结果:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


VS Code 正在崛起,并有望成为我们见过的最具主导潜力的编辑器。也许我也应该试一试!

面试通过率

然而,编辑器的使用只是整个故事的一部分。并非所有编辑器的用法都相同。我想看看最好的程序员都在使用哪些编辑器。因此,我提取了与候选人在面试中表现有关的数据,并按他们使用的编辑器进行分组:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


这张图显示了每种编辑器用户的通过率与所有候选人平均通过率的对比。首先,请注意脱颖而出的 Emacs 和 Vim!使用这些编辑的工程师的通过率远高于其他工程师。Emacs 用户通过率比其他工程师高 50%。我们该如何解释这种现象?一个可能的原因是因为 Vim 和 Emacs 是老牌编辑器。老牌编辑器的用户可能拥有更多的经验。但也请注意,VS Code 是第三好的编辑器——它是一个全新的编辑器,这反而让 VS Code 看起来更占优势。

Emacs 和 Vim 用户是否还有其他的一些特征让他们在面试中更有可能获得成功?也许他们倾向于花更多的时间和精力在短期内定制一个复杂的编辑器,以便在长期获得更多的回报?

另一方面,使用 Eclipse、intelliJ 和 Visual Studio 的工程师的通过率较低。Eclipse、IntelliJ 和 Visual Studio 有什么共同之处?它们都是 IDE。但是,PyCharm 也是一个功能齐全的 IDE,它的通过率也较高。Eclipes、IntelliJ 和 Visual Studio 的另一个显著特点是它们与 Java 和 C# 的联系非常紧密,那么我们可能只是看到了特定编辑器和特定编程语言之间的相关性结果吗?

为此,我也按照编程语言查看了面试通过率:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


Java 和 C# 确实具有相对较低的通过率,尽管 Eclipse 的通过率低于 Java(-21.4%对 -16.7),因此我们无法完全解释是不是 Java 拖了 Eclipse 的后腿。

还有,Go 语言发生了什么?Go 程序员表现都很不错!为了深入研究这些问题,我按照编程语言查看了编辑器的使用情况:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


这张图上的百分比对应的是每个编辑器。我们可以看到,97%的工程师使用 PyCharm 开发 Python(很正常,这从它的名字就可以看出来)。使用 Eclipse 的主要是 Java(94%)用户,使用 Visual Studio 的主要是 C# 和 C++(88%)用户。我无法说清楚它们之间的因果关系,但似乎编程语言(Java、C#)和 IDE(Eclipse、Visual Studio)都与较低的通过率相关联。这些数据来自我们的内部面试,但同样的结果也适用于使用我们平台进行招聘的外部公司。

在做出面试决策时,Triplebyte 不会考虑候选人使用哪门编程语言或哪种编辑器。并且外面有很多优秀的 C# 和 Java 程序员。但是,通过我们面试的普通 C# 或 Java 工程师似乎不如普通 Ruby 或 Go 工程师好,我不知道为什么。

我们从这张图中发现的另一个有趣的地方是 VS Code 和 Sublime 之间的区别。VS Code 主要用于 JavaScript 开发(61%),但不太常用于 Python 开发(22%)。而 Sublime 的数字基本上是相反的(51%Python 和 30%JavaScript)。有趣的是,VS Code 用户的通过率高于 Sublime 用户,尽管他们主要使用 JavaSript。

经验水平和地理位置

最后,我按经验水平和地理位置来切分数据。在下图中可以看到不同经验水平的人使用编程语言的情况:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


图中显示的是具有给定经验水平的人使用每种语言的百分比。有趣的是 Python 和 Java 最受实习生或具有兼职经验的候选人的欢迎。

下面是不同经验级别的候选人使用编辑器的情况:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


首先,随着经验水平的增加,VS Code 的使用率在下降。可见 VS Code 在初级工程师中更受欢迎。我们还可以看到,Vim 和 Emacs 在经验丰富的工程师中更受欢迎。这似乎是合乎逻辑的,这也是 Vim 和 Emacs 用户在我们的面试中具有如此高通过率的主要原因。

最后,我们还研究了地理位置和使用的语言之间的关系:

编辑器领域正发生变革?从面试看 Visual Studio Code 的崛起


大公司一般位于半岛地区,因此你会看到很多 Java 开发人员。在旧金山,创业公司占主导地位,你会看到更多的人使用 JavaScript。

结论

以下是我们在过去一年中看到的工具使用趋势的总结,以及工程师选择的工具与编程能力之间的一些有趣的关系:

Visual Studio Code 正在崛起。在过去的一年里,它已经成为最受欢迎的编辑器,并且每个月都在增长。我在想,编辑器领域是否正在经历一场动荡的变革,从一个相对分散的市场转变为某个编辑器占据 50%以上份额的市场?

使用像 Vim 或 Emacs 这样的老派编辑器的工程师往往是有经验的程序员。也就是说,这些编辑器在经验丰富的工程师中特别受欢迎。

使用 Go 语言的工程师也很厉害。

使用 Eclipse 或 Visual Studio 的工程师在我们的面试中表现稍差一些(平均)。

最后我想说的是,我们认为它们之间没有必然的因果关系。也就是说,我不建议你基于这些数据开始使用 Emacs 和 Go 语言(或者停止使用 Eclipse 和 Java)。有些很厉害的程序员会使用每一种工具。在面试中,最重要的是要使用你最熟悉的工具。

英文原文:https://triplebyte.com/blog/editor-report-the-rise-of-visual-studio-code

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

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

相关文章

C#7.0 ref引用传递

1.概要在工作中大家用到引用类型是非常多的,大家都知道引用类型在使用过程中传递的是对象引用并不会发生整个对象复制。而值类型在传递的过程中就不一样了,我曾经在编写代码时希望通过值类型来压低应用程序的内存占用,在高并发的情况大量的对…

Vue+Axios同步请求

axios本身是没有同步请求的,要实现同步请求,用到的是ES7的async和await ES7的异步特性async / await async用于声明一个函数是异步的,await用于声明在一个异步函数中等待语句执行完毕。也就是说await只能在async函数中使用。简单示例如下&a…

关于vue执行打包后,如何在本地浏览问题

最近一个人在捣鼓vue,写完项目后发现在npm run dev下可以正常访问,bulid之后却一片空白,查看console出现许多Failed to load resource: net::ERR_FILE_NOT_FOUND。恩,看了下网上评论找到了正确的方法 webpack.prod.conf.js 中outp…

ELFhash

字符串哈希算法(以ELFHash详解) 更多字符串哈希算法请参考:http://blog.csdn.net/AlburtHoffman/article/details/19641123 先来了解一下何为哈希: 哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映射到一个有限的地…

android面试详解

前台就是和用户交互的进程 可见进程例如一个activity被一个透明的对话框覆盖,该activity就是可见进程 服务:service进程 后台一个activity按了home按键就是从前台退回到后台 标准模式:不管任务栈是否存在相同的activity都会创建一个新的activ…

element-ui Notification重叠问题,原因及解决办法

在1个方法中调用两次this.$notify方法,会出现通知框重叠的问题 methods: {checkLogin: function () {if (this.username ) {this.$notify({title: 提示,message: 请输入用户名})}if (this.password ) {this.$notify({title: 提示,message: 请输入用户密码})}}}网上…

Visual Stiudio使用技巧

技巧1 自动生成带参构造函数当我们在编写代码时会经常遇到初始化一个的类,需要通过构造函数进行对象初始化。那么这个时候我们可能会需要逐个去手动写,这样的工作即重复又无趣。如果是在项目非常紧急的情况下还有大量的字段需要与入参一一对应起来简直太…

js将时间戳格式化为HH:ii:ss的格式

将时间戳格式化为 HH:ii:ss的格式 <html> <head> </head> <body><span id"time"></span><script>var timestamp Date.parse(new Date())/1000;var time_old Date.parse(new Date())/1000;timeAdd()/*** purpose : …

Struts 整合 SpringMVC

Struts 整合 SpringMVC 过程&#xff1a;这篇文章是我在整合过程中所做的记录和笔记 web.xml &#xff1a;筛选器机制过滤 原机制是拦截了所有 url &#xff0c;即 <url-pattern>/*</url-pattern>新机制为了将 structs2 的 url 与 SpringMVC 的 url 区分开来&#…

Vue保持用户登录及权限控制

vue-router-power-demo 核心内容有两点&#xff1a; 一是保持用户登录状态&#xff0c;二是根据登录用户的角色动态挂在路由 使用vuex保持用户登录 点击登录按钮&#xff0c;使用vuex的actions分发登录操作&#xff0c;发送用户名和密码到后台获取登录token&#xff0c; 并存…

java B2B2C Springcloud多租户电子商城系统-Spring Cloud Sleuth

在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。 愿意了解…

C#性能测试BenchmarkDotnet

1.简介在我们开发高性能代码时&#xff0c;需要各种针对性能优化进行编码。那么如何才能知道我们所加的代码是否有性能方面的正向优化呢&#xff1f;有了BenchmarkDotNet&#xff0c;做性能对比测试就非常容易了&#xff0c;只需要把你的测试方法加上特性[Benchmark], 想做不同…

Requests获取连接的IP地址

在接口自动化的时候&#xff0c;需要获取到连接的本地IP地址&#xff0c;方法如下 1 import requests 2 3 rsp requests.get("http://www.baidu.com", streamTrue) 4 print rsp.raw._connection.sock.getpeername()[0] 5 print rsp.raw._connection.sock.getsockna…

阿里云APP(V4.3) SSH远程登录功能设置操作指南

阿里云APP V4.3 发布了&#xff0c;这次的升级&#xff0c;不仅在iOS和android平台上支持SSH远程登录ECS功能&#xff0c;也支持密钥登录哦~~~ SSH远程登录&#xff0c;这是一个连阿里巴巴自己的技术人员都开心不已的功能&#xff01; 各位攻城狮们&#xff0c;从更新到V4.3的那…

JS专题之节流函数

本文共 2000 字&#xff0c;读完只需 8 分钟上一篇文章讲了去抖函数&#xff0c;然后这一篇讲同样为了优化性能&#xff0c;降低事件处理频率的节流函数。 一、什么是节流&#xff1f; 节流函数&#xff08;throttle&#xff09;就是让事件处理函数&#xff08;handler&#xf…

vue 2.6 插槽v-slot用法记录

v-slot用法简记用法示例匿名插槽与具名插槽插槽作用域组件使用插槽动态命名总结用法示例 vue2.6统一了插槽的语法v-slot 匿名插槽与具名插槽 在其他组件中使用child组件 <child><template v-slot:slotName>hello world</template> </child>child组…

Latex排版全解(转)

Latex排版全解 http://blog.csdn.net/langb2014/article/details/51354238转载于:https://www.cnblogs.com/yifdu25/p/8338399.html

git-ftp Can't access remote 'ft://...', exiting...问题记录

环境 服务器&#xff1a;西部数码虚拟主机 本地系统&#xff1a;windows 10 (LTSC 2019) 软件&#xff1a; Git Bash&#xff0c;gti-ftp (版本1.6.0) 问题 在使用git ftp init初始化上传代码的时候会出现 $ git ftp init fatal: Cant access remote ftp://dmkt:***dmkt.goto…

【Flutter教程】从零构建电商应用(一)

在这个系列中&#xff0c;我们将学习如何使用google的移动开发框架flutter创建一个电商应用。本文是flutter框架系列教程的第一部分&#xff0c;将学习如何安装Flutter开发环境并创建第一个Flutter应用&#xff0c;并学习Flutter应用开发中的核心概念&#xff0c;例如widget、状…

为OWA自定义快捷键

这篇短文分享一下如何为自己常用的网页添加自定义功能&#xff0c;例如添加快捷键。我这里用一个常用的网站作为范例。它是Outlook Web Access (OWA), 它的地址一般如下。我在写邮件时希望能用一些快捷键来提高工作效率&#xff0c;但系统默认自带的快捷键特别少&#xff0c;而…