在这篇文章中,我们将总结和分析2021 年 Solidity 开发者调查.
非常感谢所有抽出时间参与调查的人!
您的意见对我们非常宝贵,它在帮助我们不断改进整体 Solidity 开发者体验方面发挥着至关重要的作用。
摘要和重要见解
- 调查受众:总共有来自 73 个不同国家的 435 名开发者参加了 2021 年的调查。与 2020 年相比,这表示响应人数增加了 100% 以上。不同地理区域的覆盖范围也大幅增加,从 2020 年的 48 个国家增加到 2021 年的 73 个国家。超过 20% 的受访者表示居住在美国,其次是印度 (9%) 和德国 (4%)。大约 9% 的受访者不愿透露其所在位置的详细信息。
- 开发者资料:编码经验水平为中等至高级,大多数受访者具有 3 年或以上专业编码经验,其中 36.6% 的受访者甚至具有 6 年以上的编码经验。
- Solidity 经验:超过一半的受访者使用 Solidity 不到一年,而 15.5% 的受访者使用 Solidity 超过 3 年。近 80% 的受访者每天或每周使用 Solidity。
- Solidity 专业知识:大多数受访者认为自己是 Solidity 专家,其专业知识自评等级为 7 或更高(满分 10 分)。4.2% 的受访者将其专业知识等级评为 10/10。80% 的受访者将 Solidity 用于个人项目,大约 60% 的受访者还在工作中使用 Solidity。超过一半的受访者使用 Solidity 不到一年。
- 开发者体验:大多数人(+70%)认为 Solidity 开发者体验在过去一年中有所改善。只有 1.6% 的人认为体验变差了。
- 语言限制性:超过 60% 的受访者希望 Solidity 变得更严格/更明确(进行更多检查)。26% 的受访者希望保持现状。
- 未来功能:更有效的优化器和捕获自定义错误的能力被认为是最重要的未来功能。此外,对分数的支持、更好的数组管理和修复堆栈太深等也是最常被提及的预期功能。
- 喜欢和讨厌的功能:受访者最喜欢 Solidity 的简洁性、易于学习的特性、默认的 SafeMath 和修饰符。令人讨厌的是调试、堆栈太深错误和缺乏对分数的支持。
- 社区:不到三分之一的受访者曾参与过与 Solidity 语言设计相关的活动。
[1] 调查受众
⚠️ 请注意,此调查仅以英语发布,在解读有关居住国家和语言偏好的结果时,这一点是一个重要的考量因素。
首先,让我们看看参与此调查的开发者:我们将详细介绍有关位置和所用语言等一般信息,并深入了解他们的专业经验、编码偏好等。
总的来说,2021 年的调查收到了来自 73 个不同国家的 435 名开发者的回复。与 2020 年相比,这表示响应人数增加了 100% 以上。看来此调查也覆盖了更多地理区域,因为参与调查的国家数量从 2020 年的 48 个增加到 2021 年的 73 个。
居住地
超过 20% 的受访者表示居住在美国,其次是印度 (9%) 和德国 (4%)。大约 9% 的受访者不愿透露其所在位置的详细信息。
语言
受访者的母语涵盖了各种各样的语言。总共提到了 50 种不同的语言作为母语。
35% 的受访者认为英语是他们的母语,其次是西班牙语 (9.4%)、法语 (5.9%)、俄语 (5.9%)、葡萄牙语 (4.9%) 和德语 (4.9%)。
绝大多数(超过 80%)的受访者在工作中主要使用英语。
一些受访者还在工作中使用西班牙语 (2.8%)、法语 (2.1%)、俄语 (1.6%) 或葡萄牙语 (1.6%)。
在那些未将英语列为母语的受访者中,超过 90% 的受访者愿意阅读英语版本的 Solidity 文档。8.6% 的受访者希望以其母语阅读文档,最常被提及的语言包括普通话和繁体中文、西班牙语和葡萄牙语。
ℹ️ 请注意,此调查仅以英语进行,这可能会影响此问题的结果。我们仍然认为,对资源(如 Solidity 文档)进行国际化是降低进入壁垒的关键因素,我们旨在通过新的、结构更清晰的翻译指南.
来支持社区翻译工作。
开发者资料
工作经验和就业情况
77.1% 的受访者目前有工作,大约 10% 的受访者是学生,12.5% 的受访者目前没有从事专业工作。
受访者主要在科技 (62.8%) 和金融服务 (15.5%) 领域工作。剩余的三分之一分布在其他各种行业。
大约 10% 的受访者是编码新手,只有不到一年的专业编码经验。另一方面,同样数量的受访者拥有超过 15 年的编码经验。
人数最多的群体(约 30%)处于分布的中间,拥有 3-5 年的专业编码经验。
总的来说,编码经验水平为中等至高级,大多数受访者具有 3 年或以上专业编码经验,其中 36.6% 的受访者甚至具有 6 年以上的编码经验。
有趣的是,大多数受访者 (80.4%) 将 Solidity 用于个人项目。大约 60% 的受访者在工作中使用 Solidity,而 40% 的受访者在工作中主要使用其他编程语言。
超过 20% 的受访者表示自己领导着编程团队。
在开源贡献方面,不幸的是,60% 的受访者表示他们从未或很少为用 Solidity 编写的开源项目做出贡献。
另一方面,近 30% 的受访者每天或每周都会做出贡献。
编程语言偏好
JavaScript 和 Solidity 并列排名第一,是最常用的编程语言(均为 27%),其次是 TypeScript (14.7%) 和 Python (10.9%)。
受访者最喜欢的编程语言在各种语言中分布更均匀。Python 最受欢迎,占所有条目中的 22.7%,其次是 Solidity (19.4%)、JavaScript (14.5%)、TypeScript (10.8%) 和 Rust (8.4%)。
操作系统
与 2020 年的调查类似,macOS 和 Linux 似乎同样受欢迎。大约 40% 的受访者使用 macOS,紧随其后的是 Linux (36.6%)。22% 的受访者使用 Windows,其中大多数受访者表示除了 Windows 之外,他们还使用 macOS 或 Linux。还有一些开发者使用 Linux 和 macOS,甚至三种操作系统都使用。
Solidity 经验和 Solidity 开发者资料
大多数受访者认为自己是 Solidity 专家,其专业知识自评等级为 7 或更高(满分 10 分)。4.2% 的受访者将其专业知识等级评为 10/10。大约 23% 的受访者可以被视为初学者或低频用户,其专业知识自评等级为 4 或更低。
与去年相比,初学者的比例略有增加,超过一半的受访者使用 Solidity 不到一年。
15.5% 的受访者使用 Solidity 超过 3 年,因此可以被视为 Solidity 高级用户。
Solidity 仍然看起来很容易学习,26.7% 的受访者表示在不到一个月的时间内就能有效使用,而 30.7% 的受访者表示在不到半年的时间内就能有效使用。7.7% 的受访者需要超过一年的时间才能对这门语言感到熟悉。23.3% 的受访者表示还没有感到有效使用,其中超过 75% 的受访者是初学者,使用 Solidity 不到 6 个月。
Solidity 开发者资料
大多数(约 80%)的受访者每天或每周使用 Solidity。8% 的受访者表示“很少”或“从不”使用 Solidity,其中几乎所有受访者在工作中主要使用其他编程语言,并且大多数受访者表示他们使用 Solidity 不到 3 个月。
超过 50% 的受访者使用 VSCode 作为编写 Solidity 的编辑器,其次是 Visual Studio (14%) 和 Remix (11%)。Vim 被 7% 的受访者使用,其次是 IntelliJ (5.8%) 和 Atom (3%)。
与 2020 年相比,IntelliJ、Atom、Vim 和 Sublime 在 2021 年的使用率有所下降。
Hardhat 成为最流行的以太坊专用开发环境,约 65% 的受访者使用它(2020 年为 38.6%)。
Truffle 和 Remix 紧随其后,用户份额分别约为 25-26%。相对“小众”的以太坊专用开发环境包括 Brownie (10.5%)、Dapptools (8.2%)、Scaffold-ETH (4.7%)、Foundry/Forge (1.6%) 和 Embark (0.7%)。3.5% 的受访者未使用任何以太坊专用 IDE。
与 2020 年相比,Truffle (2020: 59.3% -> 2021: 26.2%) 和 Remix (2020: 50.3% -> 2021: 24.8%) 的用户份额大幅下降,而 Hardhat、Brownie、Dapptools 和新加入的 Foundry 等环境的用户份额有所上升。需要注意的是,2020 年的调查响应人数明显较少(2020: 194 -> 2021: 435),因此同比比较只能被解读为一种松散的趋势,由于样本量较小,因此没有适当的统计意义。
Solidity 0.8.x 版本是使用最多的版本,占 86.3%。0.7.x (23%) 和 0.6.x (18.3%) 版本系列仍然在使用,而比它们更早的版本几乎不再使用。
与 2020 年相比,这是一个巨大的进步,当时大多数用户仍然使用 0.6.x 版本系列。
幸运的是,只有少数人仍然使用 0.4.x 或 0.5.x 系列的旧版本。
⚠️ 提醒:请确保经常更新您的代码。自 0.4.x 版本以来,已经添加了几个重要的错误修复和安全改进!
[2] Solidity 用户体验
大多数人(+70%)认为 Solidity 开发者体验在过去一年中有所改善。只有 1.6% 的人认为体验变差了。
在遇到 Solidity 问题时,80% 的受访者会尝试在以太坊 StackExchange 或 StackOverflow 上寻找解决方案。许多受访者还会向同事寻求帮助 (32.9%) 或观看教程 (38.1%)。暂时搁置问题、做其他工作,然后再尝试解决问题也是一个很常见的做法 (29.2%)。
反复出现的问题
30% 的受访者在用 Solidity 开发时没有遇到相同或类似的问题多次。
在那些遇到问题的人中,堆栈太深、字节码大小限制、调试问题、对优化器和数组处理的不确定性是经常被提及的反复出现的问题。
[3] 功能
未来功能
更有效的优化器和捕获自定义错误的能力被认为是最重要的未来功能。
⚠️ 我们注意到,受访者使用了各种不同的术语,如“浮点数”、“浮点运算”、“浮点数”、“定点数”、“定点数学”。我们将这些归类为“小数”,并假设所有这些最终都旨在描述“定点数学”。
最常被提及的预期功能(按降序排列)
- “浮点数”
- 更好的数组管理/更多用于数组和映射的功能
- 修复堆栈过深错误
- Gas 优化/优化器改进
- 更好的调试功能
- 更好的字符串支持
- 在构建/开发过程中更轻松/更好的 Gas 度量
- console.log()
- 自定义 require() 错误
- 泛型
- 更好的文档(特别是针对高级内容,如内联汇编、Yul 等)
- 通过 Yul 生成代码
- 自定义值类型
- 定点数学
- LSP
最喜欢和最不喜欢
受访者最喜欢 Solidity 的简单性、易于学习的特点、默认的 SafeMath 和修饰符。
最常被提及的喜欢功能(按降序排列)
- 简单性
- 易于学习
- 领域特定语言/适合工作的工具/“它有效”
- 默认的 SafeMath/溢出和下溢检查
- 修饰符
- 映射
- 简洁的语法
- 接口
- 静态类型
- 可读性
- 继承
- 良好的工具
- 结构体
- 内联汇编
- 委托调用
- require 和断言
- 自定义错误
- 内存管理
- 事件
- 库
- 编译器安全性
- ABIEncoderV2
- 显式性
- 灵活性
- 不变性
- 语言安全性
- 面向对象
最令人讨厌的主题是调试、堆栈过深错误和缺少对小数的支持。
令人讨厌的功能(按降序排列)
- 调试
- 堆栈过深
- 缺少浮点数/定点数
- 内联汇编
- 模棱两可/通用(回退)错误消息
- 数组
- 字符串
- 文档难以阅读和浏览
- 次要版本中的重大更改/缺乏兼容性
- 安全性
- Gas 成本/部署成本
- 继承
- 测试
- Gas 优化
- 修饰符
- 社区资源中的过时资源/教程
- 日益增长的复杂性
- 返回值
- 显式转换
- 缺少关于内联汇编/Yul 的文档
- 缺少 console.log
- 内存分配
- 缺少标准库
- 重入
- 类型系统
- 重写
限制性
超过 60% 的受访者希望 Solidity 变得更加严格/显式,进行更多检查。26% 的受访者希望 Solidity 保持现状。
[4] Solidity 社区
语言设计
不到 20% 的受访者曾经参与 Solidity 语言设计相关工作。6.2% 的受访者参与了 Solidity 论坛的讨论,5.1% 的受访者参加了语言设计电话会议,6.4% 的受访者在 Solidity 仓库中创建或贡献了 Github 问题。
在近 80% 未参与语言设计的受访者中,近 8% 的受访者表示没有兴趣,而 35% 的受访者表示工作太忙,40% 的受访者表示不知道如何参与。
保持知情
大多数人喜欢通过关注 Solidity 的 Twitter 或 Mastodon 帐户,来了解 Solidity 版本、安全警报和公告。其他常用的信息来源包括 Solidity 博客和 Solidity GitHub 版本页面。
与其他 Solidity 开发者的互动
超过一半的受访者与其他 Solidity 开发者互动。有趣的是,近 45% 的受访者表示,他们很少或从未与其他 Solidity 开发者联系。
作为调查的最后部分,我们想听听有多少参与者同意或不同意关于 Solidity 社区和 Solidity 团队工作的几项声明。
- 75% 的受访者在 Solidity 开发者社区中感到受欢迎。
- 大约 80% 的受访者同意或有点同意,他们对 Solidity 团队的工作充满信心。
- 超过一半的受访者感到欢迎为 Solidity 做出贡献,但只有不到一半的受访者表示他们知道如何向 Solidity 贡献想法或反馈。
- 大约 25% 的受访者确信 Solidity 团队理解他们作为开发者的需求。另外 40% 的受访者有点同意,而只有极少数受访者不同意或强烈不同意。
感谢您并期待明年再见!
最后,我们想借此机会感谢您所有可爱且鼓舞人心的信息和收到的反馈。
我们希望 2021 Solidity 开发者调查中的见解对您有用,这些见解对我们来说肯定很有用!
我们将继续不断收集反馈,所以请不要停止睁大眼睛和耳朵!
为了不错过任何信息,请确保您...
- 关注 Solidity 的 Twitter 或 Mastodon 帐户。
- 加入 Solidity 论坛 的讨论。
- 关注 Solidity 博客 上的公告。