1. 软技能
最佳实践
入门模块
本模块提供了对软技能的建议,学生在学习 Web 开发的同时可以努力提高这些技能,这些技能也是进入行业时应具备的良好特质。它们将极大地帮助培养正确的学习、研究和协作态度,并增加获得聘用的机会。
1.1 持之以恒的学习心态
学生应该养成持续学习的心态。Web 正在不断发展,技术和趋势也在不断变化,他们需要不断更新自己的知识才能跟上步伐。
- 养成定期阅读技术新闻、博客和浏览器发行说明的习惯。
- 定期参与阅读任务或小型研究项目。
- 留出专门的学习时间来学习新技能。
- 保持好奇心。
推荐的新闻和信息网站
1.2 乐于接受失败
一个非常普遍的问题是,学生和新开发人员由于害怕失败而回避实验和冒险(例如,在开始新项目或探索新想法时)。花一些时间了解从错误中获得的价值,以及可以在未来类似情况下学习和应用的经验教训。
以下是一些提高这项技能的技巧
- 定义一个安全的空间/同伴群体,人们可以在其中自由地提问,并且不会受到严厉的失败评判。
- 关注您当地的社区,并尝试寻找与志同道合的人组成的聚会小组,他们可以为您提供帮助和建议,或者正在面临与您相同的问题,并可以为您提供精神支持或与您一起进行实验。
- (对于教育工作者)设置评估的评分标准,以便即使您没有获得正确的结果,只要过程有良好的记录,您仍然可以获得合理的得分。为创新奖励额外分数。
- 在项目进行到中途时,与同伴和导师一起进行展示或一对一会议,以获取反馈和洞察您出错的地方,并获得有关如何重回正轨的建议。
- 进行回顾会议,分析项目,查看哪些方面做得不好,并讨论如何在下一次改进。
1.3 有效的研究
Web 开发人员花费大量时间搜索工作中遇到的问题的解决方案。学生应该学习有效的查找答案的策略,以及何时使用哪种方法(例如,不要每次遇到障碍时都直接去打扰高级开发人员)。
这些策略包括
- 查阅文档。
- 当您在使用某个工具/产品时遇到困难时,首先查阅官方文档。令人惊讶的是,有多少人没有想到这样做;官方文档通常面向初学者,因此有经验的人可能不会认为它们适合他们。
- 了解不同的文档类型——例如,教程、参考和其他类型——并了解每种类型在何时有用。
- 有效地使用搜索引擎(请参阅如何像专业人士一样使用搜索:Google 及其他搜索引擎的 10 个技巧和窍门)。
- 选择有效的资讯来源
- 选择推荐的网站,例如Stack Overflow 和MDN。
- 检查文章的日期,并考虑讨论的技术是否已过时。例如,关于 CSS 布局的文章是否讨论了网格和弹性盒等现代方法,或者它是否仍然展示了浮动等过时的技术?它是否仍然讨论了针对 Internet Explorer 或 Netscape 4 等旧版浏览器的 hack?
- 有效地使用社交媒体
- 建立可以提供帮助的人员网络。
- 加入社区小组,在其中您可以寻找答案。例如
- MDN Web 文档社区 的 Discord 服务器
- Scrimba 课程合作伙伴
- freeCodeCamp
- CodeNewbie
- Dev.to
- 学会给予和接受;乐于助人的 Web 开发人员更有可能建立牢固的关系并持续获得帮助。
- 当您找到有用的答案时,请写下来。例如,写一篇博客文章或在社交网络上分享它。撰写过程不仅会让您更清楚地理解概念,而且还会从社区获得验证和/或反馈。它还可以帮助您开始在行业中树立自己的名声。
- 有效利用有经验的联系人时间
- “有经验的联系人”是指老师、导师或高级开发人员。
- 询问他们更喜欢哪种沟通方式。
- 事先仔细考虑要问他们的问题,考虑到他们的时间有限且宝贵。
- 务必事先对主题进行一些背景调查,不要问可以通过搜索网络或官方文档找到答案的问题。
- 将会议时间限制在 30 分钟。
- 优先处理您的问题。
- 为会议设定目标,例如,“尝试找到最高优先级问题的解决方案”;解决最大问题也可能导致其他问题的解决。
- 橡皮鸭调试 作为一种有效的帮助机制。另请参阅橡皮鸭调试。
- 使用 AI 帮助解决编码问题(例如ChatGPT 或GitHub Copilot)。您应该谨慎使用 AI 工具,并熟悉它们的优缺点
- 从好的方面来说,它们可以极大地加快研究/搜索速度,并帮助构建代码和副本。
- 另一方面,AI 工具没有推理能力,并且经常提供误导性或完全错误的答案。您不应该仅仅假设 AI 答案是正确的,而应该使用其他来源对其进行测试/验证。
注意:
- 在何时寻求帮助方面,肯定需要把握平衡。Web 开发人员不应该不断地打扰他们的同伴/同事,但同样地,当他们不懂的时候,也不应该装作知道并在那里坚持。
- 考虑在适当的时候说“我不知道”的价值。
资源
1.4 协作与团队合作
作为 Web 行业的专业人士,您将不得不与其他人合作完成项目,并在集思广益想法和提案时进行合作。并非每个人天生就具备团队合作的能力,因此尽早融入一些最佳实践并努力改进您认为不足的领域将大有裨益。
建议
- 了解同理心、谦逊、冲突解决和合作。在所有互动中,保持礼貌和尊重,不要使用冒犯性语言。
- 在现实世界中进行团队合作时,您经常会被期望进行同行评审。练习如何建设性和尊重地提供反馈。在接受反馈时,练习不要将其个人化,并专注于积极方面以及您可以从中学习什么。
- 参与结对编程,或在评估中以团队形式工作以体验与他人合作。
- 练习像真正的软件项目一样运行项目,包括时间表、计划和职责。了解软件开发生命周期。掌握一些基本的项目计划技能和工具,以便能够估计和计划您的工作/项目。
- 作为课程的一部分,撰写关于您的工作、学习和障碍的博客文章,分享您的代码库,让同伴批评您的工作,并提供更新以修复其他人工作中的问题。
- 加入 Slack 频道、Discord 或类似的空间,向同伴寻求帮助,分享资源,并讨论待完成的工作。例如
- 查看前端开发人员 的 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 的设计方面所带来的优势。
- 循环是如何工作的以及为什么需要它们。