2021年7种软件开发职位的技能需求
今年脱颖而出成为新的软件开发人员
从本质上讲,这些类型的文章对于希望跳入软件开发领域的人们来说,无疑是令人沮丧的,因为他们坚持认为您必须知道每种指定的技术才能成为相关人员。实际上,没有一个开发人员是独角兽,因此他们在上面列出的每个领域都胜任。
这些文章对于寻求初级开发人员职位的人而言,进一步产生误导。如果您看招聘广告,那么到2021年成为一名初级软件开发人员的技能要求比起初次尝试自行编程整个人工智能或网络安全系统的技能要求要普遍得多。
因此,我觉得有必要保持纪录。我搜索了招聘广告,因此您不必这样做。
在研究了数百个招聘广告之后,我整理了一份清单,列出了雇主在2021年为初级软件开发人员职位实际寻求的七种最需求的技能。
1.面向对象的程序设计语言
是Java,C#还是C 都没关系。很少找到不需要一些面向对象编程(OOP)语言知识的职位发布。
这也是设计使然。
OOP语言之所以有用,有几个原因。
首先,它们是模块化的。举例来说,这意味着当您看到给定对象发生问题时,您就知道该问题源于特定的类(这称为抽象,是OOP的基本支柱之一)。这在调试或向代码中添加新功能时会有所帮助。不仅如此,而且将代码封装到对象中可以确保每一项功能都可以执行,同时让代码的其他部分独自完成自己的工作。
其次,OOP语言的主要原则之一是它们倾向于继承的趋势。继承是扩展类功能以消除冗余代码的现象。换句话说,可以重复使用代码,而不必多次编写。例如,您可以创建汽车,飞机和火车的单独类别。对于每个类别,您都需要定义其范围,油耗和承载能力。但是,您可以将各个类(汽车,飞机和火车)转变为派生类,而不是为每个类单独进行编码。这些派生类将属于基本类(运输),该类将指示每个类的属性(范围,油耗,承载能力)。这样,可以重用部分代码。此外,可以更改派生类的各个属性,而无需重写或影响它们所属的基类。
最后,OOP语言具有多态性(有时称为覆盖或重载)。多态是对象采取多种形式的能力。它与继承有关,因为继承允许类从其他类继承特征。继承后,多态会使用继承的特征来执行不同的任务。换句话说,可以使用多态性以多种不同方式执行单个动作。
那么,您应该学习哪种OOP语言?雇主寻找的最受欢迎的是C#,Java和C 。您所学的哪个取决于您。一旦学习了一种语言的概念和用法,您只需对语法进行一些更改即可轻松选择另一种语言。您选择的语言可能取决于您所在位置在行业中流行的语言。
2.关系数据库-SQL
世界依靠数据运行,所有软件都触及某种数据。数据库使软件成为一个动态的,多方面的应用程序,可以执行许多任务,而不必保留功能很少的一维,一次性使用程序。因此,只有了解了如何使用数据库中的数据以及数据库本身,才有意义。
根据手头的任务,公司可能会选择使用关系数据库或非关系数据库。
关系数据库是结构化的表,其中包含使用特定架构的数据,该架构是在输入任何数据之前确定的。这些特定的数据结构特别适合交易数据(例如,如果您正在构建电子商务平台),并且是适用于结构良好的数据的软件的理想解决方案。行业中可能遇到的关系数据库的示例包括PostgreSQL,MySQL,MS SQL Server和SQLite。
非关系数据库以半结构化格式存储数据。数据存储在单独的JSON文件中,而不是严格的,相互关联的表。这样做有弊端,包括需要实现的处理代码数量增加。但是,这些类型的数据库便宜且难以维护。非关系数据库的示例包括MongoDB(可能是迄今为止最受欢迎的数据库),DynamoDB,Elasticsearch和Redis。
根据我的研究,超过一半的职位分析是寻找具有关系数据库工作经验的初级开发人员。根据个人经验,我总是建议您首先学习关系数据库,因为它们具有特殊的性质。一旦弄清了关系数据库,非关系数据库将是轻而易举的事,如果需要的话。
3. REST API
API已经改变了软件的开发方式,现在通常已成为许多公司日常开发过程的一部分。
API(应用程序编程接口)是公司打开其应用程序功能以利用第三方开发人员,业务合作伙伴和内部部门的数据来为日常流程创造便利和流程的方式。API已用于改善工作场所中的协作,创新业务解决方案,通过货币货币化以及为数据和服务器操作增加安全性。API的一些常见用法包括通用登录,第三方付款处理,Google地图和旅行预订比较。
虽然初级开发人员不需要了解API的实现方式(因为每个公司通常都是唯一的),但通常要了解为什么使用API以及如何使用API,这一点很重要。API是一组规则,用于定义计算机和应用程序之间如何通信。换句话说,它们是位于应用程序和网络服务器之间并在两层之间进行操作的中介或翻译器。
作为初级开发人员,您可能需要帮助高级开发人员来构建或实现API。
4.敏捷/ Scrum软件开发方法
敏捷和Scrum软件开发方法是开发软件的两种最流行的方法,大多数公司都订阅两种(有时两者)方法之一。
敏捷软件开发方法侧重于软件开发生命周期中的开发和测试的连续迭代。开发和测试是同时进行的,并且取决于所有相关方的稳定反馈。敏捷方法非常重视团队成员之间的日常面对面交流,并鼓励逐步进行简单的软件开发过程。
相反,Scrum软件开发方法侧重于在尽可能短的时间内生成可交付成果。当了解到需求将在项目的整个生命周期内发生变化并且通常在项目开始时甚至不为人所知时,此方法将非常有用。Scrum会议分为项目Sprint,其中每个“ Sprint”的重点是准备特定的交付物。在每次冲刺结束时,都会交付软件以供考虑和反馈。Scrum方法论更侧重于创建通过日常会议实现的自组织团队氛围。最后,Scrum方法对创新和实验性软件开发过程更加开放。
尽管运行方法的选择取决于每个公司(通常取决于每个部门或团队),但熟悉每个公司的工作方式并不是一个坏主意。
5.基于云的环境(AWS,Azure等)
如今,很少有公司没有在云上托管其系统的某些部分。
云计算已经彻底改变了计算服务,现在,它已成为开发人员使用众多云计算服务之一(AWS,Azure,IBM Cloud,Google Cloud)的主流。云计算为公司带来了很多好处,包括降低基础架构成本,加强保护数据的安全措施以及增强的可靠性,使灾难恢复成为一个简单且成本较低的过程。
作为开发人员,您可能会在创建云本机应用程序,测试和构建软件,存储和备份数据,分析数据集以及将软件交付给客户的过程中遇到并使用云计算服务。
6.前端技术(HTML,CSS,JavaScript等)
十分之九的招聘广告要求了解一些前端技术。具体来说,雇主正在寻找在HTML,CSS,原始JavaScript和现代JavaScript框架(包括Angular,React,Vue和Ember)方面有经验的应聘者。
无论您将搜索重点放在严格的前端还是后端软件开发职位上,只要一点点前端魔术都可以解决问题。开发历史上没有人说过后悔学习一点HTML,CSS或JavaScript。
这三种“语言”(由于HTML和CSS都不是编程语言,我想说的很容易)很容易学习,并且一些快速的教程足以使您获得处理所有小任务所需的经验。简而言之,最好是拥有技能而不需要技能,而不是在高级开发人员需要您将按钮的颜色从红色更改为蓝色时,将其高高地晾干而毫无头绪。
7. Linux
程序员和Linux像花生酱和果冻一样一起工作,这在软件开发公司的突出使用中得到了体现。
与Windows和iOS相比,Linux具有许多优势,这使其成为一个轻松的选择,包括它的开源,非常稳定(不易受恶意软件和病毒感染),可配置性强,对硬件的需求更少以及完全免费。
由于它在开发社区中很受欢迎,因此初级开发人员至少应该至少了解环境方面的知识,这样他们才可以开始工作。
最后的想法
对于初级软件开发人员来说,我遗漏的一项最容易获得的“技能”是大学认证。十分之九的雇主正在寻找具有学士学位的人。剩下的10%的时间,他们也接受副学士学位或大学证书。
不幸的是,您确实必须寻找愿意雇用自学成才的开发商的雇主。但是,如果您是这个人,这并不是灰心的理由。此外,这不是放弃只寻找受过教育的开发人员的职位的理由。
仅仅因为有人上过大学并不意味着他们肯定是有能力的开发人员。不仅如此,上面列出的所有技能都可以使用YouTube,freeCodeCamp,Codecademy和许多其他免费资源自学。因此,在尝试之前,不要卖空自己。
通过专注于公司的实际需求,您可以让自己在其他初级开发人员中脱颖而出。为雇主做好准备,雇主会问您,这也表明您已经完成了家庭作业,并准备好在雇用您时开始工作。通过使用这些技术填写简历,可以确保您随时准备迎接就业市场的各种需求。
(本文由闻数起舞翻译自Prayukti Jain的文章《7 In-Demand Skills for Software Development Positions in 2021》,转载请注明出处,原文链接:https://medium.com/better-programming/7-in-demand-skills-for-software-development-positions-in-2021-18f7672e4f3a)