程序员如何让自己的工作更上一个台阶

软件开发可能是一份吃力不讨好的工作,你要有创意,并能解决问题。有时候你觉得自己的代码写得很优雅,却无法向不懂代码的人炫耀。经常看见好莱坞电影里面,导演把我们描绘成精英×××,坐在一个神秘的终端前面,很快就能破解政府部门的密码,并在60秒内将整个数据库复制到U盘里。不过,我觉得我连自己的笔记本电脑都破解不了,更不用说去破解别人的了,而且有时候我把一个Word文档拷贝到U盘里都要花上不止一分钟。
然而,在现实世界里,程序员并不像好莱坞导演们描述得那么厉害。我们的老板和同事并不在乎我们的代码有多优雅。他们不明白,我们每天都会被问一些愚蠢的问题,比如估计需要多长时间可以完成某项功能,而之前我们对这些功能可能一无所知。坦率地说,我们经常被要求做一些甚至连他们自己都不知道是什么事情的事情!我们的价值常常以能否在数小时内快速写出代码来衡量。我们经常要面对不合理的截止期限,工作和生活的平衡往往是不存在的。不小心出个bug就有可能让之前所有获得的“好评”功亏一篑。事实上,更努力地工作通常只会让别人提高对你的期望,而当你稍稍没有达到“标准”,你在别人眼里就成了一个“懒鬼”。
我们都很钦佩像乔布斯和扎克伯格这样的人,并且认为如果我们更有才华、更有创造力、更有动力,也会在工作中取得更大的成功。我们会一直工作到凌晨,学习最新的框架和技术,花费整个周末来重构我们的核心库,以便更快、更高效地完成工作。而在很多情况下,我们忽视了自己的需求,忽视了朋友和家人,甚至忘记了为什么要这么折腾。有多少次,我埋头苦干,把代码写出来,只是为了让老板和同事不再抱怨,而不是为了得到什么荣誉或奖励。
“为什么你需要这么长时间开发这个新功能?为什么QA会在你的代码中找到bug?你不测试自己的代码吗?”
当有人说我们的小孩长得很丑,或者当我们付出的努力和牺牲只换来消极的反馈和抱怨时,我们很容易就进入“防御”模式。有时候别人只是指出代码中被忽略的一个小问题,或者要求加入一个小功能,都可能会引来我们指责性的回应。我们如何回应他人,如何回应同事和客户的抱怨,将会对我们的价值产生巨大的影响,并最终影响我们的职业生涯。
成功的程序员是那些抱有正确态度的人,好的态度终将胜过高超的技能,并且足以让你得到非技术人士的认可和赏识。
移情是关键
真正能够影响我们职业生涯的是我们的态度。正如之前所说的,没有人会关心你工作了多少个小时,或者你的代码有多么优雅、多么富有想象力。努力写好代码是我们的本职工作,我们不会因为做了分内事而得到额外的奖励。
别人在意的是你如何回应他们的需求。不管是针对同事、客户还是最终用户,这个前提都适用。如果你想成为别人眼里的优秀员工,首先要让他们欣赏你。我见过一些我认为最差劲的程序员,但他们在公司的位置却一路直上,超越了那些经验丰富和才华横溢的程序员,仅仅是因为他们深谙职场的游戏规则,知道如何与别人相处。通常,这些人最终会成为领导者和管理者,而其他程序员则继续在“气泡”里挣扎,不明白自己错在哪里,不明白为什么没有得到应得的嘉奖。
让我们举一些典型的例子,看看我们应该怎样做才能让人们对我们做出更积极的回应。
老板:我不明白为什么需要3天时间才能在页面上添加一个按钮?乔上周添加一个新按钮只用了2秒钟!
错误的回答:乔开发的是Windows应用程序,并且他是往按钮栏添加按钮,而那个按钮栏本来就是为了方便添加按钮而设计的!而我这个是一个Web应用程序,它需要支持所有设备,动态适应屏幕大小,还要支持各种浏览器及国际化!页面上没有可以放额外按钮的空间,所以我不得不重新设计页面,在不同的浏览器上进行测试,确保页面布局不会在小设备上发生错乱,然后创建新服务,添加新逻辑……
那么为什么说这样的回答并不妥当?老板可能确实不知道“添加一个按钮”背后究竟有多少“隐形”的工作,不知道需要做多少前端测试,不知道你是加班才把按钮加好的,他们是在拿苹果和橘子做比较。但他们没有义务知道这些,不是吗?有时候,你的解释听起来都是借口,特别是当老板开始质疑你的时候。
我的建议是“读懂老板的言外之意”,并从老板的角度看待事情。你的老板可能从来没有写过代码,因为可能没有必要,而且他真正想问的并不是为什么你花了那么长时间添加按钮。你的老板关心的截止期限,如何让客户满意,增加销售额。关心你的老板关心的事情,用你的同理心体会老板的感受,并解决他们的需求和目标。
更好的回答:我可以理解你为什么这么沮丧,也知道添加这个新功能对你来说至关重要。这对我来说也很重要,我希望尽我所能把工作做到最好,让我们的产品变得更完美,这样我们的客户就会很高兴。添加这个按钮涉及到很多后端操作,如果你愿意,我很乐意详细解释给你听。花费一些额外的时间来确保按钮在所有设备上都能正常工作,并进行彻底测试,这些是很有必要的。以后我会更频繁地向你汇报进度,让你更好地了解我在做什么以及进展情况。
换句话说,就是不要找借口,你甚至不需要解释什么,你需要做的是让他们知道你的感受,让他们知道你也理解他们的痛点,并且也在关注他们所关注的事情。
QA:我测试了你添加的新按钮,这是我第二次发现这个bug了。你有没有看过我写的bug描述?你在提交代码之前有没有测试过?
不好的回答:是的,我看了你写的bug描述,并且按照你列出的步骤操作了,但就是无法重现问题,我还把过程录下来给你了,你看了吗?如果你想解决这个问题,就要想个办法把它重现出来。
这样回答的问题在于,带有愤怒的情绪对事态的发展一点帮助都没有。话里行间透着一股挫败感,而且还给对方增加工作量,而这些本来是因为你的过错和你的不作为所导致的。这个时候,要继续发挥“移情”的能力。
更好的回答:感谢你的耐心,在客户发现bug之前把它们拦了下来。因为我无法在我的系统中重现这个问题,是否可以明天早上开个会?我带着笔记本电脑来找你,然后看你是怎么操作的。这样可以确保我们都了解问题所在,或许我还可以当场把问题给解决了,这样你就知道它已经过测试并准备好发布了。
在工作中得到认可的几个技巧
永远不要道歉,除非你真的需要弥补过失。相反,进行积极的回应。例如,把“我很抱歉花了这么长时间”改为“感谢你的耐心等待”。
向顶尖人物学习。找出工作中的“摇滚明星”,那些被人喜欢和信赖的人。他们做事的方式总能获得他人的积极回应。与他们交朋友,模仿他们的行为方式。
比别人来得早走得晚。虽然不一定非要这么做,但人们确实会注意到你的来来去去。不过,如果其他人在上午7点就来了,而你在11点左右才到,人们会认为你是个懒鬼。如果大多数人工作到下午6点,而你4点左右就走了,他们也会认为你太懒散。
频繁沟通。如果你每天都参加Scrum,那么很好,但如果你不参加Scrum,那么一定要向你的老板、领导和同事们说明你正在做什么,以及遇到什么困难。没有必要太过冗长,只要做个快速更新就可以了,让每个人都知道你正在做某件事,而且很上心。
在不工作时,不要谈论工作。如果你和同事出去聚餐,在与工作无关的地方用餐,就没必要再谈论工作。你可以询问他们家人的情况,问问他们最近的假期过得如何,或者聊聊他们感兴趣的事情。
总得来说,当技术能力已经达到了一定阶段,影响你后续发展的是软实力。你可能会发现,积极的态度比优雅的编码能够让你走得更远。

猜你喜欢

转载自blog.51cto.com/13883564/2155213
今日推荐