很多人对于软件工程师这一职位,有很深的误解。
但是,想做一名成功的软件工程师,却不能只停留在会写代码这么简单,除了掌握扎实的coding能力,他们还必须要具备: Soft Skills 可我在工作中,还是会遇见很多年轻工程师,不重视也不知道如何提升自己的Soft Skills。 因此,这篇文章将从以下几个方面,好好为你解读: Soft Skills到底指的是什么? 为什么软件工程师必须掌握Soft Skills? 软件工程师必学Soft Skills有哪些? 01 Soft Skills是什么? 谈Soft Skills之前,我们首先要聊聊Hard Skills。 Hard Skills = 技术技能。 举个例子,对于程序员来说,编写代码,就是你们必须掌握的Hard Skill之一。 Soft Skills = 非技术技能。 指的是沟通能力、倾听能力、说服能力、自我激励的能力、影响力、团队建设的能力等等一系列与社会、社交领域相关的技能。 02 我懂技术就行了,学什么Soft Skills 这样的想法,当然是错误的。 首先,你得明白一点: 公司雇佣你,是为了让你solve problems (解决问题),而coding,只是你解决问题的一个手段。 如果一个程序员徒有专业的技术水平,而缺乏必备的Soft Skills,那么,在员工评估时,TA也会被认为是:poor professional(业务能力差)。
随着程序员这个职业的火热和兴起,越来越多的人开始加入这个职业,竞争也越来越激烈。 因此,作为自己竞争力的一部分,Soft Skills将变得越来越重要。 当然,你必须要有solid的coding功底和硬实力,才能帮你拿到这份工作。 但之后的职业发展生涯中,Soft Skills的培养,不可忽视。
03软件工程师必学的Soft Skills有哪些?
Communication 沟通能力 这是最重要的一项Soft Skill。 我知道,很多软件工程师,喜欢把自己“包装”成一匹独狼。 他们并不介意在自己的世界里埋头苦“码“。 但是,对于程序员来说,代码只是工具,而不是事业。 而产品或服务,才是你应该关心的重点。 在解决产品/服务问题的过程中,你必然会涉及到与人交流、沟通的问题。 首先,你得学会如何表达自己想要传达的;其次,你还得学会如何轻松地与你的team member沟通和交流,兼顾好他们的感受和意见。 在老板眼里,会沟通的程序员,意味着: 1. 他们对自己的工作上心,关心自己在做什么。 2. 他们善于团队合作,是推动工作前进的极好润滑剂。
Adaptability 对新事物的适应性 Adaptability指的就是一个程序员对新事物的接受程度和适应程度。 科技行业日新月异,在你工作过程中,你可能会遇到新的语言、新的产品、新的framework,甚至新的team member.... 因此,你必须要保持一颗好奇心、一个开放的心态和学习的习惯。 这些,是让你在这个行业步步为营、节节高升的重要法则。 通常,我在面试新人时,最常问的一个问题是, “What do you read?(你平时都看什么书/技术博客?)” 自己业余时间的研究和学习,是程序员这一职业的重要组成部分。
Critical Thinking批判性/反权威思维 Critical Thinking是一项非常重要的Soft Skill,尤其是在做Code Reivew的时候。 我对Critical Thinking的理解是,敢于对权威提出自己的质疑,并多角度地看待问题。 在工作中,拥有Critical Thinking能力的软件工程师,在解决一个问题时,不会妥协于普通的解决方案,而是会寻求最佳解决方案。
Big Picture Thinking 大局观 我强调了很多次,不要将写代码当做你的终极目标,写代码只是一个简单的执行环节。 Focus on the Business as the End Goal 在面试时,我很喜欢让求职者描述他们system design背后的逻辑。 当我听到他们设计的出发点都是从顾客的角度出发时,就会特别“打动”我。
Discipline 自律能力 很多人误以为Discipline就是指按时上下班,好好工作别偷懒。 其实不然。Discipline指的是,在工作细节上严格要求自己。 由于程序员的工作性质,他们并不需要做到朝九晚五、每天工作8个小时。 他们的工作时间相对自由,但这并不意味着,他们可以马虎对待工作和任务。 一个好的程序员在做一项任务时,对其中的每个步骤,都有自己的一套Discipline。 这个道理看似简单,但实际操作中,反映的是一个程序员对细节的思考和认真负责。 一个有Discipline的程序员,在工作中会注意做好方方面面的细节,比如代码质量,良好的提交/分支习惯,良好的命名习惯,高效的归档,良好的沟通,自发性的工作任务等等。 一句话总结,就是成为其他程序员的榜样。
Add Value:Offer Strong Ideas and Stick By Them提出想法并坚持执行的能力 好的软件工程师,从不害怕站出来表达自己的观点。 这项工作需要涉及到很多团队协作的部分,所以公司特别需要能够提出自己的想法,并能把这个想法坚持下去,并推进执行的人。
单纯地遵循命令的人很多,但能够给团队增加价值的人却很少。 另一方面,提出自己想法的同时,敢于直面和接受有建设性的批评也很重要。 以上这些,就是我这些年来,总结出的程序员需要掌握的Soft Skills,希望能给大家一些启发。 记住,you're not paid to wirte code. 作者:Vinicius Brasil EBANX后端软件工程师 |
|