在我们深入研究结果之前,我们要感谢所有参与首届 Solidity 开发者调查的 Solidity 开发者,我们在去年年底进行了这项调查!
我们对提交的高质量内容感到惊讶,很高兴能从您的意见中提取重要见解。
在这篇文章中,我们将总结和评论调查结果。
请注意,调查中的问题都不是强制性的。因此,每个问题的回复数量可能会有所不同。
总结和重要见解
- 调查受众:来自世界各地的 193 位开发者参与了这项调查,他们来自 48 个不同的国家。大约 20% 的受访者住在美国,其次是印度 (8%) 和德国 (7%)。大多数受访者在工作中使用英语。
- 开发者资料:大约 65% 的受访者使用 Solidity 超过一年,其中 43% 是“Solidity 专业人士”,具有 2 年或更长时间的语言使用经验。从受访者的整体编码资历来看,似乎相当多的 Solidity 用户在其他编程语言方面经验丰富,而不是使用 Solidity 首次学习编程。
- Solidity 经验:43% 的受访者认为自己是 Solidity 专家,其专业水平为 8(满分 10 分)或更高。
- Solidity 开发者体验:虽然注意到还有很多需要改进的地方,但总体而言,对 Solidity 的看法是积极/好的。大多数受访者认为,在过去的一年里,Solidity 开发者体验有所改善或极大改善。
- Solidity 的挑战:对于大多数受访者而言,开发者体验中最大的挑战是工具的可用性和质量。错误处理、IDE 集成和更好的文档也被视为推动采用至关重要的方面。
- 最喜欢、最反感和最期待:经常提到的需要改进的主题包括:错误处理、调试、对更多工具和库的需求以及依赖项中断。
- 贡献和语言设计:令人惊讶的是,开发者对语言设计主题的兴趣和参与度很低,部分原因是开发者不知道如何参与,或者是因为他们没有兴趣。(我们会努力解决这个问题!促进协作语言设计的工作正在进行,我们很快就会分享更多信息。)
- 社区:参与这项调查的受访者中,近 17% 的人从未与其他 Solidity 开发者进行过互动!
(1) 调查受众和开发者资料
首先,让我们看一下参与调查的开发者。总的来说,我们收到了来自 48 个不同国家的 193 份回复。
居住地
⚠️ 请注意,这项调查只以英语发布,这是在解释有关语言和居住国的结果时需要考虑的重要因素。
受访者表示他们住在阿尔及利亚、阿根廷、澳大利亚、奥地利、比利时、巴西、保加利亚、加拿大、中国、哥斯达黎加、丹麦、芬兰、法国、德国、加纳、希腊、洪都拉斯、香港、印度、印度尼西亚、伊朗、爱尔兰、以色列、意大利、日本、立陶宛、马来西亚、墨西哥、荷兰、新西兰、尼日利亚、巴基斯坦、菲律宾、波兰、葡萄牙、罗马尼亚、俄罗斯、塞尔维亚、新加坡、南非、西班牙、瑞士、台湾、泰国、东帝汶、乌克兰、英国和美国。
大约 20% 的受访者住在美国,其次是印度 (8%) 和德国 (7%)。
语言
开发人员使用各种不同的语言作为他们的主要语言,其中英语是迄今为止最受欢迎的语言。德语、西班牙语、俄语和法语紧随其后,使用率相似。
86% 的受访者在工作中使用英语。
几乎 90% 的受访者可以接受阅读英语版的 Solidity 文档,而大约 10% 的受访者希望将其翻译成他们的母语。尽管一些选择“母语”的受访者表示英语是他们的主要语言,这使得 95% 的参与者更喜欢用英语阅读文档。
请记住,这项调查只以英语进行,这极大地影响了这个问题的结果。因此,该结果对 Solidity 文档的改进翻译工作的影响不会太大,我们将进一步调查这一主题。
就业
82% 的受访者表示他们目前受雇。4% 的受访者表示自己是学生,而 14% 的受访者表示目前没有工作。
行业
大多数受访者 (68%) 表示他们在科技行业工作。14% 的受访者在金融服务行业工作。能源、医疗保健、创意、媒体和游戏以及交通运输行业也是常见的选择,尽管比例较小。
编码经验
受访者的整体(非 Solidity 相关)专业编码经验令人印象深刻。大约 48% 的受访者表示,他们在工作中从事编码工作 6 年或更长时间。只有大约 7% 的受访者表示他们拥有不到 1 年的编码经验。
操作系统
有趣的是,Linux 和 macOS 似乎同样受欢迎,两者都获得了大约 40% 的受访者投票。大约 18% 的受访者使用 Windows,虽然其中一部分用户也表示除了 Windows 外,他们还使用其他操作系统。此外,也有许多开发者使用 Linux 和 macOS,甚至所有三种操作系统。
Solidity 使用情况
几乎所有受访者都在工作之外的个人项目中使用 Solidity (93%)。超过一半的受访者 (68%) 也表示他们在工作中使用 Solidity,或者在工作中用其他编程语言进行编码。
27% 的受访者表示他们管理着一个编程团队,而 8% 的受访者是学生。
开源代码
令人惊讶的是,大多数受访者 (61%) 很少甚至从未为用 Solidity 编写的开源项目做出贡献。21% 的受访者表示,他们每天都会参与其中。
编码偏好
我们询问了参与者在选择编程语言时最看重什么。这个问题有一个自由文本回复字段,因此我们将回复分类到总体类别中。
许多受访者表示,最重要的方面是编程语言必须适合任务,并且必须“完成工作”。
排名非常高的还有工具、文档和社区,其次是语言的安全性、库、优质资源和学习资料的可用性以及清晰或熟悉的语法。
不太常被提及,但仍然很重要,是描述性错误信息 / 良好的调试、可读性、性能和强类型。
其他被多次提及的方面包括可用性、生产力/效率、便利性、表现力、维护和支持、简单性、良好的开发者体验和鲁棒性(规模化)。
最喜欢的编程语言
当被问及他们最喜欢的编程语言是什么时,大多数受访者表示是 JavaScript (40),其次是 Python (33) 和 Solidity (30)。其他受欢迎的编程语言包括 TypeScript (19)、Go (15) 和 Rust (14)。
最常用的编程语言
大多数受访者最常使用 JavaScript (36%),其次是 Solidity (21%) 和 TypeScript (11.5%)。其他被多次提及的语言包括 Python (9%)、Go (5%)、C++ (3%) 和 Java (3%)。
(2) Solidity 学习历程
接下来,我们想了解更多关于每个受访者的个人学习历程。虽然大多数受访者在不到半年时间内就能够高效工作,但相当一部分人 (17%) 仍然没有达到高效工作状态。
学习
对于大多数受访者而言,Solidity 文档 是最主要的学习材料和主要资源。
阅读大型项目的开源 Solidity 代码以及观看编码教程视频的做法被经常提及。
另一种开始学习 Solidity 的常用方法是CryptoZombies 编码游戏。
许多受访者使用 Ethereum StackExchange 来查找问题的答案。
Udacity、Udemy 和大学课程等大规模开放式在线课程 (MOOC) 被许多受访者提及,其次是积极的编码方法,例如使用 Remix 和 OpenZeppelin 合约 进行“边学边做”以及通过 ConsenSys 学院 学习。
解决问题
遇到 Solidity 问题时,大多数 Solidity 开发者会访问 Ethereum StackExchange 寻求帮助。
其他常见的解决方案包括向朋友或同事寻求帮助、观看教程视频或做其他工作,稍后再尝试解决问题。
当被问及开发者是否会反复遇到类似的问题时,大多数受访者回答“不”,或者解释说随着经验的积累和使用,一旦他们知道如何解决问题,就不会再反复遇到相同的问题。
以下问题被提及仍然会定期出现或令人讨厌
- 堆栈过深错误。
- 错误信息无法指出问题的根源。
- 燃气不足错误。
- 编译错误。
- 工具问题。
- 验证困难。
- 重大更改和依赖项中断。
(3) 了解 Solidity 开发者体验
Solidity 使用情况
大约 65% 的受访者使用 Solidity 超过一年,其中 43% 是真正的 Solidity 专业人士,具有 2 年或更长时间的语言使用经验。
有趣的是,相当一部分人 (35%) 刚刚开始使用 Solidity,使用时间还不到 12 个月。
从受访者的整体编码资历来看,该数据表明大多数 Solidity 开发者是在其他编程语言方面有经验的开发者,而不是首次使用 Solidity 学习编程的人。
43% 的受访者认为自己是 Solidity 专家,其专业水平为 8(满分 10 分)或更高。只有 10% 的受访者将自己归类为初学者,其专业水平为 3 分或更低。
大多数受访者每周 (31%) 甚至每天 (41%) 都使用 Solidity。近 18% 的受访者每月使用一次,而剩下的 9% 的受访者表示他们很少使用 Solidity 进行编码。
大多数受访者目前使用的是 Solidity 的 0.6.x 或 0.7.x 版本。一小部分人仍在使用 0.5.x 版本,或已经尝试过最近发布的 0.8.0 版本。
一些人不知道他们使用的版本,或者仍在使用 0.4.x 系列的非常旧的版本。
🚨 请确保经常更新您的代码,因为自 0.4.x 版本以来,已添加了一些重要的错误修复 和安全改进!
IDE/工具
50% 的受访者表示他们使用 VSCode 作为首选编辑器来编写 Solidity。第二受欢迎的编辑器是 Vim(12.6%),其次是 Remix(9.2%)、IntelliJ(8.8%)和 Atom(7.1%)。
当被问及他们是否使用以太坊特定的开发环境时,5% 的人说他们没有使用。Truffle 最受欢迎,几乎占 60%,紧随其后的是 Remix(50.3%)和 Hardhat(38.6%)。
总体 Solidity 开发者体验
大约 62% 的人认为,在过去的一年里,Solidity 开发者体验有所改善或甚至有了很大改善。15% 的人认为有所改善,而只有 9% 的人认为没有变化或 Solidity 开发者体验变得更糟。
对于大多数受访者来说,开发者体验中最大的挑战是工具的可用性和质量。
其他被视为促进语言采用的关键方面是:错误处理、IDE 集成和更好的文档。
投票率较低但仍然相关的方面包括:语言复杂度的增加、泛型的可用性、编译时间的改进和调试,以及燃气成本、存储处理和安全的改进。
未来功能的重要性排名
我们要求调查参与者根据其重要性对讨论中的选定功能进行排名。
燃气优化被评为最重要,其次是与外部调试工具的接口。SMTChecker、泛型和定点类型被评为同等重要。
参与者认为,显式复制语义、带数据的枚举、文件级别的函数和 WebAssembly 输出不太关键。
(4) 最受欢迎、最令人恐惧和最期待的功能
我们询问了调查参与者他们最喜欢和最不喜欢 Solidity 的什么,以及他们希望在即将发布的 Solidity 版本中看到什么。这些问题有自由形式的回复字段,因此我们总结了回复,并在下面列出了最常提到的功能和方面。
最喜欢的功能
简单性和简洁性一直是参与者最重视的 Solidity 的首要方面。
此外,开发人员赞赏可用工具的改进,尤其多次强调了 Remix 和 Hardhat。
受访者赞赏的另一个方面是 Solidity “易于学习”且“代码简单”。
有些人表示 Solidity 是他们正在做的事情的正确工具,他们喜欢专注于智能合约,以及 Solidity 作为它的“专用工具”。
其他反复被提及为珍贵和赞赏的功能和方面是
- 映射。
- 人机可读性。
- 结构体。
- 修饰符。
- 强类型。
- 类似于 JS。
- 汇编访问。
- 默认情况下使用 SafeMath。
- 良好的库支持。
- 类似于 C++。
- SMTChecker。
- 可组合性。
- 不变性。
- ABI 编码器 V2。
- 显式性。
- 继承。
- 紧凑的代码大小。
- 语法。
- 语言的稳定改进。
最令人恐惧或最不喜欢的功能
目前 Solidity 最令人恐惧的方面显然是调试,其次是 Solidity 库的缺乏。
受访者还抱怨继承冲突以及需要用汇编/低级代码编写更多特定代码。
其他反复被提及为令人恐惧或不喜欢的方面和功能是
- 错误处理。
- 内存管理。
- 重大更改和依赖项中断的频率。
- 合约和堆栈大小限制。
- 与其他语言不一致。
- ABI 编码。
- 燃气使用情况不明确/燃气效率低下。
- 工具。
- 复杂性。
- 由于元数据导致重新编译失败。
- 冗长。
- 动态数组处理。
- 测试。
最期待的功能
到目前为止,最期待的功能是“不再使用 SafeMath”。默认情况下使用 SafeMath 已在 0.8.0 中引入,因此不再是一个问题。🥳
第二受欢迎的功能是更好的调试和更多调试工具。
排名也很高的还有更好的文档,尤其是专注于更多教程和代码示例。
其他期待的和经常被提及的功能是
- 燃气效率优化功能。
- 泛型。
- console.log()。
- 动态数组。
- 更好的工具。
- 更好的 IDE。
- LSP 支持。
- 丰富的回退原因/错误代码。
- 标准库。
- 自定义优化功能。
- 发布 v1.0.0。
- SMTChecker。
- 稳定的 ABIEncoderV2。
- 不再出现堆栈过深错误。
- 小数/定点类型。
- WASM。
(5) 社区
超过 55% 的受访者定期与其他 Solidity 开发者互动,而 27% 的人表示他们只是偶尔这样做。近 17% 的人根本不与其他 Solidity 开发者互动。
大多数受访者觉得在 Solidity 社区中受到欢迎,并且对 Solidity 核心团队的工作充满信心。
71% 的人同意或有点同意觉得受到欢迎,可以为 Solidity 贡献力量。
只有 22% 的人完全同意 Solidity 团队理解他们的需求。14% 的人表示他们不同意,并且认为 Solidity 团队不理解他们的需求。
41% 的受访者表示,他们对如何为 Solidity 贡献力量的过程感到清楚或有点清楚,而 32% 的人不同意,因此表示他们对贡献过程感到不清楚。
⚠️ 请注意,对最后三条陈述,“我不知道”的回复比例相对较高。
语言设计
近 85% 的受访者表示,他们从未参与任何与 Solidity 语言设计相关的活动。大约三分之二的人表示他们没有这样做是因为他们不知道怎么做,而三分之一的人根本不感兴趣。
7-8% 的人表示他们加入了语言设计邮件列表,参加了一个或多个语言设计讨论电话会议,或通过提交 GitHub 问题提出语言功能或更改建议。
保持最新
57% 的人更喜欢 Twitter 来了解最新情况。21% 的人喜欢邮件列表,14% 的人更喜欢 Reddit,而 6% 的人更喜欢论坛。
为了紧跟 Solidity 更新,例如新版本、安全警报和公告,大多数受访者表示他们关注Twitter 上的 Solidity,关注Solidity GitHub 发布页面或Solidity 博客。还提到了但受欢迎程度较低的是r/ethdev Reddit、Solidity 文档和以太坊周报。
一些声称不进行上述任何操作的参与者解释说,他们主要是通过同事或朋友了解情况,或者根本不关注最新情况。
感谢您!💙
作为结束语,我们询问参与者是否还有其他想告诉我们的话。我们没想到会收到这么多善意,并想对你们每一个人说一声感谢!阅读你们振奋人心和温暖的评论让我们感到无比快乐。
我们将继续努力进一步增强和塑造 Solidity,并期待下一次调查,再次与您进行交流!