软件工程是一个广泛的字段,包含多个子特征。当然,通过如此多的不同域,根据您工作的特定区域,需要不同的技能组。
例如,如果您正在申请前端开发人员位置,则具有良好的UI / UX技能是一个很大的奖励,但后端角色也可能不是这种情况。
我经常观察到开发人员 - 特别是那些对该领域的新的人 - 倾向于关注他们的技术技能。数据结构,算法,设计模式,数据库维护。列表可以继续和开启。
尽管如此,当公司今天雇用软件工程师时,它们不仅仅是寻找技术技能。您可能已经遇到了一个只有OK编程Chops的人在技术领先于科技的同事。
通常,这是因为技术技能只是软件开发人员工作的一部分。软技能同样重要。
当然,代码的能力是开发人员必须拥有的核心特征之一,它肯定有很长的路要进一步推动你的职业。然而,当谈到达到下一级别或降落梦想工作时,你需要更多的技能。
无论您是刚刚开始的开发人员,您都希望从中级位置向上移动,或者您正在寻求理想候选人的面试官,这些是您应该优先考虑的三个特征。
通常,刚刚到达编程场景的开发人员开始获取多种编程语言,框架和闪亮的新工具。
鉴于互联网上可用的众多资源,这不是一个新的开发人员的错,他们想要掌握每一种新技术。为了公平,了解各种语言的语法和概念确实开放了更多的就业机会。
许多有抱负的程序员最终消费了所有的时间追逐解决方案,从谷歌,堆栈溢出,或其他地方都是它的。不幸的是,这创造了一堆不错的歌唱者,他们不是很大的问题。
不出所料,这些开发商缺乏分析技能和战略思维,当时遇到一个完全外国问题时成为一个障碍。这就是为什么通过教程巩固你的技能可能不是你的时间最好使用。
在他们的核心,大多数语言具有相同的潜在概念。它们中的每一个都具有伪英语语法,条件语句和其他构造。
因此,从一种语言切换到另一种语言不会采取大量的努力。此外,语言来临。解决问题是您需要的元技能,而不是在阿森纳中拥有一堆编程语言更重要。
对于初学者来说,在问题解决方案上变得更好的方式是在您有问题修复时不急于代码。首先解决纸上的问题。尝试将其分解为较小的问题。
值得注意的是,没有开发人员可以记住一切。即使是最高级的人才不时谷歌曲。所以,在堆栈溢出或其他教程中查找答案很好。但了解事情的真正工作,而不是仅仅复制粘贴的东西至关重要。
占用复杂问题和有效简化它们的能力是一个高估的技能。建立这项技能的一个确定的方法是通过致力于您自己的项目。
基于项目的方法教导您将问题分解为亚基。这有助于您更深入地了解发展的基础知识,同时提供培训您识别模式的额外好处。
这种模式识别能力教导您快速诊断问题,这意味着您知道哪些工作以及您将在您看一个新问题的内容。
学习编程语言是开发人员掌握词汇所代为作家的开发人员。这足够好,但你不应该花所有的时间记住字典。
您必须具有创新的创新来开始沟通。然而,超越某个点,重要的是表达你的想法而不是华丽的语言的艺术。这也是开发人员的情况 - 也是知道如何解决问题的人比仅仅知道一堆语言的人更多的价值。
这不是一个秘密,开发人员讨厌为自己的代码写作测试。他们总是与软件测试人员有一种爱恨的关系。
因此,测试是开发人员经常忽视的一个区域。很多这与开发人员朝着乐观而不是现实的事实有关。例如,与任何iOS开发人员交谈,我怀疑您会听到他们提到XCTest框架。如果他们根本没有使用它,不要感到惊讶。
乐观意味着大量开发人员对他们的代码有一种情感的联系,并认为它是无窃贼的。那么,那么,写作测试的人不是写了代码的人。尽管如此,测试是软件开发周期的一个重要方面。
但是,开发人员如何说服自己写测试?对于一个,测试是证明您的代码工作的唯一方法。其次,它将您节省您从测试旧功能,并确保代码不会破坏任何内容。最后,写作测试的另一个重要益处是,他们帮助开发人员在其代码中涵盖边缘案例,从而使其变得稳健。
拥有良好的测试技能使开发商脱颖而出。锐化您的测试技能也有助于您批判性地思考,捕获错误,并提高您的调试技巧。事实上,这是你工具箱作为开发人员的另一个重要技能。
如果测试就像是代码库的警察一样,调试是一种侦探。
调试是一种需要练习掌握的方法方法。您可以通过没有先入为主的概念或假设来开始磨练这项技能。假设是编码的盲点。我已经看到了多数情境,开发人员(包括我)在调试时浪费了几小时,因为它们假设错误的代码是正确的。为了避免这种吹风机,在证明这是正确的之前质疑一切。
除了挤压错误,调试还可以提高您可以通过不熟悉的码库读取和导航的速度。磨损您的调试技巧将使您成为一个更好的开发商。
除了软件开发人员外,面试官还经常忽略调试。他们可以评估这一领域的候选人的技能是通过提供假设的情景。更好,他们可以用一堆错误修改他们的编码测试,并了解候选人如何处理事物。
软件开发人员将花费更多时间调试软件的机会,而不是编写新功能。
调试技能不佳的人可以吃大量时间并在释放周期中创造瓶颈。所以,我不能强调擅长调试和寻找具有这些技能的开发人员的重要意义。
当您作为开发人员工作时,有很大的机会,您将在一个与项目经理和设计师的团队中。您甚至可能进入某些配对编程。这使得沟通成为开发人员的高度相关和低估的技能。
我已经看到这么多的软件工程师专注于他们的技术技能,同时完全忽略了我们每天沟通的自然语言。
能够口头和书面形式沟通至关重要。提供演示,演示和运行Scrums所有都需要出色的沟通技巧。
这种能力不仅限于解释您对同行的观点。了解如何放心地将其他人放置在您身边,处理建设性的批评,解决争论而不获得侵略性,积极的听力技巧是作为一个好团队球员的关键部分。
您也可能面临与缺乏高度详细技术敏锐的同事合作的情况。能够以清晰的事项与非技术人士交谈。
解释你的工作的能力,使拉德森能够理解它将让你更加多样化,最终对贵公司更有价值。
当您在工作市场上时,良好的沟通技巧也会有所帮助。面试官经常将Taciturn候选人视为红旗。
他们可能会将其视为受访者无法表达他们的想法。所以,总是肯定会谈谈并提出问题 - 特别是当你遇到一个问题时。
写作是开发人员经常忽视的另一个有价值的技能。良好的文件,良好的电子邮件投资,以及清晰的项目建议都取决于出色的写作技巧。
软件开发人员还倾向于远程工作,这使得书面沟通非常重要,因为这就是您与其他团队成员互动的方式。
良好的写作技巧也提高了您的编码能力。具有有意义的变量和函数名称和有用的评论,将上下文赋予封闭的代码有很长的路要确保您的代码库不是痛苦的乱。
好的代码并不总是最聪明和最有效的。 相反,好的代码简单,清晰,易于理解。 最终,您的同事不会通过您的代码库判断您。 相反,你与他们沟通的方式将使令人愉快的印象。 毕竟,任何机器人都可以编写一段代码。 这是让你分开的软技能。 谈到软件工程师时,编写代码是甚至考虑的最重要的技能。 但是,软弱技能受到高估。 解决问题,批判性思维,沟通和合作都在今天的编程工作中发挥着巨大作用。 它看起来很奇怪,但致力于软化技能也有助于提高您的软件工程技能,因为您更加善解,努力为实际人类编写代码。