与傲慢的程序员工作只会让我们更加谦虚

一年多前我加入团队的时候,公司是一个有着超过25年的非常成功的行业软件和解决方案提供商,位于德国。行业软件的本身是基于Windows和OSX的客户端平台解决方案以及服务器接口,由于HTML5的崛起,公司决定要把行业软件的功能逐步转移到Web上,甚至是手机,平板等智能设备上。

这种行业软件开发的背景决定了团队的软件工程师,是优秀的桌面软件开发程序员,他们能够熟练的驾驭此类行业软件的开发,并且在自己的工作领域都有着丰富的经验和出色的作品。这些都是我开始和他们一起做开发的时候所没有设想的地方,通常而言,我养成了一个学习的习惯,就是从来不去任意裁断一个程序员的技术和能力,不论是非常优秀的程序员,还是刚开始学习的,我觉得对于任何人做一个裁断都是不公平的,因为无论是优秀还是刚开始学习,都同样会经过一个学习的过程,而我们不能因此而否定过程的重要,只是看现在的结果,所谓万事皆有可能,任何人都可能某一天达到专业,而同时,我也不会向任何人去学习,因为我总认为技术有着它专业的标准,所以只要专注如何达到专业就可以了,而且每个人都有自己的理解方式,我们对于世界本身而言,都是独一无二的,所以认为如果是向某个人学习,这其实是一种对于学习的误解。

这样的习惯想法有一个好处,就是不会因为时常在意谁的技术如何,从而影响自己的工作,但是也无形之中形成了一种我没有意识到的从我身上散发出来的“傲慢”,而当冲突因此产生的时候,才可能意识到自己的所谓”傲慢“态度所在。

与这个团队的工程师一起工作,从一开始就不是一个顺利的过程,当你尝试去了解你需要做的工作的时候,你看到的是一个todo列表,还有一些简简单单写下来的项目目标等等。由于习惯了对一个项目开发事先做计划的方式,所以从一开始就开始一个艰难而必须的改变,这种改变在行为上是很快速的,但是心理上并非如此,对于这种没有完善计划的方式的各种意见,沉积到心里,直到有一天爆发出来。

由于开发的继续,todo列表变的越来越丰富,而项目变的庞杂,而对于项目中的某些成员而言,由于他们对于我所做的工作的技术并不熟悉,所以他们会询问我一些问题,当他们询问这些问题的时候,我一开始就犯了一个严重的错误,因为我从来没有设想过他们的技术背景或者有意去了解一些,所以当他们问到我一些,我认为答案很显然的时候,我开始怀疑他们是不是在和我开玩笑,而当我去回答他们的问题的时候,我总是假设他们对于其中的某些前提以及有所了解,所以使用简单的快速的回答来结束对话,这样的回答必然是不能被他们理解,所以事情的结果比我想象的要糟糕许多,当我紧接着接到多个极速的”What"的提问的时候,我仍然没有意识到这一点,当接着又有若干个“Why”和粗鲁的态度出现的时候,我感到他们的恼怒,但是,那个时候,我确是一头雾水,感觉到不耐烦,并开始反问他们。

可想而知,事情的结果如何,幸运的是,团队的管理者是一个能够尝试去理解别人的人,经过若干次的摩擦之后,他发现了我的问题所在,并且尽可能的提醒我,并告诉我,我应该注意的地方,如我前面所提到的,任何事情的改变,对于自己来说行为上容易,但是心理上很难,特别是我没有意识到自己的问题所在的时候,当他告诉我,我是一个聪明的,有天份的,思维敏捷的程序员的时候,我错误的权当这是我的优点,尽管我其实并不这样认为,然后他告诉我说,我需要慢一点,听完别人的解说,然后开始回复的时候,我权当是因为他们的不知道,其实我听了一半就知道他们所要说明的问题了,所以想要节省时间,快速的解释给他们,并把这当成了他们的误解。

虽然这样的情况持续了一段时间,看似一切良好,而事情也没有再象原来所出现的那样激烈,但是这并不意味着这一切的结束,而是更加的糟糕。

在一次不愉快的争论之后,团队管理者告诉我,让我们双方向对方道歉,我开始思考问题的所在。

事情的经过非常的可笑,当团队的其他成员,开始学习并且使用新的技术的时候,我发现他们的代码和这种技术的最佳实践相差太远,我尽量的把我的工作范围限定,并把自己的代码和他们的隔离,从而保证他们可以写自己的代码,不至于影响到我的设计,但是当他们提交他们的代码到我负责的工作中的时候,我通常都会拒绝采用他们的代码,这带来了他们直接的质疑,为什么不采用他们的代码,是不是因为不够好,虽然我有所解释,但是问题仍然激化到,他们开始比较我写的代码和他们所写的代码的效率,这是那一次争论的开始,我知道通常而言程序员都是傲慢的,但是当问题到了需要比较谁写的代码好的地步,当时,我觉得这是一种侮辱,所以告诉他,如果他不满意,可以把项目分成了两个部分,我们各自工作在一个部分,事情也确实是这样,项目的代码分成了两部分,我们各自开始在自己的代码上工作,并且因此团队管理者了解到并参与,告诉我们需要向对方道歉。

此时我才停下来,思考整个事情的问题所在,并且思考自己的问题所在,当一个项目一开始的时候,管理者给予了我很多的信任,这种信任会产生一种误解,就是我认为我在负责这个项目,所以我开始负责计划每一部分,挑选合适的技术,并熟知可能的实现。这种对于责任的态度其实并没有什么不妥,问题在于,我固守了我的计划,这种执着的态度,把个人的角色和项目中个人所应该具有的角色混淆起来,在没有项目中个人应该具有的角色的明确定义之下,给自己定义了一种角色,并且一直错误的执着着。

在与项目其他成员的争论中,我也开始思考他们的技术背景,习惯以及态度,事实上,他们对于新的技术知道的很少,而且并没有全盘的计划,甚至于不确定每一个实现的可能,而最重要的是,他们是非常自负的程序员,所以如果告诉他们说,你不够专业,也许是对他们,在工作上而言,最大的侮辱,即便是不采用他们的代码,对于他们而言,也是非常难以理解的,而当他们开始边学边用的写代码,并看到自己的代码工作了的时候,他们觉得有着足够的能力来完成项目,这个时候,如果我是正面的回应他们,我们的对话一定是不愉快的,不论我多么的礼貌,事情总会向着不合理的方向发展,因为我持有对于他们的项目观点的否定,而且始终坚持,没有放弃。而对于我而言,所需要选择的恰恰是放弃,这个问题有时候很难理解,为什么我们需要放弃一个更好的方案而采用一个不够良好的呢?事情的本质就是,项目本身的存在,不是以个人的方式存在的,而我们互不相识,也不存在个人的积怨,即便是相识,也都是礼貌的交谈,所有矛盾所导致的,是因为项目的存在,而从审视自己的角度看,都是因为自己所坚持的那些观念,如我所想,其实万事都有其存在的方式,团队如此,公司如此,项目如此,并不是一个良好的计划就是最佳的解决之道,随其自然,放下心中所执着的才能化解矛盾本身。

当追溯到事情的前后,以我发现在这种冲突中,最好的办法,就是真正的改变自己,不是从行为上,而是从心里上,把所有自己的意见,看法,对于自己的行为的维护,以及各种埋藏在心里的东西都拿出来看一遍,不是去衡量和对比从而去判定自己的想法是如何的优秀,所以自己有着各种正当的理由,而是彻底的抛开所有这些成见,而直接面对问题的所在。

我发现,我所执着的这些其实都是可以放弃的,我可以放弃一个更加良好的方案,可以放弃我的意见,可以放弃我的态度,可以放弃我对于自己角色定义(当然这个定位是错的),然后尝试给自己一个新的定位,到底我应该在项目中起怎样的作用,并且把自己的思考详细的解决方案告诉团队的管理者。

幸运的是,团队的管理者看到我的信之后,采用了良好的策略解决了问题的所在,我知道我心里还是有很多无法抛开的所执着的观念,还没有发现,而这些观念对于个人而言,本没有错,但是对一个团队而言,一个不在那个角色上的成员而言,可能是大错,我尝试改变,不仅是行为上的,而首先是观念上的,正如我所感觉到的,和傲慢的程序员一起工作并不是件坏事,反而是一件好事,因为他们的存在,让我看到自己的“傲慢”的一面,从而变的更加谦虚,理解和学习到了更好的沟通方式。

(英文稍后添加,纯粹是为了个人的爱好才写英文部分,勿见怪)

时间: 2024-10-03 23:43:57

与傲慢的程序员工作只会让我们更加谦虚的相关文章

什么方法可以显著提高程序员工作效率

注:也许你见到过一种人,好像同样没完没了的加班,却在你不知道的时候额外学习补充,几年过后晋级Boss.大牛,而你依然是个渣,虽然不尽是.但工作效率在这中间确实起到了重要作用.不要提EQ.IQ,现在还能靠敲代码吃饭,大部分人的智商差异都不大,特别和坐在你身边的那位.今天我们一起探讨下提高工作效率的方法,验证一下细节决定成败.本文多数答案来自知乎. 先分享一些:11个小技巧提高程序员工作效率,小习惯更重要(认可度很高哦) [facebook]程序猿提高工作效率的15点技巧 想提升工作效率应该注意的七

提高程序员工作效率的5个诀窍

提高程序员工作效率的5个诀窍现在有大量所谓提高程序员效率的诀窍和窍门充斥于网络,有些的确有用,但是有些却是误人子弟.然后我想,我不妨自己动手来写点关于这方面的内容,造福于社会,嘿嘿.好吧,扯远了.我写的窍门得既简单实用又立竿见影,我可不希望来个“5年计划”啥的,那太幽默了,这么长的时间,黄花菜都凉了.此次窍门与如何使用软件啊,还有什么颜色的主题最吸引人啊,一点点关系也没有,它致力于提高大家的开发效率.不过有一点要提前声明——对我有效的,不一定对你也有效,下面这些技巧可能有的非开发人员看了也会深有

向外行介绍程序员工作的复杂程度

你的老板 如果你的老板是技术出身,那你很庆幸,他能理解你实现一个小小功能,修改一个小小功能所付出的辛苦劳动. 如果你的老板不懂技术,也许你就要无穷无尽的加班了.给你的忠告就是:做正确的事儿,等着被开除.这是一位谷歌工程师说的话. 你的产品经理 如果你的产品经理懂技术,那么你既是幸运的也是不幸的. 幸运的是,他可以理解程序员工作的复杂度.但是"不幸"的是,你再也不能为了偷懒找借口. 当产品经理提出一个方案时,你再也不敢坚定地说"技术不可行".因为你害怕产品经理自己写好

转载:简化IT程序员工作生活的4个窍门

如果可以简化你的生活——少做枯燥的任务,将时间真正地用于完成事情,你愿不愿意去尝试?下面就让我一起来学一下如何让程序员工作生活变得简单的小窍门. 如果你敢于倾听自己的心声,你会发现自己一天中的大多数时间所做的事情并不都是有趣的.然而,为了完成你喜欢的重要任务,你必须先完成那些单调又费时的必要职责.所以,要是能够简化任务,少做那些无聊又耗时的事情,将时间真正投入到喜欢的事情上去,那该多好?通过以下几个简单的技巧,你或许可以得偿所愿. 查找个人生活中的瓶颈 Stever Robbins,称自己为“任

提高程序员工作效率的5个工具

提高程序员工作效率的5个工具 这份清单是我们期待已久的,这些高效的工具对于程序员是大有帮助的,你一旦开始使用,就会离不开它们. 1. Git   以前是有不少的版本控制工具,有好用的,同时也有不太好用的,但总的来说它们都没有很好的发展.这时候Git出现了,还有GitHub,EGit,一旦你用上了这个神奇的工具,估计你就很难再碰到更好的VCS了.还没用过Git?赶快试一下吧. 2. Stack Overflow   不开玩笑,2005年的时候你用google搜过技术相关的资料吗?又或者1995年那

程序员工作中的一些建议

一.尽早地添加日志记录和错误处理 在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用.如果系统不能照常工作,那么你就需要知道程序中发生了什么--这是日志的作用.错误处理也是如此--错误和异常越早处理越好. 二.在整体测试之前先进行模块测试 先进行部分模块测试可以节省时间.通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配.但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多. 三.先了解现有的代码 大多数的编码都需要以某种方式改变

程序员工作中会遭遇的天花板 工作中不由你控制的一些地方(转)

在我看来,程序员做的是开创性的工作.互联网的发展不但推动了技术的发展,而且带来了技术的普及.因此程序员不比以前,现在要找某方面的资料是很easy的事情了.看过大量的资料,各种新颖的技术方案和解决思路,不心动那是不可能的.OK,想用某某某框架,想用某某某技术,但是,因为各种原因,没办法应用到自己开发的项目中.这就是一个天花板. 在工作中往往有各种各样的天花板,比如绩效考核,项目进度,被打断的思路,技术架构.因为你不是做决定的那个人,所以你就有天花板. 绩效考核 很多公司都有绩效考核,在我看来绩效考

程序员工作法则,避免成为程序猿

这篇说的是精神,比较务虚,不感兴趣的可以略过. 在国内有一个很特别的现象:高中打了鸡血一样使劲学习的人,到了大学往往会放松下来,跑去享受生活了,大学里打游戏.打牌.临考冲刺的大有人在. 这倒也在情理之中,高中不学真考不上大学,考不上大学真就完蛋了:大学不学,只要能毕业,大致还能找到工作.但人生是场长跑,稍一停顿,后面的人就嗖嗖的窜到你前面了,虽然你不一定能看得到到底是谁.这很像龟兔赛跑,但为了避免不成为那只兔子,单靠口号层次的主观意愿是不行的. 停下来的人其实很多,有的人停在了大学里,有的人停在

11个小技巧提高程序员工作效率,小习惯更重要

“吃苦耐劳”真的是优良品质吗,与你怎么做相比,老板们应该更关心你做了什么.达到的效果.所以,效率,还是效率,希望这些实用小技巧对大家有所帮助. 1.两分钟法则 如果一件事可以在两分钟内完成,比如回复邮件,一个简单的家务,就立即完成,因为记住它.计划时间.在后来完成它,可能会花费五分钟甚至更多的时间. 2.五分钟法则 拖延症是影响工作效率的大魁首之一,想要治愈它不是给自己定下目标.下定决心去完成一项大任务,而是只在那件事上花五分钟.你会发现在大多数情况下,它在超出五分钟的时候依旧很顺利,因为你已经