分享

我不是花钱雇你来写代码的!

 qdcxj 2019-08-25

  很多人对于软件工程师这一职位,有很深的误解。

    

  他们认为:软件工程师 = 写代码的

  但是,想做一名成功的软件工程师,却不能只停留在会写代码这么简单,除了掌握扎实的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后端软件工程师

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多