本模块提供了一些软技能建议,学生可以在学习 Web 开发的同时努力提升这些技能,这些技能在进入行业时也是很好的品质。它们将极大地帮助培养正确的学习、研究和协作态度,并增加获得录用的机会。
1. 软技能
最佳实践
入门模块
1.1 持续学习的心态
学生应该培养持续学习的心态。Web 行业在不断发展,技术和趋势总是在变化,他们需要不断更新知识才能跟上步伐。
-
养成定期阅读技术新闻、博客和浏览器发布说明的习惯。
-
半定期地参与阅读任务或小型研究项目。
-
留出特定的学习时间来学习新技能。
-
保持好奇心。
推荐的新闻和信息网站
1.2 拥抱失败的开放态度
学生和新开发者常常因为害怕失败而回避实验和冒险(例如在开始新项目或探索新想法时)。花一些时间学习从错误中汲取价值,以及在未来类似情况下可以吸取和应用的教训。
以下是一些提高此技能的技巧
-
定义一个安全空间/同行群体,人们可以在其中自由提问,并且失败不会受到严厉评判。
-
关注你的本地社区,尝试寻找可以为你提供帮助和建议的聚会小组,或者找到和你面临同样问题的人,他们可以提供精神支持或与你一起进行实验。
-
(对于教育者)为你的评估设置评分标准,即使结果不正确,只要过程有充分的记录,你仍然可以获得合理的得分。为创新奖励额外分数。
-
在项目进行到一半时,与同行和导师一起进行“展示与讲述”或一对一的会议,以获得反馈和见解,了解你在哪里走错了路,并获得如何回到正确轨道的建议。
-
召开回顾会议,分析项目,看看哪些方面做得不好,并讨论下次如何改进。
1.3 有效的研究
Web 开发者花费大量时间寻找工作中的问题解决方案。学生应该学习有效的寻找答案的策略,以及何时使用哪种方法(例如,不要每次遇到障碍就直接去打扰高级开发者)。
这些策略包括
-
查阅文档。
-
当你在使用某个工具/产品时遇到困难,首先查阅官方文档。令人惊讶的是,很多人想不到这样做;官方文档通常面向初学者,所以有经验的人可能认为它们不适合他们。
-
了解不同类型的 文档 — 例如,教程、参考资料和其他类型 — 并理解每种类型在何时有用。
-
-
有效地使用搜索引擎(参见 如何像专业人士一样使用搜索:Google 及更高级搜索的 10 个技巧)。
-
选择有效的信息来源
-
选择推荐的网站,如 Stack Overflow 和 MDN。
-
检查文章的日期,并考虑讨论的技术是否已过时。例如,关于 CSS 布局的文章是否讨论了 Grid 和 Flexbox 等现代方法,还是仍然呈现了使用浮动进行多列布局的过时技术?它是否仍然谈论了针对 Internet Explorer 或 Netscape 4 等老式浏览器的 hack?
-
-
有效利用社交媒体
-
建立一个可以获得帮助的人脉网络。
-
加入社区群组,在那里你可以寻找答案。例如
-
Discord 上的 MDN Web Docs 社区
-
Scrimba 课程伙伴
-
-
学会付出和索取;互惠互利的 Web 开发者更有可能建立牢固的关系并持续获得帮助。
-
当你找到一个有用的答案时,写下来。例如,写成博客或在社交网络上分享。写作过程不仅能让你理清思路,还能从社区获得验证和/或反馈。它还可以帮助你在行业中开始建立自己的声誉。
-
-
有效利用有经验联系人的时间
-
“有经验的联系人”指的是老师、导师或高级开发者。
-
询问他们偏好的沟通方式。
-
提前仔细思考要问他们的问题,考虑到他们的时间有限且宝贵。
-
确保事先做一些背景研究,不要问那些通过网络搜索或官方文档可以找到答案的问题。
-
限定会议时间为 30 分钟。
-
确定问题的优先级。
-
为会议设定一个目标,例如,“尝试找到最高优先级问题的解决方案”;解决最大的问题也可能带来其他问题的修复。
-
-
橡皮鸭调试法 作为一种有效的帮助机制。另见 Rubber Duck Debugging。
-
使用 AI 帮助解决编码问题(例如 ChatGPT 或 GitHub Copilot)。你应该谨慎使用 AI 工具,并熟悉它们的优点和缺点。
-
有利的一面是,它们可以极大地加快研究/搜索速度,并帮助组织代码和复制粘贴。
-
另一方面,AI 工具没有推理能力,并且经常提供误导性或完全错误的答案。你不应该仅仅假设 AI 的答案是正确的,而应该用其他来源进行测试/验证。
-
注意:
- 在知道何时寻求帮助方面,肯定存在一个平衡。Web 开发者不应该经常打扰他们的同行/同事,但同样,当他们不知道自己在做什么时,也不应该独自硬撑。
- 考虑在合适的时候说“我不知道”的价值。
资源
1.4 协作与团队合作
作为 Web 行业的专业人士,你将不得不与他人一起参与项目,并在头脑风暴想法和建议时进行合作。并非每个人都天生具备团队合作能力,因此尽早开始纳入一些最佳实践并在你认为自己有所欠缺的领域付出努力是有益的。
建议
-
学习同理心、谦逊、冲突解决和合作。在所有互动中,保持礼貌和尊重,不要使用冒犯性语言。
-
在现实世界中与团队合作时,你将经常需要进行同行评审。练习如何建设性地、尊重地提供反馈。在接收反馈时,练习如何不将其视为针对个人,并专注于积极的方面以及你可以学到的东西。
-
参与结对编程,或在团队中合作完成评估,以体验与他人合作。
-
练习像真实软件项目一样运行项目,包括时间表、计划和职责。了解软件开发生命周期。掌握一些基本的项目规划技能和工具,以便能够估算和规划你的工作/项目。
-
作为课程的一部分,写博客记录你的工作、学习和遇到的障碍,分享你的代码仓库,让同行批评你的工作,并主动修复他人代码中的问题。
-
加入 Slack 频道、Discord 或类似的平台,向同行寻求帮助,分享资源,并讨论需要完成的工作。例如
-
查看 Frontend Developers Discord 服务器。
-
我们的学习伙伴 Scrimba 通过其 Discord 服务器提供 强大的社区和协作体验,旨在帮助其学生获得这些技能。
-
-
练习提问和回答问题。即使问题看似有些微不足道,在讨论或评审同行作品时,也要始终提出一两个问题。练习解释你在做什么,并提出正确的问题来找出你需要知道的内容至关重要。
-
互相帮助,而不是等待老师或高级开发者来帮助所有人。能力较弱的同行会更快获得帮助,能力较强的同行将成为导师,体验由此带来的满足感。
-
观察并向其他有经验的人学习如何参与讨论以及如何处理问题/调试。
-
加入一个开源项目来练习你学到的技能,与社区中的人们互动,并通过观察他人来学习(有关有用信息,请参见 如何为开源项目做出贡献——初学者指南)。
我们的学习伙伴 Scrimba 通过其 Discord 服务器提供强大的社区和协作体验,旨在帮助其学生获得这些技能。查看以下嵌入式内容以了解更多信息。
1.5 成功通过求职面试
技术职位面试可能要求很高,有些甚至有相当具体的要求。
建议
-
学习有效的求职策略。例如
-
参加社交活动和招聘会,与潜在雇主见面。
-
保留你遇到的人和申请的公司清单。
-
跟进你遇到的有希望的联系人。
-
-
创建作品集。
-
撰写完美的简历。
-
获得经验——构建真实的项目并为开源做出贡献。
-
建立你的在线形象。
-
使用 LinkedIn 等网站来帮助上述工作。
-
练习回答编码和设计面试问题。
-
建立一个轶事集,用于回答基于经验的面试问题。
-
了解招聘经理在候选人身上寻找的特质,并做好相应的准备
-
一个他们能够相处好的人。
-
积极的态度,尊重、同理心、建设性。
-
思想开放,能在多元化的团队中与不同观点的人很好地合作。
-
当决策不如己意时,能够保持优雅,为了更大的利益而保持一致。
-
善于沟通和建立关系。
-
坚韧、专注、善于解决问题。
-
拥有一个好的作品集。
-
-
保持耐心。即使是最好的候选人,在获得理想工作之前也会被拒绝多个职位申请。
资源
-
获得录用,Scrimba 课程伙伴
-
技术面试 101:完美通过技术面试的终极指南,learntocodewith.me (2022)
-
30 个技术面试问题及回答技巧,Coursera (2023)
1.6 工作流程与流程
技术项目的一个重要方面是初学者经常忽略的——项目的宏观概念。他们可能会学会一个单独的工具或语言,并理解自己需要做什么,但却不知道交付整个 Web 应用程序所需的其他所有代码库、工具、系统和工作角色。了解以下内容很有帮助
-
常见 Web 项目中的典型技术组合和应用程序架构。
-
技术项目的典型流程,包括在这些流程中使用不同工具的位置。
-
典型的工作角色,以及它们在这些流程中的参与度。
-
常见的工作管理风格,如敏捷和瀑布。
资源
-
什么是技术栈及其工作原理?,mongodb.com
-
网站开发团队结构:角色和流程,truemark.dev (2017)
-
瀑布 vs. 敏捷 vs. 看板 vs. Scrum:有什么区别?,Asana (2022)
1.7 相关背景信息
虽然对于理解课程中学到的技术主题并非必需,但一系列背景信息可以帮助开发者获得全面而灵活的视角。
建议
-
为了理解事物为何如此,研究相关的历史背景。例如
-
为什么 Web 的数据传输设计方式是这样的,尽管存在更快的机制?
-
为什么 Web 使用带有链接作为核心功能的文档模型,而如今它主要用于构建应用程序?
-
为什么 Web 标准会这样被创建,并以协作的方式进行,尽管这个过程不一定像它可能的那样有效率?
-
-
研究相关的通用编程概念,例如
-
对象的作用,以及它们在 JavaScript 等语言及其周边 API 的设计中起到的作用。
-
循环如何工作以及为什么需要它们。
-