每年,海外最大的程序员集聚地之一Stack Overflow都会在自家开发人员社区发起一次大规模调查,来给程序员们画个像。从最喜爱的技术、工作偏好,甚至年龄学历性取向,堪称程序员世界一年一度的人口普查。
今年是发布年度开发者调查结果的第八年,也是受访者数量最多的一年。与往年调查相比,今年的调查增加了几个有趣的主题,比如人工智能和编码伦理(点击查看大数据文摘相关报道《我应该对我的代码产生的结果负责吗?》),对于这个最近争论声颇高的话题,80%的受访程序员声称,开发人员应当考虑他们代码的正确用途,但管理者更需要为代码的后果负责。
超过10万名开发人员参加了这一平均问卷填写时间超过30分钟的调查,从对填写时间的容忍足以看出程序员的耐心。
以下是今年调查结果的一些重要内容:
DevOps和机器学习是当今软件行业的重要趋势。与这类技术相关的语言和框架的热度也不断上升,在这些领域工作的开发人员的薪水最高。只有很小一部分开发者表示他们会写不道德的代码,或者他们没有义务考虑代码的道德影响,但除此之外,受访者看到了很多灰色代码。开发人员不确定他们将如何报告道 德问题,并对谁最终负责不道德的代码有不同的看法。
开发人员总体上对人工智能提供的可能性持乐观态度,但对AI的危险性态度并不一致。
在我们的调查中,Python在编程语言的热度有所上升,超过了今年流行的C#,就像去年它超过了PHP一样。
在评估未来的工作时,不同类型的开发人员应用不同的优先级。女性认为最重要的是公司文化和专业发展的机会,而男性则认为他们最优先考虑的是薪酬和特定技术。
我们摘录了本次报告的一些关键内容如下,对完整报告内容感兴趣的读者可以去往以下链接查看报告原文。
链接地址:https://insights.stackoverflow.com/survey/2018/#overview
开发者类型:后端开发人员最多
将近60%的受访者认为自己是后端开发人员,约20%认为自己是移动开发人员。 最常见的组合是后端,前端和全栈开发人员。 高度相关的职业是数据库管理员和系统管理员,DevOps专家和系统管理员以及设计人员和前端开发人员。
写代码是一种爱好?
许多开发人员的工作并不是以写代码为主。超过80%的受访者表示敲代码是他们的一种爱好。 工作之外的其他兴趣或责任似乎并没有减少开发者对敲代码的兴趣。
调查显示,负有照顾责任的父母,经常户外活动的人比其他群体更容易爱上“搬砖”。
学习方式
在学习新内容时,超过80%的受访者依靠Stack Overflow Q&A。
此外,开发人员理解良好文档的价值,因为超过80%的人在学习时也将文档用作学习资源。
电脑使用时长:多数程序员每天工作时间在9小时以上
我们的受访者包括专业编程人员,学生和业余爱好者。 绝大多数人通过台式机和笔记本进行编程,通常会投入9-12个小时。
健康习惯:六成以上程序员从不锻炼
开发人员说,他们不会经常因为工作量而跳过饭菜,而且大多数人表示他们至少会做少量运动。 超过60%的受访者表示至少每周锻炼一次,但选择“从不”运动的人数最多。编程语言:JS最受欢迎
JavaScript连续六年被评为最常用的编程语言。
Python的排名上升,今年超过了C#,去年刚超过了PHP。
技术关联
我们看到专业开发人员和整体开发人员的技术选择紧密结合。
一些相关的技术通常聚集为一个生态系统,开发者通常会选择使用同一种生态的编程语言。
在这张图表中,我们看到一个用于Web开发的大型集群(JavaScript,HTML和CSS)通过SQL连接到Microsoft技术(C#,Visual Studio和.NET Core)。沿着左边,我们看到了一个将Java,Android和iOS连接到Linux,bash / shell和Python的连线。 其他较小的相关群集包括Scala / Spark,C / C ++和其他包含特定语言IDE的小型技术。
AI技术:危险和惊喜共存
部分开发人员参与讨论了当今世界机器学习和人工智能作用的重要性:哪些技术可能会带来危险后果?哪些技术又令人兴奋? 关于何种技术是最危险的,每个答案都大致相同,开发人员对此没有多少共识。但“最令人兴奋的AI技术“的回答中,得票最多的是工作可以实现自动化。
AI威胁:谁的责任?
开发人员认为,机器学习和人工智能算法背后的创造者和技术人员是最应该对人工智能所带来的社会问题负责。 大约四分之一的受访者认为监管机构应该负主要责任。
开发人员对人工智能问题的关注取决于他们所做的编码工作。例如,当计算机变得比人们更聪明时,数据科学家对算法公平性的关注度将比任何其他问题提高1.5倍,这是任何类型开发人员中最重视的部分。许多开发者讨论了是否将系统性偏见纳入到算法决策中,以解决AI被滥用而自身不具备检查和推理的决策途径的缺陷。
会不会写不当用途的代码?
在假设情况下,当要求开发人员为不当用途的产品或目的编写代码时,超过一半的受访者表示他们不会写这样的代码。 道德情景可能很复杂,大约三分之一的受访者认为要取决于具体情况做决定。
大多数开发人员认为,管理者是为不道德代码的结果负最终责任的人。 不到20%的受访者表示,编写用于不道德目的的代码的开发者是最应该对此负责的。
几乎80%的受访者声称,开发人员应当考虑他们代码的正确用途。
在这道题的开放性回答里,我们看到了开发人员关于责任的深思熟虑。代码的不道德的使用只是偶然情况,但开发人员可以成为抵御不道德代码的最后一道防线。
原文发布时间为:2018-03-15
本文作者:文摘菌