查看原文
其他

做了7年程序员,这7年工作教会了我什么?

四火 刘望舒 2019-04-07
戳上面的蓝字关注我们哦!

从毕业工作到现在,已经有七个年头,年头虽然不久,但是回过头来看看那些经历的好的坏的有趣的扯淡的事情,还是有很多东西可以总结。所有人都会或多或少走弯路,本来成长就是这样一个过程,有时候想起来会感叹,有时候会唏嘘,有时候会一笑而过。我的前一半时间是在华为,这段时间留给我很多回忆(比如这几个瞬间);后半时间在亚马逊,也给了我不少感慨的机会。下面这些故事都是我经历的真真实实的事,有的事情已经过去好久,但我不想把它永远尘封。也许你和我在某些方面,会有共同的体会。

在我说这些故事前,或者说,吐这些槽前,我想说这样三个观点。

首先,为自己工作。不是为父母,不是为同事,不是为公司,不是为项目,不是为绩效。几年以后你离开,项目的成就属于公司,绩效已是过往云烟,你获得了收入,公司得到了效益。一身行囊离开的时候,除了一些积蓄,就是你的经历,你的态度,你的身体,还有,你的技术。没有人会为你的决定买单,父母不能,亲友不能,只有你自己;没有人再会在乎你前一家公司考评得到的是A还是B,你为公司项目付出了多少、赢得了多少。感情上有无数种结果,但是事实上只有一种。这个道理很简单,但是为了明白它我花了很久的时间。

每一家公司都有它的企业文化,人在努力建立自己正确的职业观的时候,总是会或多或少被这样那样的企业文化所影响,严重的可以说,被洗脑。我有点庆幸似乎这个影响并不非常深刻,无所谓对错之分,但是人唯一可以减轻某一种激进的和单一的价值观所造成的影响的方式,就是多走走看看,不同的价值观,不同的文化,在不同的体系里面生活,形成自己的主要观点。

其次,我对于工程师,或者说程序员,这些前同事,大多很尊敬。我们在一起的时候,相处融洽,我也受到了不小的照顾。但我对一些制度、文化,以及个别人的做法,非常反感,这个反感也成为了我日后引导我学习和工作的动力之一——“不要变成那样的人”。

最后,给自己开阔眼界的机会,很多问题或者说是感受,当事的环境无法感受到,但是也许几周、几月、几年后,回过头来看的时候,有了别样的观点。所谓对错,只有在盖棺论述的时候才最公证。
到底这几年工作教会了什么?上面的这些观点只是一部分而已,看完下面的五个短小的故事,心里会有更好的答案。

1、加班

工作前几年总是加班,周一到周五平均的回家时间是晚上八点半,没有周六。周六公司根据工作的时间给双倍的薪水补偿,周日休息。加班时间大部分是为了项目的事情,也有时候是为了技术学习。项目计划都是倒排的,就是这篇文章里面提到的“进度驱动开发”。工作压力不可谓不大。在项目最艰苦的那一年,我的模范同事荣哥基本上一周七天,总会有两三天住在公司,早上起来到晚上入睡,连续从事惨无人道的项目工作。基层领导无不如此,项目经理也许编码的事情做得少一点,但是压力一点都不比程序员小。

没有武力胁迫,整个大环境使然。

如果你觉得这很正常,或者评论“年轻时候奋斗对自己有好处”,我通常不置可否,但是谁要是拿这个当正面例子来正儿八经地当面教育我,我一定吐他一脸唾沫星子。

有的同事累得哇哇吐了一地,有的同事累得发烧身体垮了,我的邻座晓君连续工作几天后,有一天突然发现眼前全黑,眼睛突然看不见了,虽然后来恢复了,但是这事儿可真够吓人的。有些变态剧情和狗血剧情,反复在身边上演,若非经历过当时那种环境,我是绝对不会相信那个累死了多少人的传言的。

最累的时间包括项目发布和性能优化那两段时间。

项目发布是项目组里面的大事,其实这个发布不实真真正正的“发布”,而是“转测试”,就是在一个开发和测试严格区分的团队里面,开发团队要把产品交到测试手里,而这个“交到手里”,是有严格的质量要求的。我们会做各种测试,会过checklist,整个团队都留下来,通常都要熬夜,有时需要通宵。

性能优化则是那种绞尽脑汁的辛苦,这个事情并不是很容易做,尤其是在一期把那些显而易见的东西优化完了以后(一段时间以后,我总结了一些性能优化的经验在这里)。领导就会给指标上的压力,这点确实很烦人。

最忙碌的几个月,一切看起来都很疯狂,但是没有人提离职,是人被忙碌麻痹了,还是折腾傻了,我不知道。

这几个月过去以后,项目组得到了喘息的机会,大家开始疯狂地走人。

南京是个不算特别大的城市,大部分的同事也没什么野心,努力工作,图个安稳,不愿挪窝,而且工作机会也不多(人家说南京的软件企业,一半是华为,另一半是跟华为打交道的)。但是,还是被逼迫到了那个份上,在接下去的半年内,项目组内的员工陆陆续续走了三分之二。考虑到小城市、公司洗脑等等因素,相较于往年的情况来看,这个数已经非常巨大了。

这个经历以后,再有人和我讲起当年加班苦项目苦的时候,我都仔细倾听,然后,多数情况下,都会说出那著名的两字箴言:

呵呵。

2、离职

一天早上我醒来,突然想到每天干的事情太tm没趣了,我想离职。

想了三天,我和当时的项目组老大荣哥说了。我和荣哥私下关系不错,我挺尊敬他,他也挺照顾我。当时荣哥挽留了我,说了一些好话,问我,开始找工作没?我老实地说,没有。

于是几天后荣哥的老大找我谈话,给我画饼,大致是说,如果你留下来,薪水、晋升,都是大大的有。我先呵呵,然后,我说不,我要走。

然后我才开始找工作,我是次年一月份离的职,我想我前一年都干满了,应该有年终奖吧。

离开半年内,我还觉得之前的故事都算人生的经历,还挺有趣的。期间有朋友还向我咨询工作机会,我说你要能吃得起苦,还想图安定,我可以把你推荐到华为,若干年以后,因为据我所知能扛的收入都不低。

我发现事实就在那里,看你怎么说,不同的说法效果截然不同。苦逼可以说是奋斗,工作压力大可以说是锻炼,大家埋头干活不知抬头看路,可以说是人际关系简单。

前一年的股票分红是公司统一分的,果然一分钱没差我,但是前一年的年终奖是基层领导做主的,结果我居然是零。打电话问差不多时间走的员工,有个案,但大部分人都是零。

我很不爽,托荣哥去问基层领导,得到的回应是,这是长效激励,是给“长期呆在公司的员工”的。意思就是,哥们你干完活了,既然走人了,这事儿就结了,互不相欠,你难道还想拿事后的报酬?

这以后还有好几人向我询问去华为工作的建议,我都严格遵照着事实,给了并不算正面的回答。而且对于年轻人吃苦奋斗的观点,我在这篇文章里给出了更多的论述。

这件事情以后,我在微博上面说:

华为是一个不错的公司,公司直发的股票还是N+1,一分钱都没有少我;可是今年初离职的员工,去年年终奖都是0,这确实让我很不理解,给我的理由我非常不喜欢,人走茶凉到这样的地步。去年离职的人那么多,我愿意拖到今年走。该反思的人不应该是我:想想为什么那么多人要离开?只是因为累吗?我不是什么老好人,不喜忍气吞声,但也不像某前同事那样对此破口大骂。不要和我讲大道理,我一度想争取一下自己的利益,但不甚值得,担忧言语,便最终作罢。曾经的同事们都待我不薄,我依然感恩在心。一个团队应当豁达、有包容,就如某离开阿里的同学依然会在生日那天收到祝福短信一样,此乃好聚好散。

3、关于代码质量“改进”

一个人做傻逼的事儿不难,难的是整个team一起做傻逼的事儿。

而最最可悲的是,我是这群人中牵头的那个。

简言之,这个事情就是公司对项目组有指标上的要求,包括FindBugs、CheckStyle、PMD、Simian等等各种工具,都有一个严格的缺陷数目限制。这些工具的代码检查规则由公司内的质量改进小组完成,凡是违背了这些工具的规则,被检查出的代码“质量问题”,都要备案。

工具本无罪,用得好确实是正面的帮助,用得不好,人玩工具就变成了人被工具玩。

如果你无法理解这一点,你可以看看这篇文章,这个故事的过程我记录在了这里。

我则是去做“工具的工具”的那个倒霉蛋——去做一个工具,聚合和显示这些工具检查结果报告,在每次项目build的时候,代码提交的时候,都用这些工具检查“代码质量”,有问题的提交会被驳回,或者报表、邮件通知。

这些工具和指标哪里是在为了“代码质量”改进啊,这些完全就变成了程序员工作的绊脚石。

天,现在看起来,我在那段时间里,成为了我最痛恨的一种人:

助纣为虐。

这是我至今无比悔恨的故事之一,而“身不由己”从来都不是什么好借口。

即便至今,因为这事儿,我依然会不断对自己说:

我是程序员,不要做反程序员的事。

4、讲下办公室政治

有人的地方就有江湖。

其实还有后半句,有江湖的地方就有人渣。

但是话还是说重了,我想大多数程序员都不喜欢办公室政治。因为他不符合程序员解决软件问题的思维和观念,也不符合我们从小接受的传统教育。但是,它毕竟是存在的。我以前以为这件事情上中国国内会比美国严重一些,但是我错了。

有些国家的程序员包容性、适应性强,很容易就接纳了这种文化,而中国的程序员普遍清高,“斗不过还躲不起吗”,受不了就撤的居多。这也是为什么中国程序员相对较少能在美国一家软件公司或一个团队呆很长时间的一个原因。

我经历的两家公司都有这样的情况,有的大有的小。其中一个非常典型的例子就是“半夜发邮件”,此半夜发邮件非真真正正的工作到半夜而发邮件,而是以显示自己的勤奋美德。而要说大的,就是每当换大领导的时候,往往就要来那么一次人员重组,大量manager和engineer离职、换组。这里的动荡是显而易见的,尽管和工程师们直接打交道的,都还远没到大领导。但依然会波及他们的离开。原因或许各种各样,而且还“个人家庭原因”居多,但普遍原因从统计学上大家一分析,都清楚得很。一些项目上的事情,让工程师不舒服的事情,都会成为导火索。这次轮到我也成为了其中的一员,但是最近走的人太多,被强留了一个多月。有时候听到有的工程师讨论,说要离开以示愤怒,但是其实呢,我们的影响都没有那么大,不会有那么多人在意你我的心境。只有提升自己,为了自己的前途才是王道。这些其他的事情,大多就随它去吧。

要有一个相对舒适的环境,工程师才可以创造最大的价值。否则,一样是工作,“他一直在工作”,产出却可以天差地别,混日子还是辛勤工作,外人还根本看不出来。能做到或者接近做到的公司和团队,真是太少了。

但无论如何,我也会感谢一下当初的选择,幸亏选择了这个行业,才有那么多可以换工作和环境,可以选择的机会。

5、转行

其实哪里是真正的“转行”啊,我只是从传统软件业转向互联网软件业而已。

但是,就这一次改变。都让我深深的感到,互联网软件在技术上已经甩了传统软件几条街;我是该离开南京那个小城市了,我呆太久了,再不出来,就更难出来了——那时候技术上、理念上,甚至心态,差距会更远。我开始面试,跑上海,跑杭州,跑北京,各路的IT公司,国企、民企、外企,到后来我都不知道面试该准备哪些东西了,各种路子,太不相同了。

改变总是很难。对于我们的“转行”而言,生活的城市改变了,工作改变了,一切似乎都改变了,但是,同时,眼界也开阔了。

我的同事晓君,前面提到的那位,决定回到他曾经梦想去的公司,Thought Works,也回老家,回西安去。我当时说,你和我一样,去北京、上海那样的大城市吧,我们都只在小地方转着圈圈,现在机会不抓住,免得未来哪一天后悔。你就甘心在西安待下去吗?你肯定还想再出来见更大世面的。他说不会的,他想回家。

他于我先离职,我当时这样劝他;到我离职,再入职新公司,我还这样劝他。

大概两年以前,他到北京参加QCon的会议,我们在一起吃牛蛙,五香味的锅,他说,他也想走,离开西安,去澳洲。我说好,但其实没太当回事,因为我觉得人有想法很容易,要做起来其实很难。走的时候我说,我们这一别真不知道什么时候再见了,你老家在陕西,我老家在浙江。

半年前,他微博私信和我聊的时候说,他要加速了。我还是没太当回事。

前几天,他忽然讲,月底就要离开西安,去澳洲了。他不甘心,决定接受挑战,这几年,他学英语,找工作。我很高兴,但什么也没多说,只是呵呵。

这事情最终被我说对了,祝他一切顺利,过上自己想要的生活。但我深知到一个新的环境中,拖家带口的,这其中的艰辛。我经历过这一步。

随着经历的增加,我更加佩服和尊重那些在面对各种困难的情况下,敢于迈出改变那一步的人。

如今,在我每天上班的van上面,一车都是博士(除了我)。我们每天一起上下班,吐槽各种工作生活上的奇葩事情,可能是一天最快乐的时间。大家都有一些悲催而牛逼的历史。比如有学雷达专业博士毕业的,家里已经两个小孩,决定转行改学计算机,这可是真正的转行。半年时间,关在家里,拼命刷题、夯实基础,顺利拿到自己满意的程序员工作offer,这让我们这些计算机和相关专业出身的人都感到无比佩服;还有一位则是最近找工作,家里已有一子,每天要照顾小孩,还有没法腾出时间,他说他只能开夜工,晚上学习。最近几个月一直在面试,已经拿到了好几个offer,package都非常棒。

我记得我老婆说过,这一行的好处就在于,不用托关系,不用送礼,只要靠自己。不担心丢掉工作,拿的钱还干干净净。

你说呢?

作者:四火,先后任职华为、亚马逊、Oracle,现居美国西雅图
链接:http://www.raychase.net/3196

如果想进技术群交流,关注公众号并在后台回复 “加群”

推荐阅读:

我为什么开通知识星球?

关于互联网公司的加班文化

我们为什么会焦虑?


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存