Skip to content

Skills Required for Software Engineering 软件工程师所需技能 🛠️💡

学习目标 🎯

观看本视频后,您将能够:

  • 区分硬技能软技能

  • 描述软件工程师所需的硬技能;

  • 描述软件工程师所需的软技能。

image 53.png


硬技能 vs 软技能 🤔

1. 硬技能(Hard Skills)

硬技能是执行特定角色所需的实践技能,对于软件工程师来说,这些技能包括设计、构建、维护和修复软件解决方案的技术能力。

image 54.png

  • 硬技能是可以学习的,在学校、大学或通过在线课程、文凭或证书中获得,或者通过多年的行业经验积累获得。

  • 硬技能是可量化的,因此可以衡量一个人是否能够展现出特定技能,并进行认证。

image 55.png

常见的软件工程硬技能包括:

技能类别具体技能
编程语言Java、Python、C#、Ruby等
版本控制Git、SVN等
云计算AWS、Google Cloud、Microsoft Azure等
测试与调试单元测试、功能测试、性能测试
监控与故障排除使用监控工具追踪系统性能,快速定位并修复问题
敏捷开发Scrum、Kanban等敏捷方法论
数据库架构SQL、NoSQL、数据库设计与优化

image 56.png

2. 软技能(Soft Skills)

软技能则是不易量化的个人特质和人际交往能力。它们是你个性的一部分,因而比硬技能更难定义、量化或认证。

由于软技能不是特定于某个业务的,它们可以跨角色、跨行业转移。例如,良好的沟通技巧、团队合作能力和问题解决能力等,都是非常受欢迎的软技能。

image 57.png

任何职位的工作要求通常是硬技能与软技能的结合

image 58.png

软件工程师的硬技能 🛠️

让我们深入了解一些与软件工程师相关的硬技能。

1. 软件分析与设计

  • 软件工程师必须具备分析用户需求的能力,

  • 并设计出能够有效满足这些需求的解决方案。

    image 59.png

2. 计算机编程与编码

计算机编程和编码是软件开发中最基本的技能。

  • 有些工作岗位要求使用特定的编程语言和工具集;

  • 但有时,雇主也会欢迎你有其他语言的经验,并期望你能够快速学习并适应他们的编程语言。

    image 60.png

  • 根据Coding Dojo网站的统计,当前最需求的编程语言包括:

    • Java、Python、C#、Ruby
  • 了解各种框架面向对象的设计原则也是软件工程师的关键技能。

3. 测试技能

  • 虽然你希望创建无瑕疵的解决方案,但编写的代码可能无法完全按照预期工作。
    你需要测试技能来验证你的代码是否符合功能需求,并且易于使用。

  • 当你的代码出现问题时,调试技能就显得尤为重要。你需要查明问题的根源,并修复代码。

    image 61.png

5. 部署技能

当软件解决方案完成时,必须将其分发给用户。你需要具备部署技能,这可能包括:

  • Shell 脚本编写

  • 容器化

  • **持续集成与持续交付(CI/CD)**工具

  • 监控与故障排除技能:在软件部署后,你需要监控解决方案的性能,并具备故障排除的能力,及时解决出现的问题。

    image 62.png


软件工程师的软技能 🧠

接下来,我们来看看软件工程师需要的软技能。

1. 团队合作

团队合作是软件工程师的一项核心软技能。

  • 软件工程师通常会在不同的团队中工作,这些团队有时根据项目而划分,有时则是根据个人角色而组建的。

  • 在敏捷开发(Agile)中,你可能会与其他开发人员组成小型团队(如:Squads),并采用结对编程(Pair Programming)模式共同工作。

    image 63.png

团队合作能让你发挥个人优势,同时也提供了学习新知识和技能的机会。

2. 沟通能力

作为软件工程师,你需要与项目中不同的利益相关者进行沟通,包括:

  • 技术同事

  • 非技术人员

例如,你可能需要:

  • 向同行请求支持和建议

  • 向经理寻求指导和方向

  • 向客户确认他们的需求

  • 向用户询问他们希望如何与解决方案互动

    image 64.png

3. 时间管理

  • 软件开发通常是时间紧迫的项目,因此,时间管理是至关重要的。你需要合理安排自己的时间,避免延误其他团队成员的工作进度。

  • 随着越来越多的团队在不同的时区工作,以前看似微不足道的本地延迟,可能会为位于世界其他地方的同事造成整整一天的工作丧失。

    image 65.png

4. 问题解决能力

软件工程师需要拥有强大的问题解决能力,在以下各个阶段都有应用:

  • 设计阶段:制定合适的解决方案。

  • 开发阶段:编写执行任务所需的代码。

  • 测试与调试阶段:发现并修复任何程序错误。

  • 软件生命周期:解决可能出现的各种问题。

    image 66.png

5. 适应能力

随着项目的变化,你需要具备适应能力,以应对需求的变化。举例来说,

  • 客户要求更改或新增某些功能;

  • 经理要求你转移到其他领域以赶上紧迫的项目期限;

  • 用户要求采取其他方式完成特定任务。

    image 67.png

6. 接受反馈

最后,作为软件工程师,你需要愿意接受对工作成果的反馈。

  • 大多数软件团队会使用同行评审系统,互相审查代码,以确保符合公司标准并提升代码质量。

  • 初级职位中,你可能会有一位导师,提供反馈并指出你可以改进的地方。

  • 你的利益相关者也会在软件发布前和最终版本时提供反馈。

    image 68.png

接受这些反馈并开放心态地听取,将帮助你不断提升,确保你的解决方案变得更好。


总结 📌

在本视频中,你学到了:

  • 软件工程师需要同时具备 硬技能软技能

  • 硬技能 是可量化的学习技能,例如编程、测试和故障排除。

  • 软技能 则是个人特质和人际交往能力,如沟通能力和问题解决能力。

成为一名优秀的软件工程师,不仅仅依赖于强大的技术能力,也需要良好的团队合作、沟通、时间管理等软技能。

image 69.png