软件工程师的软技能
软件工程师的软技能
原文:https://medium.com/hackernoon/essential-soft-skills-for-a-software-engineer-the-basics-afe9692682f5

不管你是初级软件工程师还是高级架构师(也不管你喜不喜欢),软技能都是你工作的一部分。有些人天生就有这方面的天赋,但对于我们大多数不太擅长社交的人来说,这是需要培养的。好消息是,软技能肯定是可以学习的,通过练习你会变得更好。你的软技能越好,你在接下来的工作中就会做得越好。
我将讨论一些我认为对任何软件工程师都至关重要的软技能。这些事情应该帮助你更有效地做你真正得到报酬的事情;开发伟大的软件系统。
不要害怕大声说出来
我们工程师是一群胆小的人。把我们放在电脑后面,我们可以创造奇迹,但把我们放在一个挤满人的房间里,当项目经理问我们是否能在下周之前交付三个网络应用程序和一个移动应用程序时,我们会静静地点头。
你必须意识到,无论你的级别或经验如何,你都拥有一定的权力,远远大于那些快嘴的高管。这就是创造的力量。你可以用你写的每一行代码让事情变得真实,构建事物,改变公司的进程(无论是好是坏)。现在,我确信所有这些人看起来都令人印象深刻,但当它归结为一点时,他们都在黑暗中抓住一个你非常熟悉的主题;你的代码。
所以你必须帮助他们。问题是,他们非常努力地保持他们重要和做决定的外表,但事实上,他们不知道,也不可能知道他们在说什么,因为你是创造的人。不管他们承认与否,他们需要你。

旁边是你的公司,你也有责任对自己说出来。你必须保护好自己,因为没人会这么做。虽然在晚上和周末工作来完成发布听起来很英勇,但这真的一点也不好玩。或者更确切地说,当它被强加在你身上时,一点也不好玩。如果你想做,那很好,但要确保这是你的条件。
所以大声说出来。告诉他们这是不可能的,或者你不能开始下一个项目,因为当前的项目还没有完成。或者,以一种更积极的方式,告诉他们如何通过两行代码在发布中添加另一个特性,而他们认为这需要一个月的时间。向他们解释代码世界的现实,以及他们的请求所带来的影响。让他们看一眼你的世界,并邀请他们一起登上顶峰。必要时给他们看看。
然而,你会很快发现,你会觉得你大部分时间都在对人们说“不”。虽然说“是”很容易,但说“不”可能很难。这会在请求者和你之间制造紧张。虽然对方提出要求可能不公平,但你可能会觉得自己是制造紧张的坏人。
因此,我们要做的是将对话从请求转变为解决问题的过程。提出请求的人可能是想解决一个问题。例如,他希望在截止日期之前有一个功能,这样他就可以向他的老板或客户展示一些东西,这将导致增加什么或其他。如果对方站在你这边,你现在的目标就是帮他解决这个问题。
第一步是找出问题所在。所以你会说“对不起,我想我们不能在最后期限前完成。在那一天,你想实现什么目标?也许我们可以找到另一种方式。”。然后哒哒,现在你和他一起解决问题了。也许你可以为他提供另一个更简单的功能,或者一个非功能性的模型就足够了。
问题是,你已经把一个潜在的恼人的情况变成了一个难题,如果有什么我们喜欢做的事情,那就是解决难题,不是吗?最重要的是,他们会因此而爱你!
小提示:如果你大声说出来,却被骂了,那可能是时候考虑换一份工作了。
不同意你的理智,不同意你的情感
我考虑过用你的头脑而不是你的心来写这个标题,但这听起来有点太俗气了。
工程师通常对自己的观点和偏好有强烈的感觉。甚至如此强烈,以至于争论很快变得情绪化。永远不要让这种事情发生。这些争论没有任何感情色彩。情感上的争论只有和你有实际情感关系的人才有意义,比如女朋友或者厚脸皮的鹦鹉。不是和同事。
带着你可能是错的想法参加每一场争论。根据其他人的情况,这很有可能发生。不要和自己的观点结婚,在心理上和它拉开距离。改变你的想法应该是一个廉价的操作。
从考虑对方开始。他是白痴吗?如果是,他为什么和你一起工作(或者你为什么和他一起工作)?如果他不是,他可能有他的观点的理由。他比你高吗?那么你很可能错了,所以把自己放在学徒的位置上,开始学习吧。
彻底弄清楚他的观点是关于什么的。他的实际观点是什么?和你的有什么不同?哪里相似或者相同?他是怎么得出这个观点的?他有你没有的信息吗,或者反之亦然?
讨论他的观点的理由。既然你现在已经确定你们俩有相同的信息,他为什么会得出这个结论?你能理解这是为什么吗?如果没有,请提出更多的问题和澄清。或者他只是认为其他事情比你更重要?对他来说,性能比可维护性更重要吗?但对你来说,情况正好相反。
最后,在确保你们双方都完全理解对方,但都没有改变主意(或者你们都改变了主意,这种情况时有发生)之后,考虑这个问题有多重要。如果不是,考虑向另一方让步。既然你理解了他的推理,这应该更容易了。如果你觉得这仍然重要,要么多动动脑筋,要么找个裁判来做决定。但是一起做这件事,因为在这一点上,你应该去寻找正确的前进方向,而不是搞清楚谁是对的。
所有这些的一个非常重要的副作用是你会学得更快。你已经知道你的观点和你处理问题的方式,那里没有那么多要学的。坚持自己所知的人会停滞不前。然而其他的是一个大谜团;倾听他人的思维模式是灵感的巨大来源。深入他们的观点,你会比你自己成长得更快。
别犯傻了
我不知道工程师是怎么回事,但我们是一群刻薄的人。我们喜欢指出别人工作中的问题,经常是在别人面前。有时甚至在客户面前。毕竟,很明显他们应该检查输入中的 Unicode 字符,对吗?那么为什么每个人都不应该知道他没有呢?
问题是,事情往往没那么简单。回想起来,一切都很容易。但也许他实际上正在计划修复那个明显的 bug,当有人因为生产上的一个问题打断他时,或者“快速浏览”某个结果占用了一天剩余时间的东西。或者他正处于紧要关头,在午夜因咖啡因引起的兴奋中写下了这段代码。或者他只是懒惰和无能。
不管是什么原因,嘲笑别人对他没有任何帮助。负面反馈会使人失去动力和疏远;重复的次数足够多,他就会停止尝试,不再寻求帮助,因为这有什么意义。
别假装你想帮忙。你所做的是为了你自己的自尊感;你想向别人展示你可以做得更好。如果你真的想在这种情况下帮助某人,私下和他们谈谈,了解情况,看看你是否能做些什么来帮助他们,这要有效得多。例如,你可以给他链接一篇相关的文章,或者和他一起做一些结对编程。它不那么显眼,也不那么迷人,但它更好。我们努力变得更好,不是吗?
所以要认识到自己是个混蛋,不要这样。就这么简单。
最后
因此,我们已经讨论了大胆发言、建设性地表达不同意见以及不做混蛋。这让你有能力影响关于你正在编写的代码的决策,帮助你创造一个建设性的和积极的工作环境,并且通常应该把你自己定位为每个人都想与之共事的工程师之一。
如果你能坚持做到这一点,你就不再是一个只会写代码的人,而是你的团队和公司的资产。你会参与更多的项目,因为所有的项目经理都希望你在身边;你不只是写代码,而是解决问题,让他们的生活更轻松,甚至没有这么多额外的工作。因为你的态度,你将能够比其他坚持己见的工程师更快地学习和成长。无论你的职业目标是什么,从长远来看,这些东西都会帮助你。



