这阵子没有更新博客,就是工作的原因,和父母做思想工作,整顿自己的心态等等。也算是告一段落了。 今天是辞职后的第二天,原本一直在酝酿这样一篇文章;从网上许多讨论对日开发的文章来看,我接触到的东西几乎只能算是皮毛,不过仅以这些皮毛就可看出对日外包的一些端倪。倒不是抒发不满或临走了黑一下原来的公司,只是觉得这样的经历毕竟来之不易又感叹颇多,于是打算记录顺便与各位同学分享。

鉴于保密协议与职业操守,以下文章内容涉及的公司名均不提及,涉及业务内容也尽量以互联网上大家都熟知的技术方面为主来讨论,各位同学请勿对号入座。 以下经历是某作为一个热爱程序员为立场的看法。

一、工作前对日包的看法

某并非重点本科的毕业生,和很多人一样,甚至可以算是二流学校(专科)的毕业生,带着一刻热爱计算机技术的心投身于这个专业乃至工作在这个行业。不过临近毕业时很迷茫,虽然有点技术(现在看来实在算不了什么),但对社会尤其是计算机行业这方面完全没有概念,所以在学校的推荐下,进入了一家日资企业。 关于对日开发的认识是从老师那听来的,学校里有前辈进入了用友软件,还在开学典礼上代表老一届学生发言之类,总之那时在自己眼里仿佛发着光的活菩萨似的。自己也对日语有些兴趣(自然不是在工作方面,之后会提到),所以和同学相比总算有个实实在在的目标吧。

二、面试经历

当老师把某和另外几个同学推荐过去笔试时心理并不抱很大希望,只是做题——等结果而已。不过意外地只有某一个收到了那家公司面试即复试的电话。 由于是一家小公司,所以面试时部长级别全员出动那是很正常的事情,带着紧张某磕磕碰碰地通过了面试环节。这里想提一下,后来进来的不少新人都说是自己找来的,所以对某来说某甚不如他们——学校推荐、第一次面试就成功等等——这对个人的成长是极其不利的,后来某自己在外面寻找下家时多次面试便证实了这点。 映像中比较深的一个失误来自有个问题是“如何抽取数据库中的数据”,当时只和同学用php+mysql做了一个简单的blog系统的某似乎着了魔地说VB中利用data控件来绑定数据源来抽取数据,连最基本的sql都忘记提了,被怀疑了一通。事后某算懂得“多说多错”的道理,瞎扯结果把自己给害了。 面试后自我感觉很差,想着基本完蛋后,过了大约1个多星期人事管理就打电话来说某通过了面试,可以前来实习,OK的话就可以转正之类的。当时自己想也没想就答应了,其实有蹊跷,那也是最开始半年后才明白的。因为自己基本只有windows下的开发经验,所以毫无悬念地(也是后来才知道的)进入了某个开发windows平台下以VB6的web ocx + asp脚本搭建的ERP系统(全套框架是日本人在上个世纪搭建的)。事后想想和某填写简历关系颇大——只会windows平台,会.NET/VB6/MSSQL,没有写JAVA——事实上到现在某的JAVA还是非常“入门”。

三、实际工作

这里有几个概念要先解释一下。在对日项目中,职位一般有分作以下几个级别。 日语中程序规格说明书叫式样书。 日语中的纳品就是指交付。 PM Sr.SE 项目经理(一般是开发部长/副部长级别) PL SE 项目主管(一般负责项目跟进、管理下面级别的人员、撰写修正式样书、探讨小范围的业务逻辑) SL Sr.PG 高级程序员(介于SE和PG间的角色,分担一部分项目管理、设计方面的工作,负责较复杂的编码工作) PG PG 程序员(最底层人员、拿最低的工资,干最累的活)

1、直接和程序员相关的部分

2009年1月在分配到具体岗位后,和同事们逐渐熟悉起来(这里可大约花了将近1、2个月时间),最开始还做这套历史悠久的ERP系统的较新版本(采用VB.NET+MSSQL,还分有network和standalone版本等),而从5月份开始则做前面提到的老版本系统,说实话,那时开始对这东西已经有点不耐烦了。 这里某解释一下我们公司——主要是我们部分的——主要工作,客户化标准程序,就是日本人在很早就做好了一套符合日本那边业务逻辑的ERP系统,我们负责的外包工作是非常下游的,绝大部分的工作都在编码,有时有些项目会涉及到详细涉及,但由于是日本人开发的框架内部做的东西,所以基本上也只能跟着既定的设计模式走。在测试方面也是冗长而又没有效率的,最终纳品后日本那边还是会详细的测试,甚至测试得比这里还严格,有问题再发回这边修改,这个阶段叫做检收对应。 首先要澄清的是,并非所有对日都是做这个的,某的经历由于是在目前这个部门专门针对日本那边某个公司的特定ERP项目做客户化开发,所以才会如此单一。 这里针对具体工作,某想谈以下几个方面的经历:

1)、框架

不论新旧系统,均采用了据日本人称历史长达30年的业务逻辑系统,所以框架可谓非常成熟,同时也异常繁琐,整个系统由共通的基盘将许多重要部分封装,而具体到每个程序中时对系统的依赖程度可谓彼此不可分离,具体来说某个系统基本设定中计算消费税的功能,在其他程序中需要使用时必须使用共通做好的部件(日语中叫部品)来计算。 这样做的好处是封装掉后完全不必理会实现的细节可以使用,但随之而来的问题就是当初的设计和如今客户化的功能细节一旦相抵,代码就无法重用,基本只能靠自己来写,日本人一般是不同意修改系统共通的代码的。区别只是改用了.NET而已。这也是日包相对稳定的原因,只要肯深入他的技术,适应这方面的人才还是很缺乏的。

2)、编码工作

从前面的框架部分可以看出具体每个程序对整个业务系统的依赖程度之大,接着程序内部为了要实现编码的规范与便捷(实际也便捷不到哪里去),程序的启动、设置、各类事件的响应全都做了非常死的规定——甚至到了不跟着标准做,就绝对做不出正确效果的地步。这个也是网上对于对日软件外包批判最多的地方,束缚程序员思想。长此以往,程序员的创造性思想甚至创造性的工作积极性必会遭到影响。 从个人水平来看,编码工作的难度不能算高,基本上做过一遍的功能,以后就是复制与粘贴,如果自己不带着改进算法,研究代码效率的心思,编码工作本身就已经可以看作是机械劳动——吃透功能,翻看编码历史,找出类似代码段,复制粘贴——仅此而已。

3)、技能

这里不得不提一下公司对技能的要求不高,对日立项目那边某没做过不清楚,但从我们部门其中有个项目算借用过去时的编码看,也算不上很严格的编码工作。按照某的看法,只要是对编程有一定自主想法,基础扎实的都可以胜任。关于具体事件的吐槽,某放在后面部分。

4)、学习

程序员最大的竞争力,某认为并非某个时间点的专业技能如何如何强,而在于有一颗怀有求知欲的心和不懈挑战的学习技能。以前月光博客里有篇文章提到了老程序员其实是很不愿学习的,因为IT行业技术的更新日新月异,要紧跟技术的步伐是件累人的事情;在这家公司尤为突出,这里要吐槽一下部分员工的思想,和网上说的一样,工作接到的项目需要用到新的技术,就派一个人去学习,最多学到能应付项目就OK的地步,之后不用到,那也就相当于白学了——当然这个看法可能太过悲观主义了,但事实是一个程序员如果没有自主意识地或者说带着心思地学习一项技能等,那收获可能是零,甚至还会影响原本已经掌握的技能。反应在实际工作中,经常会有某和某个同事之间的场景:

第一种 同事:要实现某个功能你做过吗? 某:做过啊,(口头解释给他听) 同事:你代码呢?让我抄一下吧,太麻烦不高兴看了。 第二种 某没做过,但仍给他提供了某些实现该功能的方向。 同事:不用说了,我去问做过的人。

好吧,可能是某小人之心,但某并不认为这样是一个好现像,在某看来他虽然节省了自己动脑的时间,不过某遇到的情况下,这位同事在下一次还是会问同样的问题。 其实某认为在工作上的学习并不仅限于专业技能的学习,有很多日常生活工作中的东西值得学习,它可以是一种方法,一种考虑问题的思想等。

2、其他方面

外语能力,它可谓是一项异常受用的技能,说近点可以看外文的文档,说远点对生活、其他方面的工作均有好处。但是在日企有目共睹的是,公司重语言而轻技术,这在前面提过,也是网上大家对日包开发的一大特点的共通看法,它和日企文化不无关系,具体来说某个副部长只有过银行项目的业务经验,编码方面甚至连实习生都不如,他主要负责项目管理与测试,也可以做的很稳定。另外还有在某工作的2年不到的时间里新进的新人能力一批不如一批,一问下来为何如此顺利,答曰都是日语JLPT考试2级通过者(和某当年一样)。 这家公司当然也有可取之处,宽松的企业环境算是可圈可点,不过日企的氛围也带来问题,既然不会轻易辞退员工,员工有些霸占资源,比如经常加班,某些加班实则没有必要,除了领取加班费,加班之间的电费之类的开销也决不在少数,还有员工的积极性也成问题,既然没有很大的压力,大多员工均采取消极怠工的态度。

四、转折

既然有了以上诸多的现象,那么促使某辞职的原因究竟为何呢? 首先看这家公司为我提供了什么好处。

1、相对稳定的工作环境,比较少的加班,缺乏竞争力的关系,不会轻易辞退员工的企业文化。 2、可能有去日本的BSE机会。(某辞职时正好有这样一次) 3、部长对某的提拔,每年两次加薪,幅度自然很小。(这是在某提出辞职后知道的,她安排难度颇高的程序给某,是说某领悟能力高,有培养的意向。)

再看某觉得不合适的原因:

1、在做了1将近2年后,某依然拿的是只有3K3的工资,不算低?那么新进的新人就能拿3K,某为何还要苦撑呢? 2、工作内容乏味,前面提到的实际工作内容几乎就是重复贴代码,老套的框架,代码能发挥个人创造性的地方实在太少。长此以往会影响到程序员的积极性,对技能的成长也没有好处。 3、某今年还是22岁,有人说发展日语去日本做几年BSE(协调开发工程师)回来爬管理层,报酬也不会少……某只能说某现在就是一根筋没想通吧,总想年轻时闯一闯——有个鲜活的例子就是某个同事今年25岁,不算年龄大吧?可是人家结婚了,还是外地的,技术不过硬,现在跳槽有心无力,工资呢?比某多拿200而已……他可是做了3年啊。

那么,某可以总结一下某认识的对日外包的特点,主要针对下游外包

1、技术方面要求不高,合格就行,日语能力、职位等级和工资挂钩。 2、工作相对稳定,内容相对单一。 3、工资饿不死人,但也高不了哪里去,除非是高级的管理职位。 4、编码很死,设计也完全跟着日本人的框架走。

所以某建议对自己技术没信心,会日语的同学可以去对日外包做做,不至于很辛苦,但可以混到一份不错的工资,而在技术级其他方面有诉求的同学还是直接跳过吧。 顺带一提,全日资的企业在交金方面是很正规的这点可以放心。(除了恶心的交发票问题)

以下是比较杂的一些看法。 1、前面提到了月光博客的文章,调动程序员的工作积极性其实不外乎那么几个方面。比较可笑的就是在做这个ERP系统时,日本客户还专门派了总科长来这边开激励会,私下有个同事的看法很实在:开什么激励会,要求别人努力工作不带钱来谈生意,也太没有诚意了吧? 当然这也只能私下说说。 2、上次去RubyConfChina2010现场,其中某位日本演讲者就说外包必须死,指的就是这种下游的外包,在日本人面前,我们就是廉价劳动力,就是编码机器——是不是你无所谓,只要有人来编就OK了。这种性质的工作,报酬会高吗?当初进公司就有前辈就劝某早点走,如今看来是有道理的,可回头一想您干吗不走呢?原来公司早期发展时待遇还是不错的,你说这样一个环境里还能拿5位数的工资,您愿意走吗? 令人痛心的是那些新人,还在往这坑里跳,有心人醒悟得早还来得及,醒悟不过来睡死过去了呢?堪忧呢……

这里就不表什么希望了,该怎么整就怎么整吧。

欢迎有兴趣的同学邮件讨论。