从表面上看,软件行业看起来非常引人注目:许多国家对该行业中的职位需求旺盛没有失业,薪资优渥,同时总是有成长的空间,经常涉及出差,并且可以选择在办公室里甚至是在自己家里的沙发上工作,启动个人创业的条件要求也不高。 那么为什么不是每个人都致力于软件开发?
事实是,虽然这个领域看起来很有趣,但进入并不那么容易。在现实世界时,软件行业不仅很难进入,而且令人恐惧和不受欢迎。
找到第一份软件开发人员的工作也可能具有挑战性; 大多数寻找入门级工程师的公司要求他们要么具有一些最新框架和技术的经验,要么了解许多高级概念,例如设计模式、软件开发最佳实践和版本控制。 然后他们会提出一些模糊的要求,例如拥有出色的“人际交往能力”或了解其他 IT 相关领域的知识。
优质的学习资源中心cloudioe:关注我们,持久地阅读学习,投资您自己、提升您的能力和格局,改变您的生活!
公司对软件工程师技能的常见要求软件工程师的技能要求
我们根据互联网上的多个样本编制了以下初级软件开发人员职位技能要求列表:
- 相关领域的学士学位以及至少一年类似职位的经验
- 具有安全软件开发知识
- 具有与软件设计、开发、修改和部署相关的中级技能,包括面向对象编程的技 能
- 其他 IT 相关领域的知识
- 具有软件存储库技能证明
- 具有有效沟通和人际交往能力
- 有上进心,独立工作
- 具有解决问题能力
- C#、ASP.NET MVC、SQL Server、TypeScript 和 React.js 的中级技能
- 具有使用 Git 和 GitHub 的经验
看到这份名单,想进入这个行业的人怎能不感到害怕呢? 任何看到该职位发布的人都会认为他们至少需要两年以上的经验才能被HR认真对待。
但是如果你只是正在寻找第一份软件开发工作的新人,你怎样才能获得经验?
这些问题可能是任何想要开始职业生涯的新软件开发人员都会遇到的问题。 但问题是:这些问题很正常。 你并没有意识到自己适不适合成为一名软件开发人员——你只是在经历初级开发人员的经历。
从基础知识开始:作为一名软件开发人员,你到底需要什么? 互联网上有很多噪音,在谷歌上问这个问题可以找到很多不同的文章。 每个人都有自己的看法,大多数人倾向于关注功能技能——这些技能是你在考虑申请软件开发工作之前需要学习的。 根据资深软件开发人员的经验,它们不是最相关的技能,也不是最重要的技能。 如果有必要的话,你会通过其它的生活阅历来掌握这些经验。 优秀开发人员(即使是一生中从未工作过的开发人员)真正重要的品质不是技术性的。
成为一名成功的软件工程师所不需要的条件软件工程师的技能要求
1.成功的软件工程师并不一定需要计算机科学学士学位或相关学位
从本质上讲计算机科学学士学位或相关学位是要接受四年或更长时间的正规教育。而这种教育只是形式化了许多基本的编程概念。现在的情况完全不同了; 任何想要学习如何编码的人都可以利用世界上的知识。 这并不夸张; 有免费的在线资源,其中包含从零到成为一名优秀的编程人员所需的一切知识。 你也可以选择网站的付费课程,这些课程的费用比大学学位低很多,并且可以让您访问虚拟教室、问答环节与老师联系,并与遇到与您相同问题的其他学生联系。
这些资源中的任何一个都可以为您提供开始编码所需的实用知识,虽然许多人确实重视在简历中提及大学学位,但许多公司却不太关注这一点。 诚然,这在某些国家可能不那么真实,但软件工程师的职业确实是一个非常国际化的职业,因为他们可以为世界任何地方的公司工作。 当这种情况开始发生时,大学学位的价值就会随着时间的推移而开始减少。
2.成功的软件工程师并不一定需要了解软件开发的生命周期
一个典型的软件项目必须经历一个开发生命周期:
1).您首先需要进行需求分析,以准确了解您需要做什么。
2).然后,您继续规划您的项目,以了解何时需要做这些事情以及需要多少时间。
3).设计项目架构排在第三位。 一旦您知道“什么”和“何时”,您就必须开始思考“如何”,架构将为您提供蓝图。
4).然后才能开始编写代码。 这是大多数开发人员倾向于关注的步骤,但正如您所看到的,这不是您通常要做的第一件事。
5).接下来测试您的代码和产品。 在进行下一步之前,必须确定上一步是否产生了正确的输出。
6).部署产品是最后一步。 此时您将其提供给用户,以便他们可以开始测试它并向您提供反馈。
因为这是一个循环,所以你可以从第 6 步获取反馈并重新开始,但你明白了。
如果您以前从未参与过软件项目,则您无需应用其中的大部分概念,这完全没问题。 你不需要了解任何这些知识就能获得第一份工作。 是的,这些步骤将成为您任务的一部分,您每天都会应用这些知识。 但将其变成初级开发人员角色的入门级要求就像要求代理外科医生领导他们的第一次手术一样。 最终他们将能够做到这一点,并且他们可能已经读过相关内容,但你不希望他们在第一天就这样做。 对于作为开发人员的你来说也是如此。 不应该期望您在第一天就理解所有这些步骤的真正含义——无论如何您都不会负责执行这些步骤。 你会了解它,因为你将成为这个过程的一部分。
软件工程师的技能要求
3.成功的软件工程师并不一定需要数学、物理或类似的学位
很多大学在软件工程系的学生学习编码的同时教授他们微积分和代数。 这是一个错误吗? 从长远来看,没有,但它对你获得第一份开发人员的工作没有任何帮助。
数学、物理或其他科学不会帮助你理解编程。 其中一些要求您理解抽象概念(例如无穷大或数字 pi),当您需要为要编写的算法创建心理模型时,这可能是一个很好的实践。 然而,你不会在第一份编程地工作中解决困难的数学问题或实现困难的物理模拟,即使你碰巧发现自己陷入这样的难题,你也很有可能会使用别人的代码库。
那么,在跳槽到计算机科学领域或者初级程序开发人员角色之前,你应该去获得数学学位吗? 其实一点都不需要。 最终,您可能会发现编程和这些其他科学之间的共享概念(例如许多编程语言中的集合的概率),或者您可能会发现自己在代码中实现了其他领域的概念(例如在平台游戏上实现了重力的概念),但是在开始编码之前,都不需要这方面完整的学位。
注意初级数据科学家的角色可能要求您拥有数学或科学学位。 该要求不是为了理解如何编码,而是为了教会你如何对您要解决的问题进行建模。
4.成功的软件工程师并不一定需要进行技能认证
对自己的编程能力进行认证固然很有吸引力,因为它们具有“不像正规教育那么长但仍然有用”的氛围。 它们确实有其优点,但它们并不是软件开发人员获得工作的硬性要求。
在你的软件初级开发人员简历中列出你所通过的认证表明你关心你的学习和提高你的技能。 这确实是一件好事,但这不是一个要求。 您不会找到要求通过特定认证的初级开发人员的职位列表。 相反,他们将寻找有关一组技术的知识,而通过在线课程或者参加训练营更容易实现这一点。
我在这里想说的是,如果您必须在投资通过认证或者参加在线课程之间做出选择,请选择后者。 在开始缩小某个特定主题的知识范围之前,先接受更广泛的教育。