查看原文
其他

如何成为优秀工程师之软技能篇

owenlai 腾讯云开发者 2022-12-22

点个关注👆跟腾讯工程师学技术


引言|我们日常工作中我们经常发现部分技术能力和自己相当的人,但绩效、成长速度、合作口碑方面却远超自己,具体是什么原因呢?核心差异是软能力。笔者结合十年来的工作经验,讲述技术之外大家应当具备的软能力,期望可以抛砖引玉,提升大家对软能力的认知和重视,从而有更好的职业发展。


为什么需要提升软技能 


很多开发同学主要精力在关注技术,忽略了软技能的重要性,导致遇到一些问题,常见问题有:


  • 每天忙忙碌碌,但年底回头看,却感觉没有几件事情是有价值的。


  • 和产品的沟通要么盲从,要么对立,比较难达成自己的沟通目标。


  • 只关注手上的工作,缺乏对项目整体的关注,缺乏主动跟进、主动同步的心态,不能做到『做事让人放心』。

所以在开始之前,我们先简单聊聊学习软技能的重要性。



(一)软技能决定了你的职业上限


人们常说的一句话是:硬技能决定一个人的职业下限,软技能决定一个人的职业上限。虽然不一定对,但说明了软技能的重要性,而且随着我们年龄的增长、职级的提升,软技能重要性越来越明显。


成为高级工程师后,负责的事情增多,日常工作很大有部分是沟通、协调、项目推进,软技能不足,会感觉比较吃力,导致绩效产出不理想。




(二)软技能可以加速职业发展


从我自己总结的开发一般成长路径来看,里面也包含了许多软技能,包括责任心、沟通、项目管理,推动力、带人等,如果有软技能的加持,能让一个人快速成长为做事放心、独当一面的团队骨干,从而加速自己的职业发展。




(三)软技能学会后可以受益终身


软技能多数是通用技能,和公司无关、岗位无关,能力可迁移性比较强,学会后可以受益终身。如沟通能力,可以应用到各种生活场景、工作场景。


如何提升软技能?


接下来我们重点看下如何提升软技能,在所有软技能里最核心的就是owner意识,这决定了我们对待工作的态度。



(一)软技能的核心是owner意识


owner意识就是以主人翁的心态去做好每一个项目,说白了就是把自己当成项目、产品的老板,尽力把事情做成,对其成败负责。


有owner意识,才有把一件事做好的原动力,才会积极主动去学习提升自己,和团队成员做好协助,以达成项目、业务目标。


也许有人会说,只是打一份工而已,没必要如此付出,成功了老板才是最大受益者。


其实除了老板之外,我们自己也是最大受益者,除了受益于结果,更受益于过程的成长。


如厄尔.南丁格尔所说:



换个角度说:我们需要像经营公司一样经营自己的职业生涯,思考如何提升自身的服务质量,而工作的过程即是我们为客户服务的过程,也是我们提升自身竞争力,形成个人品牌的过程,因此我们不仅是为别人工作,也是为自己工作。


而我们做成的每一个项目都是职业生涯的代表作,证明我们自己这家企业的实力,是职业发展的奠基石。


有owner意识,做事的心态会截然不同,例如我们常见的案例:


情况一:产品给开发反馈BUG

产品:开发哥哥,我线上体验发现xx存在问题

..10分钟过去…

开发:该功能不是我负责,麻烦问问其他人

产品:[一脸黑线]


情况二:产品给开发反馈BUG产品:开发哥哥,我线上体验发现xx存在问题开发:我马上和相关同学一起快速定位修复下,有结论同步给你..10分钟过去…开发:问题已经修复,感谢反馈,我们后面会做XX优化,保证现网服务稳定性。


有很强的owner意识的同学,不仅关注自己的工作,更加关注整个项目的好坏,并尽量往前多想一步。


接下来我们继续看下除了owner意识,还应该具备哪些重要的软能力



(二)软技能包含哪些?


软技能包含的范围很广,基本涉及所有和人有关的方方面面,大到『三观』,小到如何做好每一次『沟通』 。本文分为自我提升、团队协助两个方面,分别讲述职场中较为重要的四个软技能,但因为篇幅限制,每一项只是简单的抛砖引玉,如果感兴趣,大家可以找相关资料进一步学习。




自我提升      


时间对大家是最公平的,做好时间管理,提升单位时间价值产出,我们才有时间来学习、思考,并运用学到的知识、技能提供高质量的产品和服务,从而形成个人成长的正向飞轮。


所以我们首先从时间管理说起



(一)时间管理


我们人最宝贵的就是时间,比时间更宝贵的是注意力,注意力在哪里,收获就在哪,所以时间管理应该包括两部分:时间分配管理、精力管理。


工作中随着负责的事情越来越多,大部分人很难像刚毕业那样『可以安静的写自己的代码』,沟通需求、讨论技术方案、各种问题跟进、问题咨询等,除此以外各种娱乐app、各种消息推送也在抢夺我们的注意力。


如果不做好时间管理,可能一天下来真正有价值的工作时间没多少。



  • 记录并分析时间分布


人类虽然有生物钟的概念,但我们对时间的感知其实是非常不准确的,如果不记录,我们根本不知道时间花在哪里了?我自己做过时间记录,事后发现结果跟自己感觉的极其不一样,并且能发现自己的高效时间,建议你也可以试试。


因此要做好时间管理,首先第一步就是记录、分析自己的时间,看看自己的时间都花在哪里了?对记录时间感兴趣可以看一本书《奇特的一生》,作者以分钟的粒度记录时间,了解自己时间花在何处,而且通过记录能精准的预估自己做某事需要花费的时间。


时间记录的方法有很多,核心是必须在每一项工作完成后『立即』记录,才能保证正确,靠事后回忆来记录是不靠谱的。


正常我们可以以半个小时为粒度记录,然后分析自己的时间都花在什么地方了,分配是否符合以下原则:重要不紧急 > 重要且紧急 > 不重要但紧急 > 不紧急不重要,把浪费的时间、低效时间、非生产性时间找出来。



许多人会把时间耗费在第三和第四象限,导致重要不紧急的事情一直没时间去做,从而导致紧急的事情越来越多,形成恶性循环。


也可以像《小强升职记》里说的更简单的记录这半小时是属于哪一部分:集中精力工作、无意义浪费时间、真正的休息。


时间统计后可以复盘分析哪些时间是可以优化的,比如:


  • 咨询比较多的事项可以总结成指引文档

  • 简单重复的事情可以做成工具

  • 不合理的协作流程,可以推动优化

  • 可以不参加的会议等



  • 遵从要事第一原则,做好工作计划

我们大脑天生厌恶不确定性,如果我们没有相关计划,没有确定的计划安排,大脑会倾向于享乐,容易被各种app吸引走。


我自己的习惯是每周五做好下一周的工作计划,然后每天早上列出三项今天必须完成的高优任务。


在计划时务必遵从『要事第一』的原则,阶段性把一件事做好,这样可以提升自己的专注力,也会让自己因为完成任务而获得成就感,同时也可以适当激励自己。



  • 合理利用时间


我们可以把时间分成三部分:整块时间、碎片时间、暗时间,并根据事项合理安排


1.整块时间:半小时以上不被打扰的专注时间
用来做重要、需要专注思考的事情,以提升效率


2.零碎时间:没办法专注做一件事的零碎时间
用来做零碎的事情,比如查看邮件、回复信息、整理东西、咨询问题等


3.暗时间:在做无需动脑的事情时,可以利用的时间。
如开车时、洗澡时、干家务、蹲厠所时,可以用来听音频、思考问题等,许多创新都是在暗时间获得灵感的。


这里我们应该尽量将时间做整块的运用,如果将时间分割来零星使用,纵然总时间相同,效率也完全不一样,日常工作中较多时间需要较长的连续时间才能完成,比如方案编写、核心模块编码、人际沟通等。   


以上是我认为时间管理比较重要的几点,入门推荐《小强升职记》一书。


总体来说提升时间利用效率,是我们做好一切事情的前提,若不将时间管理好,要想管理好其他事情就只是空谈。


“认识你自己”对我们一般人来说比较难,但“认识你的时间”却是任何人只要肯做就能做到的,这是我们提升时间效率的有效途径。



(二)学习能力


当我们遇到问题时,有些人选择抱怨、有些人觉得是自己努力不够,但这个时候更应该思考是否自己能力不足,是否应该进一步学习,对应NLP人才分类的第三流人才,能做到这一点至少可以成为基干。核心就是善于发现问题,并通过学习不断解决问题,提升自己把事情做成的能力。



例如我们技术同学在工作中,经常会遇到一些挑战,比如性能问题、代码编译效率问题、问题定位效率问题等,很多人选择忽视,其实这就是最好的学习机会。我们应该抓住机会,快速学习,并在工作中迅速验证。



  • 学习是最好的投资


“股神”巴菲特在2022年年度股东大会上被问到“超级通胀下你应该买哪只股票”的问题时,巴菲特说:“目前通胀下最好的保护方式就是投资自己,不管遇到什么情况,个人的才华是不会受到通胀压力的。”


确实,最好的投资就是投资自己,很多父母对小孩非常舍得花钱报班学习,对自己的学习投资却少得可怜,其实我们自身更应该不断的学习提升,因为我们更容易学以致用。


哪怕每天只进步一点点,通过复利的作用,长久下来也能发生极大的改变。


如果每天进步1%,一年以后你的水平是37.78(1.01^365=37.78)

如果每天退步1%,一年以后你的水平是0.025(0.99^365=0.025)



  • 高效的学习方法


很多人学习了半辈子,却没有花时间去学习过如何学习、如何高效的学习,导致学习事倍功半。


在学习方法上,非常经典的是『费曼学习法』,其核心是:以教代学,当你教会别人的时候才说明你真正学会了。这里的核心是需要用自己的语言来描述知识,教会别人,语言组织的过程也是自己消化知识的过程。

如下图可以看到,教授给他人是留存率最高的学习方式:



我自己总结比较好的学习方法步骤是:



首先是了解知识全局,知道『自己不知道什么』,然后确定学习目标,并搜集权威资料,制定学习计划进行学习,过程中不断结合实践进行思考优化,最后总结输出对外分享。


最后的总结分享,真是好处多多:


1.提升自己对知识的理解。


2.提升自己的影响力,打造个人品牌。


3.提升自己抽象总结的能力,逐渐形成自己的知识体系、方法论。


有些人性格偏内向,可以通过写作的方式来分享,具体可以参考我们之前的文章 【手把手教你写好技术文章】



  • 终身学习


关于终身学习,先给大家分享一个『达克效应』,我们很多人工作3-5年后,就容易走向『愚昧之颠』,觉得自己特厉害,什么需求都能搞定了,形成认知偏差,于是停止学习,每天按部就班地过日子。


只有少数人能通过持续学习或者他人的指导收获 "知道自己不知道",从而进入『绝望之谷』,而后通过学习、思考进入『开悟之坡』,最后走向『平稳高原』,成为真正的大神。



已知的大神们基本都具备成长性思维、终身学习的特质,从而实现了伟大成就。


根据我的经验最后强调一个点:学习不在于多,而在于精。把一本经典的书反复看,真正吸收,使之融入到自己知识体系,改变自己的认知,并应用到实践,改变自己的行为,好过泛泛的看十本、百本书。


关于学习,推荐书籍:《认知觉醒:开启自我改变的原动力》



(三)质量意识


对于开发而言,我们最重要的交付就是程序,交付的质量好坏直接决定我们的技术口碑,也是我们和他人建立良好合作关系的前提。


如果自己的线上服务经常有问题也会让我们疲于“救火”,根本没有精力做其他重要不紧急的事情。


所以日常开发工作中一定要有工匠精神,要对自己的工作质量负责到底,不要指望他人来帮助自己发现问题,没有人喜欢给别人擦屁股。


具体在工作场景中要求我们在每个环节做好:


1.需求阶段
不要『想当然』,对于模糊的边界、可能的异常和产品沟通确认清楚,确保需求的完整性、理解的一致性。


2.方案设计阶段
有些人直接上来就撸代码,后面才发现部分逻辑没有考虑到。
先谋而后动,先完整思考设计方案非常重要,同时积极邀请高阶工程师帮忙评审、完善方案,确保方案的完备性,为后面的编码工作打好基础。


3.编码测试阶段
关于如何提升代码质量,这部分材料非常多,这里不复述了


4.发布阶段
我们应当对每一次外网抱有敬畏之心,比较好的做法是建立自己和项目的checkList,对于可能出现问题的事项逐一排查,确保不遗漏,检查清单很多时候非常有价值,具体建议学习『清单革命』一书。


比如我们团队,有了checkList就可以大幅降低低级错误。


5.运营阶段
建立完善的监控体系、日志链路非常重要,以确保能快速发现问题、快速定位问题,做大对线上服务『心里有底』。



(四)产品思维


日常工作中,开发做的事情更偏执行,负责把按需求把功能实现好,导致大家偏工程思维,缺乏产品思维。



产品思维的核心是用户驱动,以产品为媒介,与用户进行价值交换;本质上交换的不是产品这个媒介,而是产品背后的价值。


所以不局限于我们在做的产品,只要是我们对外交付的,都可以认为是产品,包括一封邮件、一个文档、一份代码,包括前面说的,你可以把自己也当做一个产品,『你』这个产品的用户就是你的同事。


因为缺乏产品思维,导致很多开发的输出比较粗糙,比如有些开发写的代码、文档、邮件格式等,更多站在自己的角度,怎么快怎么来,较少去考虑阅读者的用户体验。特别是一切长期的维护的项目,代码、文档阅读花的时间要远超过编写时间,如果体验不好,其实非常浪费自己和他人的时间。


如果我们能带着产品思维去做好每一件事,关注用户的体验,并听取用户的反馈,不断迭代产品功能、服务,相信一定会获得更多人的认可,有更多的职业发展机会。


具体来说我们做每件事时可以思考:


  • 为什么要做这个产品?核心是为了解决什么问题、痛点?


  • 用户为什么要选择这个产品?相对其他产品有什么不一样?

  • 用户是谁?他们有什么心理特征、社会特征、行为特征、认知特征?

  • 用户是在什么情景下使用该产品?如何通过产品和用户建立连接?

  • 如何提升用户体验?帮助用户快速达成目标。

推荐书籍:《梁宁.产品思维30讲》《俞军产品方法论》


团队协助 


关于软技能,除了个人成长部分,另外一个非常核心就是团队协助方面,因为我们的大部分工作都是需要和他人共同协助才能完成。


这其中最重要,也是最常用的就是沟通能力



(一)沟通


  • 沟通的定义


我根据自己的理解,对我们日常工作的沟通做了简单定义:


沟通是指为了设定的目标,秉持合作共赢的理念,以他人愿意接受的方式,把信息、思想和情感在个人或群体间传递,并达成共同协议的过程。


下面对其中部分重点,简单展开说说



  • 沟通漏斗


沟通过程就是我们信息传递的过程,期间因为大家知识背景不同、表达方式的局限、干扰等因素,导致最终的信息接受其实比我们想象的要低很多,所以重要的事情一定需要反复确认双方理解是否一致,具体如图:



所以才有一句话『被误解是表达者的宿命』,考虑到信息的大量丢失,就要求我们在沟通时不要想当然,以为说一遍别人就理解,多一些『double check』,确保大家的理解是一致的。


同时因为每个人的认知不一样,我们需要用对方能理解的方式沟通,比如我们和产品沟通时,少一些技术术语,多一些常识,或者举个恰当的例子,沟通效率会高很多。


比如下面这个例子:


产品:开发哥哥,这个字符串是什么意思开发:稍等,我查一下代码…10分钟过去…开发:这个这个字符串是xxx技术,其原理是xxx产品:[一脸黑线]

产品同学想问的可能是:这个字符串串如何使用、为什么会出现在这个地方、以及有什么需要注意的,并不是想问它背后的技术原理。站在对方角度去思考,才能避免“鸡同鸭讲”。



  • 合作共赢的思维


沟通的过程中,每个人最本能关注的都是自己;


即使我们表面上在听ta说话,但其实在乎的是『自己看起来怎么样』,或者『自己的诉求』是什么。而较少去真正关注『别人真正想要的是什么』,导致最终沟通目标难于达成。


而真正良好的沟通一定需要具备良好的合作共赢思维,以『合作』作为出发点,以『共赢』为终点,找到共同的目标,达成最终协议。


例如:你在一场分享结束后,被diss分享毫无价值,浪费了他的时间。


这个时候如果你一直说你的分享很干,这种是对抗式的沟通。如果合作共赢式沟通,我们首先应该分析彼此对这场分享的诉求:


分享人:期望听众有收货

听众:期望有收获


发现两者的目标其实是一致的,这个就是合作沟通的基础,只要围绕这个基础来沟通,一定可以达成共赢。



  • 倾听比说更重要


『倾』字有『全数拿出,毫无保留』的意思,如:倾盆大雨。


良好的倾听应该是全身心带情感的用心听,除了言语还应该给予情感上的回应。


生活中,总有一部分人,虽不善言辞,但你跟她聊天感觉非常舒服,核心就是倾听做得特别非常好。


原因是没人愿意跟一个只想去表现自己的人交流,但大多数人都愿意跟对自己感兴趣的人交朋友。


倾听的时候需要倾听两类信息:


1、内容信息:说话的内容


2、情感信息:内容背后的情感


比如我们中国人见面打招呼:『早上好』、『吃饭了吗』等,内容信息其实非常有限,更多是表示友好的情感信息。


比如女生经常说的『讨厌』,不同场景、不同语气后边的情感可能完全不一样,需要我们用心倾听语言背后的情感
良好的倾听能瞬间拉近彼此的距离,建立信任基础,从而更容易达成共识,感兴趣推荐一本书《只需倾听:与所有人都能沟通的秘密》。

以他人愿意接受的方式沟通

同样一件事,不同的表述方式,给人的感受是很不一样的,如:
你不能直接对一个程序员说:“你的代码有bug。”他的第一反应是:“1、你的环境有问题;2、你的使用方法不对”如果你委婉地说:“你这个程序和预期有些不一致,你看看是不是我的使用方法有问题。”他会本能的想:“是不是出bug了?赶紧看看”


还有一个比较经典的案例:


你问佛祖:『我能在念经的时候喝酒吗?』『我能在喝酒的时候念经吗?』,两种表述给佛祖的感觉完全不一样,一个是恶、一个是善。


因此沟通中表述方式也非常重要,沟通中要多用“我们”,“能不能”,“是否可以”,“麻烦你”之类的客气用语,实在必须完成的,可以用“最好能”,“如果你可以……那就最好了”之类的语言,这样对方会更容易接受。



  • 同理心


沟通中同理心同样非常重要,同理心不是简单的设身处地,而是应该带着『他的认知背景』『他的情感』『他的利益立场』去理解他的感受,并采取行动帮助他。


同理心和同情心的区别在于,同理心是对他人的情绪、想法、立场、行为等有真正的理解;而同情心则更多是情绪上和他人产生共鸣。


所以真正做到同理心其实是非常难的,很多时候我们以为懂他,其实我们根本不懂,我们未曾经历过他的经历,所以完全的『感同身受』其实是不存在的,只能不断去接近。


同理心包含下面三个层面:


图片来自《情商修炼》课程


还有一些小技巧:


    1、传递信息而不是情绪
    2、对事不对人
    3、找对沟通对象


推荐书籍:《非暴力沟通》



(二)积极主动


下图是腾讯优秀员工的标签,可以看到积极主动是优秀员工最核心的特质。



在实际工作场景中积极主动主要包括:



总结一句话就是:不是“要我做xxoo”,而是“我要做xxoo”


拥有超强的自驱力,积极思考,主动行动,达成个人目标、团队目标



(三)团队精神


团队精神是大局意识、协作精神和服务精神的集中体现,核心是协同合作,反映的是个体利益和整体利益的统一,并进而保证组织的高效率运转。


在工作中,我们除了关注自己的的利益,也应该关注团队的目标和利益,才能为团队创造更大的价值,获得更大的晋升空间,包括:


1.目标导向:关注并致力于完成团队目标
现实中我们部分开发甚至不知道团队目标是什么,就需要和leader主动沟通,确保自己的努力方向和团队目标是一致,实现效益最大化。


2.凝聚力
当团队遇到困难时,能积极参与,共同面对,共同解决。
如:有凝聚力的团队遇到线上问题时,哪怕不是自己负责的模块,也会积极参与排查,以尽快修复,减少对公司的损失。


3.团队贡献
积极思考解决团队技术痛点,如优化技术架构、建设效能工具、优化流程、沉淀文档等。
积极和产品沟通,思考通过技术手段提升业务指标。
积极帮助有需要的同事,互相帮助、互相成就。
帮助招聘、培养团队人才
正所谓『团队影响力多大,就有多高的成就』,如果你能影响一个团队,你就是未来组长,如果你能影响一个部门,你就是未来部门经理。



(四)项目管理


我们一辈子主要在学习两件事


1、做对的事情:学习如何做出正确的决策。


2、把事情做对:把具体某件事落地完成好。


而项目管理就是把事情做对的能力,而且是和其他人共同协作把事做成的能力,其应用场景不局限于工作场景,包括买房、装修、婚礼、小孩教育等都可以认为是一个项目。


因此《项目管理精华》一书将项目管理视为“21世纪独有的工作”,作者认为“每一名知识型工作者都在工作中不知不觉中扮演着’非职业项目经理’的角色”。


在我们日常工作中,虽然有时会有PM角色,但一般比例都很小,PM不太可能会细看每一个项目,这个时候就需要有人来充当owner的角色,主动承担其项目管理的职责,做好进度管理、风险管理、质量管理,推动项目能达成预期目标。


具体要做的事情如图:



如果能做到这些,不仅仅大幅提升项目成功的概率,还可以大幅提升自身的团队影响力,建立良好的个人品牌,后续我们会分享一篇文章专门讲项目管理,敬请期待。


总结 


以上是今天分享的主要内容,包括软技能的核心owner意识,以及软技能个人成长部分:时间管理、学习能力、质量意识、产品思维;团队协助部分:沟通、积极主动、团队精神、项目管理,期望能对大家有帮助。


罗振宇说:软技能的本质是一种连接的能力,把自己从『工具』变成『接口』。


只有拥有良好的软技能+硬技能,才能让我们在与他人的协作中赢得『靠谱』的声誉,成为优秀的工程师,从而在工作中承担更重要角色,有更好的职业发展。

推荐阅读

如何更好地使用Kafka?

快收藏!最全GO语言实现设计模式

10分钟!读懂虚拟内存 & I/O & 零拷贝

可能是最全的数据仓库全景科普和开发方法论!


点击下方空白 ▼ 查看明日开发者黄历


summertime2022/07.23

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存