故事一:
程序员杨书锋终于辞职了,为这事,他足足考虑了差不多半年的时间。此前,小杨在一家日本软件公司做开发,主要外包日本本土的企业应用软件,行业产品上的嵌入式开发等(如汽车控制软件)。
促使小杨辞职的原因并不单纯是因为待遇问题,而是作为一个职业程序员,在规划自己的职业生涯时,他深切地感受到了这种成长的烦恼。
“我做了一年半的c语言开发,此前还做过一些针对日本企业的信息化软件,老实说,我真的不知道自己每天在做什么。我每天面对日文文档开发,实现那些已经定义得非常详细的函数,还有那些已经在文档上画的非常清楚的界面,它们甚至连控件上的字体都规定好了,我还能做什么呢?”
这可能还只是一个方面的原因。更多的心里冲击还来自于小杨的一帮做开发的朋友。
“和我一起开始做软件的一些朋友,他们呆在一些小得多的公司做项目软件,我们一起聚会时,他们都侃侃而谈他们的软件设计和架构,谈平台,谈一些他们正在使用的流行的技术名词。我觉得我比他们落后了,尽管在收入上我比他们要高得多。”
“我不得不考虑今后的发展,希望了解得更多,我希望今后能够向项目管理方面发展。”
故事二:
王先生在日本从事近3年的软件开发,最近回国发展。在一次技术研讨会上,我问他,在日本从事哪些方面的开发。
王先生答曰:“做游戏。”
“现在市面上哪个游戏是您做的呢?”
王先生回答说:“不知道。老实说,我在日本做软件开发2年了,根本不知道自己在做什么?每天将课长发到我桌面上的功能实现了就算完成呢任务!”
上面的故事中实际上蕴涵了很多比较有意义的话题。一个是程序员的成长,另外一个就是日本软件企业的编码开发实现模式。
(中国程序员病态的成长道路!
1. 为什么会有这样的成长道路?
国外40岁以上的程序员比比皆是。
2. 日本软件公司里面,为什么会出现程序员不知道自己正在做的是什么东西的问题?
A 因为企业成本的原因,日本软件企业分工很明确。有专门做设计的公司,公司里面几乎没有一个写代码的程序员。
B 很多小的软件公司依附大的公司生存。
C 日本软件公司已经形成了一个很好的生物链,只要你在这个生物链上找到了自己的位置,就不用担心生存问题。)
一 . 成长的烦恼
“不想当元帅的士兵不是好士兵”,那么可不可以这样说,“不想当项目经历(或管理人员)的程序员不是好的程序员”呢?多少年来,我们的IT媒体一直在替程序员们宣传和规划他们的职业人生,实际上,这已经成为一条中国程序员的病态的成长道路。在欧美,年过40岁的程序员比比皆是,正如戴习为老师一样,做了大半辈子的底层开发,从微软退休时,已经年过45。而在中国,如果超过了30岁还在写程序,就仿佛被认为是一种耻辱。
薛峰:日本软件企业里的员工的职业规划和中国程序员的确大不一样。这可能有几方面的原因,日本软件企业,不光是软件企业,其它工业企业都一样,他们的员工普遍的“忠诚度”和“职业荣誉感”要强。当然,这些企业有一些相应的制度来做保障(年工制度),比如,你在这个企业干一辈子,退休的时候,会有一大笔丰厚的退休金。
马越:另外,我觉得这个和日本的一些企业文化甚至民族文化也很有关系。
薛峰:对,这个问题往深里面说就是这样。比如,你在日本问一个小孩,你长大了想干什么?他(她)可能会回答,我长大了想成为NEC或松下的一名员工。而中国小孩的答案可能就是“科学家或文学家”。
记者:对“成功的人生”的评判标准整个都不一样。如果现在有两个人,都是40岁,一个人是项目经理,而另外一个是高级程序员,在中国人眼里,肯定认为前者就是成功的,是这样吗?
薛峰:在中国可以说是这样的。
记者:我曾经看到过这样一个故事,说是有两个人同时从美国硅谷回国创业,一个是印度人,另外一个是中国人。十年以后,他们在上海相遇。这个印度人已经成为一个非常成功的软件公司的老总,而这个中国人的公司却默默无闻,岌岌可危。印度人奇怪了,他觉得这个中国人能力比他要强,在中国比他的机会要多。中国人回答,没有别的原因,就是因为在中国,每个人都相当老板,无论你给他多高的工资,他最终还是要离开。我觉得我们的确应该反思一下了。
薛峰:日本的企业应该说等级比较森严。技术人员和管理人员也是渴望晋升的,但我感觉他们特别沉得住气。比如,我的一个上司,他在NEC呆了10年,现在才什任主任,也非常高兴。
记者:另外,中国的一些企业是否也应该反思一下?比如,前不久刚刚发生的联想裁员事件,网上甚至有被裁掉的员工发出“联想不是我的家”的帖子。我认为,从网友的回应当中,我们已经能够很充分的看出中国某些企业急功近利,丑陋,虚伪的嘴脸。
二 魔方里的世界
记者:就前面两个背景故事中的材料,这种开发模式,您觉得正常吗?
王永顺:我觉得没什么不正常的。日本作为一个电子产品大国,很大一部分软件都是针对这种产品软件在开发,如下一代智能家电产品这些消费类电子产品等。这类的软件比较注重前期的设计,比较注意文档的清晰和详细程度。当设计完成后,将设计文档分发给许多程序员实现时,作为个体的程序员当然很难知道他们做的是什么。
记者:您说的可能是这种产品软件的开发,那么对于项目软件的开发,这样也是正常的吗?
王永顺:也应该一样。我们应分析一下造成这种开发模式的原因。日本是一个专业化分工很强的国家,不管是工业企业还是软件企业都是如此。软件过程中的很多环节,如需求定义和分析,软件机能设计,软件编码实现,软件测试等,一般来说都是在不同的企业至少是不同的部门完成的。当你这个公司或部门的工作完成后,就必须留下很清晰的文档,这样才能进入下一个公司或部门的工作。
记者:那么我们可否这样说,日本的软件企业已经形成了一个很好的从上游到下游的生物链?
王永顺:是这样的。日本的许多小的软件公司是依附于大公司生存的。他们做的工作十分单一,可能就是做编码实现,它不会养即便一个系统分析员。还有的公司可能就是专门做软件设计的,它里面也可能不会有一个写代码的程序员。一个公司,只有在这样的生物链中找到了自己的位置,就可以生存。
记者:您能够分析一下,这种生物链是怎样形成的么?
王永顺:我个人认为是企业成本的原因;另外一个因素,因为每个公司都最终会发展成为只擅长做一件事情。比如,我公司里面既养一大批程序员,又养一大批系统分析人员和架构师,企业成本无疑会增大,另外,也无法专心做好一件事情。这在激烈的企业竞争中是不利的。
记者:我第一次看到日本软件过程中的“式样表”(就是国内的软件规格说明书)时,感到震惊。因为此前在做项目的过程当中,作为项目负责人的我也曾经做过系统分析和设计,撰写过“需求规格说明书”。我觉得太详细了,在UI设计部分,连窗体上改摆放什么“控件”,以及控件的长度,控件上的文字,甚至文字的颜色都写的很清楚。另外,对函数的说明也非常清楚,对函数名,传入参数,输出结果都说得非常详细。
王亚清:可能项目软件和产品软件还很不一样。。。。
记者:您觉得在这种情况下,作为个体的程序员还能发挥多大的创造性?是不是高度工业化,工程化的社会都会或多或少地忽视最底层操作人员个人的创造性,而仅仅把他们当机器(编码机器)使用?
记者:我们注意到,国内的企业对欧美的一些软件工程方法学是非常热衷和喜欢追逐的,日本软件企业对欧美的软件工程标准和软件方法学的态度?
。。。。。。