软件工程师必须具备的技术技能
软件工程是目前市场上最热门的职业之一。软件工程的一大优势在于,即使没有正式学位,你也可以成为一名成功的软件工程师。在软件工程领域,技能才是最重要的。
一名优秀的软件工程师需要具备多种技能。但技术技能无疑是最重要的。这些技能能够帮助你在工作中完成任务。
在这篇博客中,我将讨论软件工程师必须具备的技术技能。
免责声明:如果你是刚入行的求职者,本文不适合您。你不需要学习本文提到的所有内容就能找到工作。你需要阅读《破解编程面试》这本书。你可以在Hackerrank、Leetcode、Geeks for Geeks等平台上练习。
数据结构(适合每一位软件工程师)
数据结构是软件工程师最重要的学科之一。数据结构是一些用于存储数据的特定格式。每种数据结构在某些情况下效率高,而在其他情况下效率低。因此,作为一名软件工程师,你必须具备选择正确数据结构的技能。
以下数据结构是每个软件工程师必备的:
- 大批
- 链表
- 树木
- 特里树
- 堆
- 队列
- 地图
- 图形
- 哈希表
如果你想了解有关数据结构的更多信息,可以访问Geeks for Geeks。
算法(适合每一位软件工程师)
软件工程师的主要工作是解决问题。算法是解决问题的分步说明。因此,算法是每个软件工程师必备的技能。良好的算法知识有助于解决问题。
以下是一些重要且基本的算法:
- BigO 符号
- 深度优先搜索
- 广度优先搜索
- Dijkstra算法
- 搜索
- 排序
- 分而治之
- 字符串匹配
- 图案
- 贪婪的
您可以在Khan Academy、Geeks for Geeks和许多其他地方学习算法。
操作系统(适用于 DevOps 工程师)
每个程序都在操作系统(OS)上运行。因此,了解底层操作系统将有助于软件工程师编写更高效、更好的代码。
以下是软件工程师应该了解的一些基本概念:
- 过程
- 内存管理
- 线程和并发
- 调度
- I/O管理
- 进程间通信
- 虚拟化
学习这些基础知识后,了解分布式系统和云。
网络和通信(针对 DevOps 工程师)
大多数软件工程师从事 Web 技术工作。要想在 Web 技术方面表现出色,你必须对网络和通信有深入的了解。尤其如果你对 DevOps 感兴趣,那么网络和数据通信就至关重要。
软件工程师必须了解以下主题:
- 知识产权
- 私人/公共网络
- 路由器
- 开关
- 局域网/广域网
-
OSI 模型
-
协议
-
P2P通信
-
网状、环形、星状等。
如果您想成为一名 DevOps 工程师,这可以作为您的起点。
编程语言(适合每一位软件工程师)
作为一名优秀的软件工程师,你需要深入学习至少一门编程语言。此外,我建议软件工程师经常尝试新的编程语言。这有助于我们了解该语言的优点,也有助于我们快速学习新技术和语言。
深入学习以下至少一种语言:
- 碳
- C++
- Java
- Python
- JavaScript
- C#
- PHP
还要尝试学习至少一种脚本语言,如 JavaScript、PHP、Python 等。
OOP(适合每一位软件工程师)
面向对象编程是软件行业中最常用的范例之一。软件工程师应该了解以下概念:
- 封装
- 多态性
- 遗产
- 抽象
- 协会
- 聚合
- 作品
数据库(针对后端工程师)
软件工程师每天都要处理数据。结构化数据存储在数据库中。因此,你应该对数据库有深入的了解。
您至少应该学习基本的 CRUD 操作、连接、分组等。
学习以下至少一个数据库:
- PostgreSQL
- MySQL
- 玛丽亚·DB
- Oracle 数据库
- MS SQL 服务器
- MongoDB
- 卡桑德拉
- Neo4j
Git(适用于每个软件工程师)
版本控制在软件工程中非常重要。它有助于我们与他人协作,也使我们能够轻松地回滚到任何先前版本。
Git 是目前最流行的版本控制系统。你至少应该学习 Git 的基础知识。
了解 Git 的工作原理。此外,学习一些基本命令,例如添加、提交、推送、拉取、获取、合并等。
IDE 和编辑器(适用于每个软件工程师)
IDE 代表集成开发环境。IDE 会在编码时提供建议,甚至在编译代码之前检查错误,并执行许多其他操作。像 Intellij Idea、Eclipse、Visual Studio、PyCharm 等 IDE 功能强大,可以节省开发人员的大量时间和精力。编辑器则更加简洁。但是,像 VS Code、Sublime Text、Atom 这样的编辑器已经改变了游戏规则。如今,它们的功能远不止编辑。您必须了解您的 IDE 和编辑器,才能释放这些潜力,从而提高您的工作效率。
心态(适用于每一位软件工程师)
这部分并非纯技术性的,但我还是想补充一下。要掌握这些技术技能,你必须做好准备。如果觉得复杂,不要放弃,继续尝试。你不需要是天才才能掌握这些技能,你只需要努力。我见过一些学生,他们认为自己在编程竞赛中表现不佳。但是,在大学里经过严格的训练后,那些没有放弃训练的人,在竞技编程中表现出色。我的一些同事曾以为自己跟不上所有这些新技术的步伐。但是,那些努力工作的人,在这个每两周就会推出一项新技术的行业中脱颖而出。
结论
在本文中,我讨论了软件工程师必须具备的基本技能。这些只是入门。对于你的具体任务,你还需要学习本文以外的主题。
注意:如果您认为我遗漏了某些内容,或者您对本文有任何意见,请在下面发表评论。
本文最初发表于Wget Blog
鏂囩珷鏉ユ簮锛�https://dev.to/sabir001/technical-skills-every-software-engineer-must-have-4kd6