老师教我们怎么写程序,但从来没告诉我们在公司里,会有个叫做 PM 的人每天分派作业给我们,还逼著我们赶快做完。这是许多软件工程师进入职场的第一个惊喜。隔了不久,还会发现,这些可能把你压得死死的 PM,多半一行程序都不会写。于是我们会面临一种很矛盾的心情,有时候会是一种有点被欺负的心理。这篇文章是前一篇文章PM 如何突破工程师的心防的延伸,我们讨论的是工程师在这样状况下的生存之道。
(1) 提高自己的能见度
在非常多的公司,上层的老板或公司的大老板只看得到一个 project 的 PM,而看不到背后辛苦的工程师。也就是说,你的努力和成果,被遮敝了。我一直相信在职场上,让自己在老板或其他同事前有「能见度」是重要的。能见度除了在很多状况下(会议发言、讨论…)可以显现出来外,提供一个我有个朋友很厉害的一招给各位参考。身为一个工程师的他,在每个大的 project 进行完后,都会「不经意」的寄出一封「谢谢信」给参与这个 project 的每个人,顺便 cc 给本来根本不知道他在做什么的大老板。信里面一一点名感谢每个人给他的指导和这个 project 的协助。这种信每个人看了都很高兴,最重要的是最后大老板也对他有了深刻的印象。
(2) 不要每天只埋头写程序:
工程师大部份很喜欢埋头写程序,因为这是自己最擅长,也是最不花力气的事情。但如果你每天 100% 时间写程序,我保证你会自我感觉良好,但是所有人都不知道你在做什么。所以也许该换换策略,让自己的时间有多一点的部分是用来「表现自己」。「表现自己」不代表做一些表面功夫浪费时间。而是以你的角色,来参与讨论,给出有意义的建议。工程师很喜欢只用电脑和其他人沟通,想要进度都用一个系统来追踪,想法都用 email 来讨论。在职场上,很重要的是你要学习少用 email,多走过去和那个人说话。也许走过去多花了 1 分钟,但是你和其他人互动良好,会让你在职场上过得比较顺利。
(3) 站在老板的角度想事情:
工程师由于角色的关系,非常容易会站在「技术」的角度想事情,但往往常被主管否决而觉得灰心。公司的想法通常和 PM 的想法比较接近,都是站在公司的利益想事情,极少用「技术」的角度想事情。你要试着跟他们想的一样,你的日子才会过得快乐。举例来说: 假如我们公司现在要输入 10000 笔资料。有两个方案,方案A是「手动输入」,方案B是「用程序自动汇入」。方案A要请 10 个工读生,一笔一笔输入几乎都没有差太多的资料。方案B是支无敌厉害的程序,你开发一天,程序跑 3 秒钟就全部完成。但评估起来方案A的总体成本比方案B还要低。我相信极大多数的公司经营者,都会愿意找来 10 个人,做着重复的事情,一笔一笔 key in 资料。如果你以工程师的角度来想,你可能会觉得「这个这么简单,一支程序就好了」,然后开始觉得老板选择方案B真迂腐。你要试着让你的大脑跟公司的利益 sync,这样会让你好过很多。因为绝大多数的 PM 都知道他们的大脑要怎么跟老板 sync。在老板面前让自己显得比 PM 聪明的方法只有一个,那就是大脑和公司利益的 sync 做得比 PM 还彻底。
(4) 用 PM 害怕的弱点有效去争取更多开发时间
PM 很喜欢每个东西都如期上线,如果提早上线就更好。很多人会因为 deadline 而跟 PM 翻脸,这是不智的。回到我那位工程师朋友的例子,他会和顏悦色的对 PM 说「我可以每天熬夜来把它做完,有可能可以如期上线,但我知道它会出现很多『我们』现在都没想到的问题,那可能会让老板(或客户)觉得我们很不仔细。但如果你可以帮我争取多一点时间,我可以让它品质好很多。」对 PM 来说,除了要「快」以外,东西如果出来很烂,也打到了他的痛点。我的工程师朋友用这个方法帮自己争取到了比较长的开发时间,和更好的睡眠。
(5) 用 PM 的语言和他沟通
很多工程师会习惯用自己的语言和 PM 沟通,于是造成沟通不良。我们得试着让自己对他们的谈话,是世界上任何一个人都听得懂的语言。尽量少提技术的术语,尽量少让 PM 觉得你用你的技术优势在打压他。因为 PM 不可能学会工程师的语言,所以你们唯一能沟通的可能,就是你学会用 PM 的语言。
(6) 变成工程师团队里面最受 PM 们欢迎的人
你会发现,如果叫 PM 们投票,从最喜欢合作的工程师,排到最不喜欢合作的工程师。大家的清单常常非常一致。而且你会发现,在清单名列前矛的人,通常在职场上容易步步高升。所以,想办法变成那个人吧! 因为 PM 们对你的评价,往往在公司里,和你的工程师主管对你的评价同样重要。
(7) 上班前三个月,不要试着改变公司任何东西
公司的系统、公司的 project、流程,所有的东西。会是现在这个样子,都必定有它的原因。有理性的原因,也有不理性的原因,也可能它的原因就是没有原因。但绝大多数的公司找你进去,是想要你把一个东西,在他「现在的架构」下开发出来。在前三个月,如果你觉得大家用的开发环境很烂、测试的流程很烂、任何平台很烂。请先忍耐一下,因为除了非常非常 open minded 的主管和同事,绝大多数的人不会对你刚进来就想改变一切的想法太欢迎。
(8) 归功给 PM:
EQ 好的 PM 会把 project 归功给工程师。但作为工程师的你,如果 EQ 够好,应该再把它归功给 PM。不要因为这是你写的 code,就认为这是你自己做出来的。因为这样除了自己感觉良好外,对职场生存没有帮助。想办法「言必谈 PM」。把自己和 PM 当成一个 team,这个 project 是我们一起做出来的。虽然很多 PM 会戏称自己是在旁边帮忙打杂的,但是他会很感谢你很体贴的把一些功劳归于他。
(9) 不要为了 enjoy 自己的成就感,浪费公司的资源
很多工程师喜欢把公司当 lab,去试验一些新的技术。如果这对公司「真的有帮助」的话,那当然很好。在做这些事或提议前,请试着用老板的角度想,在公司利益最大化的前提下(而非个人学习或成就感),他会不会打从心里支持你做这样的试验。如果不会,那就千万不要做。因为在你做的很开心的同时,别人可能觉得这只是在浪费公司资源。
(10) 变成一个更像 PM 的人
在技术上你应该向你其他工程师同事看齐,但在「性格」或「行为」上,通常你应该去模仿 PM team 的人。请相信我,在绝大多数公司,「性格」和「行为」近似于 PM 的工程师,在公司里是最吃香的。
写这篇文章,也许还会再得到一些批评。但我只是单纯善意的,想告诉工程师们。我们应该提高自己的能见度,适度的让其他人看到我们的表现。以及让自己变成一个外表看起来像 PM 的工程师,通常在公司里会过得蛮好的。很多工程师会觉得自己被 PM 欺负,但 PM 通常不会欺负长得和他们一样的人。如果你喜欢这篇文章,也许你可以再看看这篇: PM 如何突破工程师心防?