修炼3:你是个程序员,你有程序员思维,你可以的。
“你熟悉Perl么?”经理Francois把我叫到他的办公桌旁,一脸严肃地问我。
“泼~饿~破啥?……如果我的英语没那么差的话,这个词好像是……珍珠吧?”我偷偷掏出“文曲星”电子词典查了查这个单词。(对的,那个年代手机还不能查单词。)
“好像是一种编程语言,程序……总之有个项目,需要这个技术。”经理似乎被我说得有点不自信了。
“Perl, Perl……没听过。”我试图用法语音标发这个英语单词的声音,有个小舌音,所以显得很滑稽。
“不要紧,我们需要的是会编程的人。编程你会吧?上个项目你不是干了几个月么?”
“我写程序的时间不长,只有这几个月的经历……”
“你是个程序员,你有程序员思维,你可以的。”
这个时候我明白了经理不是在征求我的意见。
上一个项目里只呆了大半年,就被迫从项目上下来了,因为涉及到军方项目,比较敏感,对信息管控得很严,我们办公室逐渐地按上电子密码锁,墙上也按了监控和对讲机等等。
“我这么大一个中国人在项目里,都没有人担心,却装密码门、监控什么的,这不挺搞笑么呢?”我跟PM1开玩笑地说。
PM1没有笑,只是若有所思地挠了挠下巴。
第二天我就被通知准备下项目了,“客户觉得中国人的身份参加这种军事级别的软件开发项目比较敏感……” Francois突然过来跟我说。
如果说学到了什么,那就是,有些玩笑话不能跟谁都乱说。
PM1虽然坑了我很多把,但是下项目的时候,他跟我进行了一次谈话,对我后来有很大帮助。
“Ying,你做任务很快,跟最开始完全不是一个概念,这是好事。”
“嗯 嗯,谢谢夸奖。” 的确是事实,我做的就是很快。
“但是,作为一个工程师,快,并不是最重要的。做完之后,多花一些时间来优化,来思考,这才是工程师应该有的节操。你的同事们,虽然做得慢,但是代码质量要比你的好很多。”
“哦……”原来在这里等着我呢。
“所以,请慢下来,把事情做好,这是我作为你的项目经理给你的最重要的建议。”
这次对话栩栩如生地印在了我的脑海里,虽然经历了十多年,我的认知这一次被打翻在地的场景,依然历历在目。我没有预料到这个评价,也一直认为越快越好,然而我却没有好好思考。
也许这才是程序员应该有的思维。
在后来国内的职场中,“程序员思维”经常多多少少透露着一种贬义,经常是产品经理或者项目经理用来抨击程序员做事不考虑市场和人情等其他因素的时候,祭出来的狠招。
例如:“这个事情上,你不能有程序员思维,需要考虑到客户那边的真实情况。” “这个产品的设计,要站在用户的视角,考虑交付价值,而不是程序员思维。”
这些话我们经常能听见,似乎在传达一个概念,所谓“程序员思维”,就是呆头呆脑只会写程序的思维,就是你让我做个A功能,我就做个A功能,让我做个B功能,我就做个B功能。这就是程序员思维。
然而,当时我的理解可完全不是这样。
Francois把我安排到了另外一个项目上,具体情况他也不清楚,反正就是需要一个程序员,会Perl。所有的信息就这么多。
到了项目上之后,一个有着宽大肩膀,高大挺直的阿拉伯大哥接待了我,他是项目经理,叫Fouzzi。后来接下来几年的相处中,我意识到,这是一个极好的项目经理。甚至一直到现在,十几年过去了,他都是我所接触过的项目经理的天花板。
“欢迎啊!Ying,我们一直想找一个有程序员思维的人来帮帮我们。听说你在上一个项目上是程序员,而且做得不错!”Fouzzi一边搓着自己的络腮胡,一边高兴地说。
“哈哈,过奖了。Francois说的吧,你知道他的。”我笑着不好意思地说。
是的,客户经理的嘴,骗人的鬼,大家都知道,专注吹牛皮二十年。
先说一个小插曲。
在Fouzzi首先在办公区的咖啡室里跟我尽可能地详细地介绍了业务,介绍了一下技术要求,客户期望等等内容,期间一杯又一杯地请我喝着咖啡。
他当时想当然认为我很喜欢喝咖啡,我也表现出来很高兴他请我喝咖啡。然而这么持续几个月之后,我突然想起来问这个问题:
“你怎么好像不怎么喝咖啡啊,Fouzzi?我看你请我喝的多,自己喝的却很少?”
“对啊,我不是很喜欢喝咖啡。”
“哦,我也不喜欢。”我顺口说了出来。
“啊?我看你喝得很快,以为你很喜欢喝咧。”Fouzzi睁大眼睛,摇着头说。
“我喝得快是因为难喝啊。”
“看来我给你买咖啡的钱应该花在别处啊……“
“但是我现在好像已经喝习惯了……”
所以说,好的项目经理特质之一:得请人喝咖啡,无论对方爱不爱喝。
作为一个项目经理,Fouzzi当然也需要预估时间。我来到项目的第一天,他就问我了。
“Ying,这个项目,预估一下,得花多少时间?”
我的思绪马上飞回到第一次与PM1估时间的回忆里了。
“嗯……这个真的没办法估计啊。知道的信息太少了。”
Fouzzi没有坚持,“是的,但是我们需要有一个时间来面对客户。这个时间并不是真正你开发完这些功能的时间,而是这个项目的周期。”
看我没大懂,他接着说:“只用告诉我,是三天,三周,还是三个月?”
我当时就笑了,这种预估的方法并不是之前原来PM1采用的,后来在敏捷项目开发里,才明白,这种也就是“T shirt size”估点法,无非就是“大、中、小”。这种估大中小的方法比估计时间的方法好太多了,后来我才明白。
“两个星期学习新环境,学习Perl语言,然后再开发估计要一个月以上,测试测试,然后优化优化……三天或者三个星期肯定不行。”
“那么就定三个月了。”Fouzzi愉快地合上了他的记事本。
当时虽然觉得定得很草率,回想起来,里面其实是大智慧。我们其实只需要确定一个时间节点,并不是要考核是否按时按点完成一个任务。其实确定“大”,“中”,还是“小”就够了,花很多时间去精确到哪一天做完什么功能,其实并没有什么很大的意义。
我的印象中,项目开始的头几个星期,在团队小伙伴眼中,我对于其他人的工作没有任何的帮助,反而需要占用他们很多的时间回答我的各种各样的问题,所以自己每天上班会谨小慎微、小心谨慎的。幸好Fouzzi一直在团队中给我抬庄,反复跟大家说我是个“程序员工程师”,有程序员思维“,讲述我做的事情会如何如何帮助到团队,大家也都逐渐地对我的产出有越来越强的期待。加上团队的氛围也很好,一起吹吹牛,一起吃午饭,下了班一起打打游戏,大家也都成了私下里的好朋友。现在回想起来,这个好的氛围是帮助项目成功的第一步。
这也是人生中第一次觉得,原来程序员是这么厉害的一个角色,简直就是救世主化身一样。几年之后,Fouzzi跳槽离开了公司,我们团队一起聚会的时候,他仍然还在说,“我给团队留下的最大的财富,就是团队里有了你这样一个程序员。”