我不是花钱雇你来写代码的!
很多人对于软件工程师这一职位,有很深的误解。
他们认为:软件工程师 = 写代码的
但是,想做一名成功的软件工程师,却不能只停留在会写代码这么简单,除了掌握扎实的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后端软件工程师
更多科技求职咨询,请关注“来Offer网”