与全球 JavaScript 开发者的对话(第一部分)
综上所述
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
我的工作是与世界各地的开发者交流。我们有一个平台,开发者可以在这里以文字课程的形式与同行分享知识,而我的工作就是寻找内容创作者。因此,我有机会与大量的开发者交流。例如,在过去的四个月里,我与 80 多位开发者和工程师进行了交流,他们的工作领域涵盖以下方面:
AngularJS、AWS、Bash、CSS、Dart、数据分析、数据可视化、设计模式、Docker、EmberJS、以太坊区块链、Firebase、GatsbyJS、Git、Golang、Java Spring、JavaScript、Kotlin、Kubernetes、机器学习、微服务、MongoDB、Next、Node、Objective-C、Perl、Python、R、React、Serverless、Swift、系统设计、TypeScript、单元测试和自动化测试、VueJS 以及 Web 应用架构
最近,我向本地的 JavaScript Meetup 小组分享了我从与 JavaScript 相关讨论中学到的东西,所以我决定也以这篇文章的形式分享我的心得。这些讨论的有趣之处在于,它们涵盖了开发者的资历和地域:从初级前端工程师和全栈开发者到拥有 20 年嵌入式系统开发经验的资深人士。这些专业人士来自以下国家:🇦🇺🇦🇹🇧🇷🇨🇦🇭🇷🇫🇷🇮🇳🇮🇪🇮🇱🇩🇪🇱🇧🇲🇾🇳🇿🇳🇬🇷🇸🇪🇸🇬🇧🇺🇸🇿🇲(即澳大利亚、奥地利、巴西、加拿大、克罗地亚、法国、印度、爱尔兰、以色列、德国、黎巴嫩、马来西亚、新西兰、尼日利亚、塞尔维亚、西班牙、英国、美国和赞比亚,希望未来会有更多国家加入)。其中约有二十次讨论围绕 JavaScript 展开。
想学习 JavaScript 开发或找到一份理想的 JavaScript 工作吗?不妨看看《成为前端开发人员》、《面向前端开发人员的 React》和《轻松应对 JavaScript 编程面试》,看看 Educative 能否助您一臂之力。
以下是我从世界各地的 JavaScript 开发人员那里收集到的一些见解和观点。
谈话中反复出现的话题是什么?
提及最多的编程语言是纯JavaScript和TypeScript。框架方面,提及的则更多,包括Angular、Ember、Express、Gatsby、Next、Node、React、React Native和Vue。相关的工具和应用包括用于测试 Vue 框架的Jest ;用于将 JavaScript 应用连接到云端实时数据库的Firebase ;以及用于管理状态的Redux 。
这让我想到,这些开发者是如何在日常工作和业余项目中使用 JavaScript 的。
JavaScript 是如何被使用的?
以下是我遇到的一些用例,所有这些用例对于 JavaScript 开发人员来说都很熟悉:
- 使用 Node构建后端非常重要,因为 JavaScript 本身传统上是一种前端语言,而 Node 则扩展了它的功能。
- 使用 React创建 web3 区块链应用程序, React 作为现有 web2 架构和以太坊等 web3 主干网之间的接口。
- 使用p5等库可视化大量数据
- 使用 Gatsby、GraphQL + Gridsome或 React + Next创建响应式或静态网站
- 使用 React Native构建针对高流量和高 API 调用量进行优化的移动业务应用程序
- 使用Ramda库在 JavaScript 中进行函数式编程
- 构建实时应用程序和无服务器应用程序
还有很多其他内容。
为什么 JavaScript 开发者如此热爱 JavaScript? :)
开发者选择不同语言的原因多种多样。如果你正在为关键的汽车应用构建后端,为大型社交网络编写编译器,或者为金融科技初创公司开发移动前端,那么你学习和使用的语言将会大相径庭,从 C++ 和 C# 到 JavaScript,不一而足。如果你精通 Kubernetes,那么你很可能了解 Go 语言。如果你梦想构建下一代移动应用,那么 Kotlin 和 Swift 就是你的选择之一。除了行业和软件类型之外,个人偏好以及语言的技术文档质量等因素也同样重要。这本身就可以写成一篇涵盖多种语言的文章,但这里我们先来看看JavaScript开发者们喜爱它的原因:
- JavaScript易于上手,易于构建,而且界面美观。
- JavaScript 拥有众多框架,这为开发者提供了构建内容和方式的灵活性。
- JavaScript 语言和框架生态系统变化迅速。例如,React Hooks 作为 React 16.8 的一个特性,仅仅在五个月前才发布,但它已经为一些开发者提供了 Redux 的替代方案。
- 如前所述,JavaScript 可以与 p5.js 等图形库配合使用,以呈现海量信息,这对于更喜欢使用 JavaScript而非 Python 的数据科学家来说极具吸引力。
- 由于全球最流行的网络浏览器(Chrome)使用的V8 JavaScript 引擎经过了“极致优化”,JavaScript 在数十亿用户使用的设备上运行速度非常快。我还听说 JavaScript能很好地处理事件循环队列之类的东西,这减少了 Web 应用程序的性能瓶颈,并吸引了那些注重性能的工程师和开发人员。
因此,JavaScript 开发者喜爱 JavaScript 的原因远不止语言本身:它不仅易于使用、灵活且充满活力,还能让开发者保持新鲜感。更重要的是,现代世界的大部分技术栈都基于 JavaScript 运行,而且运行良好,因此,在当今互联互通的时代,JavaScript 是构建应用的理想选择。这似乎概括了许多人对 JavaScript 的看法。
JavaScript 开发者们都在谈论……
以下是我遇到的一些关于此事的观点和观察:
- TypeScript 语言
- 对 JavaScript 友好的函数式语言Elm
- Gatsby 是一个静态网站和渐进式 Web 应用框架。
- Vue 是一个用于用户界面和单页应用程序的框架。
- 测试的主题
TypeScript
我采访的一位开发者提到,由于 JavaScript 最初的开发速度非常快——“一周就完成了”——所以它一直存在一些缺陷。因此,“TypeScript 旨在完善 JavaScript 的这些缺陷”。此外,随着越来越多的开发者意识到类型安全对其代码的重要性,TypeScript 也越来越受到类型安全倡导者的青睐。尽管 TypeScript 发布至今不过六年,但它已经发展成熟,一些开发者甚至将其与 C# 等语言结合使用,构建复杂的系统,组装命令行界面等离线工具,以及使用 Angular 创建高级用户界面和 Web 应用(正如我所看到的一些例子)。
榆树
一些 JavaScript 开发者认为,Elm 未来或许会像 TypeScript 之于 JavaScript 一样,成为 TypeScript 的标杆。在他们看来,像 Elm 这样的函数式编程语言能为前端程序员带来巨大的工作优势,因为它能够与 JavaScript 无缝协作,并可用于构建高性能的 Web 浏览器图形用户界面 (GUI),尤其适用于一些比使用 TypeScript 和原生 JavaScript 更轻量级的应用场景。因此,如果你想构建面向未来的前端,那么现在就开始学习 Elm 或许是值得的。此外,想要迎接这一挑战的 JavaScript 开发者或许会喜欢这个建议:由于 Redux 的灵感来源于 Elm,因此先学习 Redux可以帮助新手更快地适应 Elm。
目前 Elm 开发者确实面临着一个挑战,那就是 Elm 社区仍然很小,而其他语言和框架的社区却在快速增长。
观景台
说到社区,Vue 框架在全球范围内的普及率正在迅速增长,在中国、东欧、法国和尼日利亚等地都拥有庞大的用户群体。Vue 发展如此迅速的原因之一是,与其他单页网站和用户界面框架相比,它更容易上手。Vue 社区也散发着包容友好的氛围,无论在线上还是线下,都能让成员们积极参与互动。这其实很有道理,在任何领域都是如此:当更容易找到答案,开发者也乐于助人时,就能更轻松地开始创作和解决问题。
一些 Vue 开发者还指出,Angular 比 React 更难学,而 React 又比 Vue 更难上手,因此 Vue 对某些人来说是默认的最佳选择。持这种观点的开发者仍然称赞 Vue 支持高级用例,并拥有一些其他框架所不具备的功能(例如列表)。我接触过的 Vue 开发者似乎都对 Vue 给他们的工作带来的优势持相当乐观的态度。
了不起的盖茨比
Vue 用于构建单页应用和 Web 界面,而 Gatsby 则用于创建静态和响应式网站。Gatsby 的用户表示,他们使用 Gatsby 构建静态网站时体验极佳,因为它计算开销低、缓存机制可靠且性能出色。Gatsby 还简化了跨浏览器渐进式 Web 应用的创建过程。它似乎正在逐渐成为备受青睐的 JavaScript 替代方案(或类似方案),与优秀的基于 Ruby 的静态网站生成器Jekyll相媲美。
测试的重要性
最后,虽然这与框架无关,但许多开发者都会理直气壮地说,每个程序员都应该能够编写可测试的代码,并且能够证明自己有能力做到这一点。这一点对于渴望领导开发团队的开发者来说尤为重要,因为可测试的代码能够减少 bug、回归以及其他阻碍用户体验一致、可靠且可扩展的问题。换句话说,如果你想要代码性能良好,就必须对代码进行充分的测试。一般来说,花时间了解手动测试和自动化测试、两者使用的工具以及如何使用这些工具编写高质量的测试用例等主题是明智之举。
因此,对 JavaScript 专用单元测试和自动化软件测试知识的需求日益增长,因为随着 JavaScript 的发展,越来越多的 JS 开发人员在职业生涯中不断晋升。随着他们资历的加深,能否编写并发布可持续测试和改进的代码也成为衡量其能力的重要标准之一。
那么,JavaScript 开发者们对测试有什么看法呢?他们认为,能够使用 Jest 等工具测试 Vue 应用,以及使用 Redux 等状态管理库从一开始就让代码更易于测试,对他们的开发工作至关重要。他们也认为,业内同行需要了解通用和JavaScript 特有的单元测试、性能测试、自动化测试和质量保证 (QA)。遗憾的是,我也听说,目前高质量的测试学习资料还远不及Docker、Kubernetes、云基础设施和 Web 应用架构等技术领域——但希望这种情况即将改变。例如,在过去几周里,几位开发者(我们在教育学习平台上称他们为“作者”)告诉我,他们计划创建专门讲解测试的课程。
想了解更多关于 JavaScript 测试的知识吗?看看《使用 Jest 测试 Vue.js 组件》或《从零开始学习 Vue.js:构建和测试电影应用》是否能帮到你。
既然我们谈到了开发者给开发者的建议,那就让我们看看我的 JavaScript 圈内朋友们正在学习什么,以及他们认为其他人也应该学习什么。
JavaScript开发者认为JavaScript开发者需要什么才能成功
我把最好的部分留到了最后:世界各地的 JavaScript 开发人员认为他们的同行应该学习哪些内容才能保持领先地位并推进技术发展。
JavaScript 开发者们普遍认为,如果你从Java、Kotlin 或 Objective-C 等强类型语言切换到 JavaScript 等弱类型语言,适应起来可能会比较困难。因此,即使对于经验丰富的开发者来说,JavaScript 的学习曲线也可能相当陡峭。所以,务必投入时间学习如何进行这种切换,并建立必要的思维模式,以便充分利用 JavaScript 的各项功能。这一点对于 JavaScript 新手和寻求新挑战的资深开发者都至关重要。
一些 JavaScript 开发者也认为,那些没有接受过正规计算机科学训练、来自非传统背景的同行,如果能抽出时间学习形式语言理论,将会受益匪浅。他们的观点是,自学 JavaScript 的开发者迟早需要接触形式语言概念,之后才能真正发挥 JavaScript 的潜力,并在编程生涯中取得更大、更快的进步。我欣赏这种观点,它既尊重软件开发中固有的实践性和边做边学的特性,又承认概念理论可以帮助开发者提升技能运用能力。这似乎是一种平衡的策略。
从第三个更具策略性的角度来看,许多开发者都提到理解和实现Promise 的重要性。Promise 是一种可以立即编程创建的对象,它能够在将来返回值。掌握 Promise 的知识——包括 Promise 的定义、工作原理、使用时机以及其强大之处——被认为是每位 JavaScript 开发者工具箱中必不可少的技能。
以下是一些JS开发者认为值得学习并推荐给其他人进一步学习的领域示例:
- Web 组件和Web 套接字
- 渐进式 Web 应用(PWA)
- 无服务器后端框架(基于Node)
- JavaScript 相关面试技巧
充分的面试准备对薪资的“五位数影响”
我想重点强调最后一点。对于许多 JavaScript 开发者来说,构建出色的应用程序并在专业社区中获得认可和尊重本身就是一种回报,但如果你花费数年时间努力钻研,力求精益求精,那么你自然希望自己的技能能够得到丰厚的回报。随着 JavaScript 开发者职业生涯的不断攀升,开始收到多家公司的聘用邀请,扎实的面试准备不仅能显著缩短面试时间,还能大幅提升薪酬待遇和最终的录用结果。我曾直接听一些开发者说,面试成功可以带来高达五位数的薪资增长:$$,$$$ 的薪资提升。正因如此,我们关于编码面试、系统设计准备以及数据结构和算法白板练习的课程才如此畅销。
综上所述
全球 JavaScript 生态系统庞大而多元,人才济济,创意无限,方法各异。这个领域的开发者和工程师们对于如何构建 Web 和移动应用程序、使用哪些方法和框架,以及如何利用相关知识和工具来创造卓越成果,有着不同的见解。但我接触过的每一位 JavaScript 开发者都拥有一个共同点:他们都对 JavaScript 本身充满热情,热衷于持续学习和实验,并乐于帮助他人共同成长。
我的第一期“与全球开发者的对话”就到此结束了。如果您想继续关注我与全球开发者交流的更多内容,了解他们如何使用 JavaScript 以及其他多种语言和框架,欢迎给我发邮件或在 Twitter 上关注我@alexoeducative。我的团队账号是@Educativeinc。如果您想了解为什么有 10 万名开发者和工程师对我们的课程和教程赞不绝口,以及我们的学习资料如何帮助他们提升学习和职业发展,请访问Educative.io。
把你所知道的知识教给我们的学员——你的同伴们。
此外,如果您有 JavaScript 或本文讨论的其他语言、框架或主题的软件开发经验,并且有意在我们的平台上开设课程,请随时联系我。我们集成了编译器、浏览器内 IDE,以及一个学生无需下载任何软件的平台:他们只需购买您的课程即可立即开始学习。我们的内容创作工具包括:
- 欢迎(您以前从未创建过课程?别担心,我们来帮您)
- 文字形式(没有好的麦克风、昂贵的相机或视频编辑软件?没关系,你的知识和键盘就足够了)
- 在您的内容创作过程中,我们将提供大量的免费支持,以确保您的学生最终获得良好的学习体验(您并非孤军奋战 :))。
我们诚挚邀请您加入我们,成为全球首批在 Educative 平台上发布课程的 100 位开发者之一。请联系我们。
我将继续与世界各地的 JavaScript 开发者进行对话,大约六个月后我们将迎来第二部分!感谢阅读。
附录:提及的 JavaScript 相关资源
喜欢这篇文章吗?请在推特上点赞并转发:
文章来源:https://dev.to/alexoeducative/conversations-with-the-world-s-javascript-developers-part-1-5chh