当前位置: 首页 > 科技观察

说说技术人员的耐心和包容

时间:2023-03-20 00:29:45 科技观察

感情不是一个成熟的职场人该有的处事方式,但在我们这些技术人员身上可能更容易出现。  有个很老的笑话,技术人员都知道。如果我们想启动一个技术论坛,我们所需要的只是一个帖子——php是世界上最好的语言。虽然是个很老的笑话,但还是经常被提起,很有意思。  不光是在论坛,在我们日常的团队合作中,也经常会出现这样的事情。回想一下,在CodeReview中,是不是经常有某一行代码引起大家的广泛讨论,“点燃”了整个会议?一个问题你们可能会讨论很久,也争不出来。  对于这种讨论,如果大家能够心平气和,相互理解,或许能够很快达成共识,但实际上,这样的情况经常发生。我知道”,或者“我看不懂,你这边明显有问题”,或者“你说的好,我就用我的办法”,或者“你这里明明是#definetrue=false”等等  在这样的讨论中,我们更容易情绪化(可能没有情绪化那么严重,暂且用这个词吧),最后,原本平静的讨论变成了互相对抗某些人。或者干脆拒绝交流。一旦情况变成这样,不仅会大大降低讨论的效率,还会引起彼此的不满,影响后续的高效合作。  感情不是成熟的方式专业的人应该是处理事情的,但是在我们这些技术人员中可能更容易出现。因为大家都逻辑能力强,思维敏捷。他们追求高效率,比较没有耐心。如果你还记得的话,可能是《社交网络》扎克伯格的形象是效率的典型形象nt技术员,口齿伶俐,行事雷厉风行。我发现身边的技术人员或多或少都有这样的品质。当我反思自己时,我常常发现自己不够耐心。比如我在和别人交流的时候,对方还没说完,我就急忙开口,对方只好急着说,“你先听我说”。  正因为如此,我们技术人员可能需要多一些耐心和宽容。在和别人讨论交流而不是写代码的时候,我们是不是瞬间切换状态,更耐心地处理别人的问题?当我们在看别人的代码时,当我们发现一些自己并不欣赏的模式时,我们有没有想过别人为什么要这样做?我们在做遗留代码的时候,有没有一边工作一边抱怨代码写得太烂,而没有考虑到当时可能有各种各样的原因?我们是否只是自言自语,而没有仔细听取对方的意见?  一个例子  有这样一个例子印象比较深刻。我们的代码中有这么一段逻辑:classSomething{privateMapattributes;publicTgetAttribute(Stringname){return(T)attributes.get(name);}...}  当我们在review代码的时候,有人看到上面这行代码,还没来得及解释为什么这么做,就说,“这个地方明显有问题,更好的办法是返回一个Option,让调用者处理异常。“当作者开始解释时,他装作听不进去的样子,一直坚持自己是对的。最后因为这个小问题,大概讨论十分钟吧。  这个问题是什么原因?事实证明,Something中的属性实际上是由调用者定义的。由于业务需要,调用者可以定义各种类型的属性。当调用者想要获取某个属性时,可以通过getAttribute获取。作者的设计意图是提供一个方便的类型转换函数,封装这种类型强制的代码,防止这种糟糕的代码泄漏到每一个调用这个方法的地方,假设调用者肯定知道被查询的属性类型是什么(属性由调用者自己定义)。如果这里的类型转换有错误,就会抛出运行时异常,这是写代码时必须处理的bug。  这里的分析很有道理,在我看来完全可以接受。试想一下,如果我们返回一个Option,每次调用都需要处理类型转换失败,调用者应该如何处理呢?看来只能扔到上层了。其实作为这里的来电者,可能会很奇怪。明明知道不会抛出异常,为什么还要显示异常?而且由于可能有很多这样的调用者,每个地方都需要处理这样的异常,我们的代码实际上变得更糟了。回头看这样的讨论,谈不上它的价值,至少在我看来是低效的。如果我们多一点耐心和宽容,写代码的时候先听作者的话,认真听听别人的考虑。我们可以直接避免这样的讨论吗?我们的合作更顺畅吗?  耐心和宽容其实对我们的TL有更高的要求。面对一些经验不足的团队成员编写的代码,有时即使存在非常明显的问题,我们也需要虚心耐心地听取作者的解释,迁就他的问题,然后给出合理的建议。只有这样,团队成员才能感到自己受到重视,经验不足的地方,需要努力的地方。  一些小建议  我们每天与不同背景和经验的团队成员合作。每个人都可能很容易不同意,我们无心的意见也可能伤害到别人的自尊。怎样才能让自己更有耐心和宽容?这个问题可能是每一个成熟的职场人都必须经常思考和实践的问题。大家只有做好这一点,才能在日常工作中沟通更顺畅,合作更高效,相处更融洽。  ThoughtWorks是一家反馈文化很强的公司,反馈技巧也适用于培养更好的耐心和宽容。为了有好的反馈效果,我们通常不会直接指出对方的问题,因为我们观察到的问题通常只是基于事实的猜测,我们不一定知道其内在原因。那么,第一步就是说出事实,听取别人的解释,然后检验自己的假设。如果对方根本没有这个问题(之前的假设不存在),那我们的反馈自然也就不存在了。出现问题要适当引导他,让他找出自己做错了什么,然后主动改正。当然这个时候我们也可以分享一些自己的经验,给出一些自己的建议。这样的反馈其实是需要耐心和宽容的。  我的另一个亲身经历来自卡耐基的书《人性的弱点》。相信很多同学都看过这本书。对于如何指出别人的错误以及如何提出建议,它给出了许多行之有效的方法。这本书不像很多“成功学”的书,似乎只要读一读就能成就如此伟大的事业。这本书更多的是教大家如何追求内心的平静,如何建立更和谐的社会关系。读完这本书,我们或许会少一些抱怨,多一些付出,同时也会更加满足和快乐。  这里有一些书中的语录,分享给大家。  如何指出别人的错误?开始以赞美和真诚的欣赏来教导他人,这样他们就不会觉得自己被教导要提出一些他们不知道的事情来提醒他们已经忘记的事情在批评对方之前,你不妨谈谈你自己犯的错误似乎很容易改正。使用请求、建议、讨论、赞美和问题。不要用命令的语气来挽回别人的面子