先做人,再做技术

标题来自老赵博客的副标题: "先做人,再做技术人员,最后做程序员。打造国内最好的.NET技术博客。" 的前半句。

先讲一个发生在自己身上的故事吧(不太会讲故事,啰嗦了一些,凑活听吧):

今天商务的同事让我帮忙统计两个渠道的留存、付费等相关数据,这本是信手拈来的事情,现成的脚本导入数据,然后跑出结果就可以了。商务的同事发现我们的分析结果和 TD 的数据差距略大,有一天的设备全都没有注册,脚本确认再三确定脚本没有问题,单个设备直接去扫 DB 也没有,确实没有上报这些数据。可能出现问题的环节有三块:

  1. 客户端没有报给服务器
  2. 服务器自己上报出现了问题
  3. TD 自身的问题

服务器上报这块是我负责的,我很确认是没有问题的。客户端不太熟,但是这应该是基本问题,如果有问题的话,所有数据都会有问题,基本排除客户端问题。于是我就让商务的同学联系一下 TD 的技术人员,商务不懂技术,电话通了以后让我跟对方的技术沟通。其实不管是那方的技术,对待这种问题基本上就是基本测试和排除,对方的技术先确认一下我们这边的上报流程,用一个账号单独测一下,找后续的数据分别看一下等等。其实这些方案,我都可以想的到的说实话也没帮到什么,很快就结束了通话。商务问我沟通结果,我说: "说了一堆废话, … 我再看看吧".

问题来了,几分钟之后,商务 RTX 跟我说,你最后说人家说了一堆废话,让人家听见了,那个时候电话还没挂,而且对方是该渠道的CTO,因为和我方商务总监的关系比较好,所以我们的问题直接接手速度会快一点,省的走流程。

我 … 你 … 这 …

故事讲完了,想必大家关心的两个问题是:

  1. 上面的问题,到底是什么原因导致的? 答:客户端没有上报 idfa 给服务器,导致版本更新之后所有的上报都为空,具体原因,客户端同学还在排查。
  2. "触犯"对方 CTO, 最后怎么处理的? 答:这的确是我的问题,说了不该说的话,错了就要承认。商务同学向对方道歉解释了一下,我向商务承认自己的错误并表示感谢。还好,问题并没有想象的那么严重。

之后我自己也进行了深刻地反思,自己确实不成熟,情绪没控制好。再放大到以前经历和现在经历的事情,其实这是一种行业中现象,通病。

接着讲故事:

在的风行(前公司)的时候,我主要负责的是任务模块,武师傅离开风行以后,就由我一个人独立维护了。任务模块风行客户端底层是所有模块中技术难度上最小的一个模块(人家在玩P2P,NAT,你还在写纯C++,当然没难度啊),但是是最贴近业务的一层,业务逻辑相比其他模块要复杂一些,经常需要和客户端UI的人联调逻辑,偶尔还要配合客服解决线上问题。

武师傅带了我一段时间(三个月?)就走了,我也只能顶上去,也怪自己蠢,当时光顾着自己玩技术,业务上还没怎么熟悉。刚去风行的时候,我的网络基础极差,对 P2P 更不了解了,加上底层组 科研>工程>技术(技术不怎么看重,认为是每个人都应该会的),使得我更加的反感 P2P 这一套东西。Peer, MS, Tracker, 放大比等等概念,甚至数据分析的时候死活不知道不知道 cdf 图的含义,不知道怎么绘制 cdf。那个时候我最反感的两件事情,一、开各种会(例会,晨会),二、分各种维度的数据分析,自己分析,画图,发邮件,做结论(现在想想,这是在风行学到最宝贵的东西了)。

三个月,是我刚开始适应项目组的时候(时间有点长),之后的每次的和 UI同学 联调都是非常痛苦地过程,我当时的感觉是 UI的同学感觉我对模块不熟悉,所以很不相信我。每次有问题都往我这边推,我花一定时间研究以后再推给他们,他再看一段时间,再推给我。就这样,一遇到问题就好踢皮球一样。

有一次联调是这样的,网站的同学发现问题,找到客户端UI,客户端UI感觉不是自己的问题,就找到我(客户端底层),因为是其他模块,我又找项目组中熟悉模块的人,确认可能是网站的自身的问题,我就去找网站同学说明问题,最后经过多次测试确认是 Http 服务器部署的问题。就这样垮了5个部门解决一个问题。这并不是风行技术人员不给力,他们的责任心还是很强的。

到最后我总结出一个定律:当UI同学坚定自己没有问题的时候,80%的概率问题出在他们身上,反之亦然。

再回到现在的项目组,一有问题,前端简单排查以后认为是后端的问题,后端简单排查以后,认为这是前端的问题。

在风行长时间的跨部门合作,得出一个结论:*当遇到的问题时候,要完全以解决问题为准,不要偏执于是谁的问题,一切解决了问题就好*。然而实施的时候,却不是那么简单,否则也不会出今天的问题。

通常来讲,出于理性,我会以解决问题为准。但是当遇到不好排查的问题以后,前端的人也确实认真地查了很久,我也确认了半天。半个小时、一个小时也许是极限了,过了大家的可忍受点以后。这时候,*我们通常下意识地会把"找出问题改成找出是谁的问题",程序都是对自己的代码总是莫名的自信,一旦开始我要证明是你错了的时候,最后问题就变质了*。对立面似乎是这样的,项目组内,前端和后端对立,研发和运维对立的时候,我们一起干运维;研发和商务运营对立的时候,我们一致因为是他们的问题(他们也可能是这样);当到公司层面的时候,比如这次的问题,研发和商务的同学时间一长就都怀疑的 TD 的问题,而不是我们自己。

在平时工作沟通的时候,我很注意自己的语言表达,尽量不把个人情绪进去,大多数时候不会出什么问题。但是当遇到一个简单地问题反反复复的沟通,当遇到对方已经不耐烦的认定是你的问题的时候,又或者我自己做一件事情做的很 Happy 的时候,打断一次可以忍受,反反复复的打断就有点受不了了。今天和对方的 CTO 沟通的时候,从语气上可以感觉对方对这件事情很厌烦,给我的感觉是懒的管这种破事,但是处于责任又必须解决。打电话的时候,我还是可以好好沟通的(也处于我的责任嘛),挂了电话就下意识地说了一句: "说了一堆废话"。

后来换位思考,如果我是他,每天有这些蛋疼的问题,没有耐心也是正常的,问题还是出在我身上。

"先做人,再做技术",并不是装B或者刻意把文章往做人身上套,而是时刻提醒自己注意自己的言谈举止,提高自控能力,这样才能不断地提高自己的职业素养,让自己变的更好。

谨以此文告诫自己,控制情绪,谨言慎行。

Date: 2015-08-18 00:00:00

Author: JerryZhang