软件工程师的技能要求
5.成功的软件工程师并不一定需要适应在快节奏的环境中工作
您可以在许多职位列表和基本软件开发技能集中找到此要求。 但“快节奏”在这里到底意味着什么? 它几乎可以意味着任何事情,但此处假设这意味着你必须对在一个变化很大的行业工作感兴趣,即技术、工作方法、项目重点,甚至项目本身都发生了变化。
这听起来可能很可怕,尤其是对于那些还没有工作的人来说。 但可以确认的是你可能是一名软件开发人员,但仍然讨厌“快节奏”的环境。 并不是每个人都喜欢改变技术,甚至改变项目。 你也不必这样做。
诚然,初创公司通常都是这样工作的,因为他们必须这样做。 他们通常需要快速成长并适应变化。 承包商也是这样工作的。 有些公司会雇佣你在项目期间成为某人团队的一员,完成后,你就会转向下一个客户。 如果您发现这些场景很有趣,请继续申请。 您很可能会喜欢在那里的工作。
但还有其他公司——那些多年来一直致力于其产品的公司——往往拥有更稳定的环境。 事实上,最好的例子就是银行。 他们拥有来自众多客户的大量数据,因此对他们的技术堆栈进行更改非常困难。请记住,仅仅因为我们行业的某个部分“快节奏”并不意味着您需要喜欢这种工作氛围或者正在寻找这种氛围。
6.成功的软件工程师并不一定需要经验
向软件初级开发人员寻求经验不仅违反直觉,而且简直是愚蠢的。当你看到一份招聘具有不同技术经验的初级开发人员的职位列表时的感觉: 您正在阅读职位要求清单,试图找到一份工作,以便获得经验。 这是先有蛋还是先有鸡的问题。
此处的建议是你可以忽略职位列表中的这一部分。 毕竟这没有任何意义。 如果您对其他一些要求感到满意或者您觉得可以快速掌握它们,那么请勇敢申请该职位。如果您正在申请这份工作并且担心经验部分,您可以展示您所拥有的经验类型:
- 如果您已经完成了某种在线课程的学习,您可以在简历中列出。
- 如果您在某个地方(在 GitHub 或其他地方)发布了一个或多个个人项目,您肯定会想在简历中列出它。
- 如果您曾作为志愿者参与过与 IT 相关的工作,请在简历中列出。
软件工程师的技能要求
1.耐心
没有什么比花三个小时调试一段代码,只是为了找出问题是中间某个地方缺少逗号更能说明“我是一名软件开发人员”了。 你会经历很多次这样的事情,但这并不表示你“资历浅”或缺乏经验。 即使在软件开发经历过这么多年的今天,许多资深软件工程师还是会时不时地经历同样的过程。
理解别人的代码需要时间和精力; 研究如何解决问题需要时间和精力; 编写代码并使其运行需要时间和精力。 对于开发人员来说,耐心不是一种美德,而是一种必须具备的品质。 从互联网上复制和粘贴代码只能成功一半。 其余的需要由您来完成,并且涉及大量的尝试和纠正错误。
2.恒心
与耐心相一致的是恒心——你必须明白软件开发这不是一个容易的职业。设定正确的期望是避免旅途中发生不好的事情时灰心丧气的关键。
事实上,软件开发职业将充满障碍,一旦解决一个障碍,问题有可能就会变成十个。 你会遇到需要几个月才能解决的错误,而每一种情况都会成为你放弃的理由。许多软件工程师都会时不时地想退出编程。,搬到偏僻的地方,远离科技,在沙漠里种植西红柿的想法吸引了这个行业的许多开发者。 这是软件开发行业出现问题的迹象吗? 虽然不是,但这证明软件的职业有时会令人沮丧。
这就是为什么恒心是开发人员必须具备的技能,并且可以随着时间的推移而增强。 在你面临挑战的情况之前,很难知道你是否有足够的决心,但如果你已经是一个有决心的人——一个知道第一次尝试就不会放弃的人——你会做得很好,因为 一名开发商。
3.永恒的学生心态
对每个新软件开发人员提出的一项硬性要求是,他们应该终生学习,或者至少对学习的想法持开放态度。 虽然您确实不必喜欢快节奏的工作环境,但软件行业始终在变化。 有时它前进,有时它倒退,如果你不密切关注这些变化,你就会被抛弃。你应该接受这样一个想法:你现在使用的工具和你现在知道的事情并不总是常态。 如果你不接受这一点,你会发现自己在两年内无法在职业生涯中前进。
科技推动科技前进; 就是这么简单。 您今天使用的工具将与明天使用的工具不同。 新技术的发展将开辟新的研究领域、新的数据处理方式以及与用户交互的新方式,当这种情况发生时,开发工具将必须适应。 如果你不适应它们,你就会被抛弃。
软件工程师的技能要求
4.接受批评并从中学习
编程不是一个单独的职业。 即使您正在考虑成为自由职业者,您也必须以一种或另一种方式与其他开发人员互动。 这种互动的一部分是通过反馈发生的。
例如,代码审查是软件开发中非常常见的做法。 它通过让一组开发人员审查其他人编写的代码来确保代码质量。 如果您从未经历过,这可能听起来很奇怪,但如果双方正确执行,这对双方来说都是一次成长的经历:
在审查端,阅读代码的开发人员团队需要了解他们的工作是通过发现逻辑问题、缺失遗漏甚至一些错误来改进代码的。
在接收端,您需要了解他们给您的反馈不是针对个人的。 为这种审查展示你的代码感觉就像一场噩梦,你意识到你已经在课堂上,赤身裸体,在所有人面前,但为时已晚。 但请相信,代码审查人将他们多年的经验供您使用。 接受他们的反馈,确保你理解了他们为什么给出反馈,你会学到很多东西。
在其他情况下,反馈也会发挥作用。 有时您会期待它,例如性能评估,而有时则不会,例如当您的开源项目报告问题时。 如果你不愿意从中学习,那么要在负面反馈中幸存下来,尤其是在意料之外负面反馈的情况下,可能会很困难。
负面反馈中总蕴含着智慧; 你只需要忽略它周围的负面涂层,直接切入核心信息和从中吸取的教训。 您应该将其余的视为噪音。
5.懂得如何沟通
这是一个困难的问题,因为开发人员(即使是经验丰富的开发人员)中一个非常普遍的问题是他们不知道如何与人进行良好的沟通。 有时,我们过于专注于学习如何为机器编写逻辑代码,以至于我们的软技能容易消失。 机器不需要我们写出雄辩的句子,它们并不真正关心同义词或隐喻和比喻演讲的使用。 他们需要清晰、不容置疑的逻辑。 然而,作为开发人员,您还需要与人类合作,与机器不同,人类更喜欢所有这些带有情绪的表达方式。
当您需要向同事寻求帮助并解释您遇到的问题时,或者当您必须解决别人的问题时,您需要从“机器可理解的语法”切换到“人类可理解的表述”设置 。 这就是为什么在申请第一份工作之前具备沟通技巧会让你比其他处于你这种情况的人更有优势。 当你的面试官发现你能够有效地沟通时,你就已经成功了一半。
如何培养这项技能? 一种方法是通过写作,尤其是学习如何更加雄辩地写作。 你可以说你开始寻找人类友好的方式来解释概念,知道如何与他人进行良好的沟通是一项重要的技能。
举例:一个开发面向健康服务应用的初创公司对软件工程师的技能要求一个开发面向健康服务应用的初创公司对软件工程师的技能要求
该公司的软件开发团队的资格开发小组的人物是构建一个框架,用于根据身份、访问和风险控制来评估客户在APP应用程序上执行操作的资格。 其目标是提供一种自助方式来配置自定义资格标准,并轻松集成来检查相应的标准。 作为资格小嘴的服务器工程师,您的贡献将影响公司的系统决定是否允许数百万客户访问他们所需的健康服务的质量,并减少App扩展到新市场的开销。 作为平台的所有者,与其他开发团队的协作并解决歧义至关重要。
作为该公司健康资格小组的高级软件工程师,您将:
- 设计、构建和支持用于管理App 资格的核心系统
- 帮助定义和实施扩展路线图
- 构建和设计一个可扩展、安全且优雅的资格平台
- 大规模创造性地解决具有挑战性的技术问题
- 良好的好奇心并喜欢为复杂问题构建创造性的解决方案
- 在需要数据一致性和可用性的系统上工作
- 对之前的项目采取了技术主动行动
- 具有在跨职能团队中协作工作的经验
- 计算机科学学士学位或同等经验
该初创公司所使用和教授的技术:
- Java、Kotlin、Armeria
- HTTP、JSON、gRPC 和协议缓冲区
- 开放策略代理/Rego
- MySQL、DynamoDB
- 亚马逊网络服务
- 事件驱动架构
该初创企业是一个成长型企业,公司的成长确实帮助人们实现了许多他们认为在其他地方无法实现的职业目标,或者至少在未来 10 年内无法实现,因为对于大多数人来说,成长和发展是一个渐进的过程!该公司正在寻找愿意犯错误、愿意学习、愿意教导他人的人。
《成功的软件工程师的技能》的内容简介