在日本当程序员是一种怎样的体验?

经常有人问我,在日本工作是一种怎么样的体验?如果用10分满分来评价的话,我大概会打8分。不管是工作环境还是收入水平,总的来说还是令人满意的。比起国内各种大大小小的公司粗放式的野蛮生长,日本的公司则更加规范化,制度化,即使它依然遵守一些陈腐的规则,但至少能保证每一个认真工作的人都能体面地有尊严的活下去。

如果算上大学时的打工经历,我在日本的工作经验刚好整整一年,应该有资格来说说在日本的工作体验。也许在国内的人看来,在异国工作总是充满神秘感和新鲜感的,生活应该是多姿多彩的。但我觉得,其实不管生活在哪里,做的什么工作,开心和糟心的事情一样多,日子依旧离不开柴米油盐。并不会因为逃离了原有的环境,生活就因此放你一马,该遇到的困难依然会遇到,该遭受的挫折怎么都躲不开。

加不完的班和开不完的会

在日企工作的缺点和优点一样明显,加不完的班和开不完的会永远是常态。当下班钟声响起时,每个人都十分自觉的坐在自己的工位上岿然不动。按时早走的人反而要打招呼说声“抱歉,我先走了。”

为什么总是有这么多干不完的活?我觉得跟固化的工作流程和日本人严谨的做事态度有关。

中国公司的工作模式是自上而下的领导,员工往往是接到任务被动执行。而在日本公司则刚好相反,大大小小的项目都是自下而上的推动,接到任务之后自己安排预算和进度,层层上报通过之后再着手执行。哪怕只是修改小小的一行代码,都要经过直系上司、测试、品控的“三堂会审”,各位大佬review通过之后才能上线。

而每个部门都有每个部门的规矩,要想通过review,光是写各种各样的申请书和会议预定就足够花掉一个整个上午的时间。我每天除了读代码,改代码,大部分的时间都花在了这种无聊的重复作业上。更不用说遇到紧急情况需要修改bug时,要在一天之内走完所有的流程,着实让人心累。

在日企待久了,我越来越觉得自己根本不是想象中充满创造力的程序员,而是流水线上的普通码农。我不过就是巨大复杂的金融系统里的一颗普普通通的螺丝钉,换了谁都可以替代。

工作安排细致入微、井井有条

我尤其佩服日本上班族的一点就是Excel用得出神入化,令人惊叹。不管是项目管理还是各种申请书,他们都可以做成漂亮的表格,让人一目了然。

比如公司目前在做一个升级系统服务器的项目,什么时候开始配置服务器初始状态,什么时候迁移数据库,由谁负责,由几个人花多少时间,什么时候该完成都安排得清清楚楚,井井有条。甚至连操作步骤都写得十分清晰,不管是新人还是老手,只要按照安排好的顺序执行就可以。

我们每天下班前都会在Excel里填写工作进度,每天都会自动计算出当前项目的工作进展,提前了或者是延迟了一看报告就明白了,更变态的是时间精确到每个小时。实在是让我不得不佩服得五体投地。

技术氛围趋于保守

如果是抱着“技术改变世界”的想法进日企的话,我还是想奉劝一句,这里不适合你。

我刚接手到日本人写的代码时,简直用颠覆三观来形容也不为过。几乎全部是用函数式编程,根本不是我所学的面向对象编程。而且前后端代码混合在一起,十分不好维护。所有变量命名风格也极其不统一,日语和英语混用。数据库里的字段名竟然全部都是日文,比如下面这段SQL感受一下。

1
select 商品名,单价,数量 from 商品表

这不是用来打草稿的伪代码,而是真真实实在现实中正在使用的。每次写SQL查询数据库的时候还要不断地切换输入法,也是一大糟心的体验。

由于维护的是陈旧庞大的金融系统,日本人更加注重是安全性而不是易用性。你跟他谈“用户体验”什么的基本无效,想要使用一些开源的外部框架更是难于登天,面临的第一问题就是“你如何能保证开源的代码没有漏洞?”想要做新的尝试就会面临风险,而只要旧的系统还在安全地运转,就不会有人愿意冒着风险去尝试新的技术。