-I-对中国自发产生的软件企业的思考FREEZINGFIRE-II-目录第一章题记...................................................................................................................................1第二章中国软件企业真正少了什么?.......................................................................................2第三章中国软件企业的现状分析与问题的解决之道...............................................................7第四章管理和人:宏观.............................................................................................................10第五章管理和人-微观.............................................................................................................16第六章软件行业和程序员职业.................................................................................................23-1-第一章题记我只是一个普通的程序员,我所看到的一切,都是从一个程序员的角度;而我以下所阐述的一切,也都只和程序员有关。若纯以赚钱而论,目前在中国市场上,以下我所批评的弊病,也许正是赚钱的无上良方;而我所称赞的管理,也许恰是速死的不二法门。因此,若阁下是以赚钱为第一要务,请不必浪费您宝贵的时间。因为现在谁都知道,真正能让软件企业赚钱的,是市场和营销,而不是研发。与其听我一个书生空谈,不如多花些时间拉更多的单子有用。在开始正题之前,先对目前中国大陆上的软件企业进行一下简单的分类。除去国有垄断企业所属的软件部门外,我认为目前中国大陆上的软件企业有如下四种类型:一类是属于真正欧美跨国公司投资的独资或合资企业。待遇高,福利好,还经常会有出国进修的机会,是几乎所有IT人眼中的理想所在。但是限于目前的客观环境,这类公司当中,能够参与核心开发工作的,也许是我孤陋寡闻,似乎凤毛麟角。一类是日本投资的独资或合资企业,待遇在现在算不错,福利也不错,目前的业务方向似乎主要是针对中国大陆的IT服务以及针对日本国内的IT业务外包。管理一般照搬日本国内的制度,比较死板,在开发当中,发挥的余地几乎没有。特别是从事外包业务的,往往只能见到整个系统的一小部分,只能从事比较低层次的工作。一类是各种各样的,由海龟们创办的,挂着独资或合资牌子的公司,其实里面一个高鼻子的都没有。这样的公司待遇不能和前两类比,但是基于海龟们在国外受到的影响,还是比较舍得给钱的,因此待遇也算中上。只是这样的公司一般都不稳定,如果业绩不能让投资者满意,本身生存都会有困难,因此对年龄较大的程序员来说,不能算是一个好的雇主。业务方面,一般都涉及到比较热门、新潮的技术和理念,也能够独立的完成一个完整的产品或者系统。管理方面,海龟们也许没吃过猪肉,但一定看过猪跑,因此在种种规章制度,管理方法上,倒也有模有样。最后一类,当然就是目前中国大陆软件企业的绝对主体,自发产生和简历的国有或民营软件企业了。我本人工作经验4年,有幸在以上列出的,第二、三、四类企业中,都有过工作的经历。目前正准备离开一家刚刚工作了三个月,规模颇大,名气颇高的民营企业。结合我以前在第二类和第三类企业中工作的经历,对于目前中国自发产生的软件企业的种种特质,自认也稍有心得。当然短短三个月时间内的观点和想法,难免是坐井观天,种种不当之处,恳请各位斧正。不过我也听说,一个人新到一个地方,呆一个月能有一本书的感想,呆上一年便只能一篇文章的感想,若呆上几年,便什么感想也没有了。因此虽然以下的文字,不过是井蛙浅见,但我相信,应当也有其价值所在。并且,本人目前所处的这家民营IT企业(以后简称甲公司),已有数年历史,一直提供IT外包服务,与若干国际知名企业,如微软、惠普等,都有良好的合作关系,也深得客户的信赖。规模方面,作为一家纯粹的软件公司,在国内来说,也算相当庞大了。因此,我认为这家公司完全可以作为民营企业的一个优秀典型。也就是说,我认为,国内的民营IT企业,即使是比我目前服务的这家优秀的,也优秀的有限。因此,我想我们可以认为,在这家公司中会存在的问题,在其他的民营IT企业中,得到真正解决的可能性不大。我在这家公司中所观察到的种种现象,应当是具有普遍意义的。-2-第二章中国软件企业真正少了什么?我想大家都认为跨国企业与我们的中国软件企业是不同的,不仅仅在于其资本的多少,也不在于其对于员工的待遇和福利,就像大家不会认为中国软件企业不过是资本少一点,待遇差一点,业务范围小一点的跨国企业一样。(当然,我相信有很多人确实是这样认为的,那么我想先请您读完我的文章,然后我非常诚恳的请求您对于我的观点其中的错误之处进行批评。)那么,既然我们人人都认为跨国企业和中国软件企业是不同的,那么跨国企业和中国软件企业真正的不同之处究竟在什么地方呢?究竟是什么导致我们会认为跨国企业和中国软件企业是有着本质区别的呢?首先,我想请各位根据我日常工作中所遇到的种种问题,来跟我一起思考一下,回想一下,在您的公司里,是如何处理以下这些很琐碎平凡的工作的呢?以下的问题基本是从担当基本工作的技术人员的角度来问,作为各级LEADER和MANAGER的话,把问题反过来问即可。你如何得到工作的指示?通过口头、MAIL、书面还是别的方式?是否每次都是通过固定的方式?对于一项工作,你是否只需要得到一次指示就已经能够基本明确自己所应该做的事情?你从谁那里得到工作的指示?从固定的一个LEADER还是可能各级LEADER都可能给你指示?当你的工作出现疏漏和错误的时候,谁可能对你进行指正?同样,是固定的一个LEADER还是凡是你的上级都有可能?你的工作的成果如何汇报?汇报给谁?通过什么方式汇报?您的项目组的所有工作成果,包括所有的文档,代码,以及相关资料,是如何存放的?当你在工作中遇到问题的时候,解决问题的方法是什么?是否会有人和你一起关心这个问题?是否会有人能够对你提供指导和帮助?工作成果有没有定义?不同阶段的工作成果有没有各自的定义?是不是所有人都采用相同的途径,方式进行交流?有没有区分正式的信息发布和私下的讨论?格式、规范由谁发布?指定的格式、规范,LEADER提出的工作中的要求,是否都能够得到贯彻实施?工作指示的周期是多长?你可以计划到多久以后的工作?当您的项目组面对一项工作任务的时候,你是否在整个工作周期当中的每个时刻,都清楚的知道自己所负责的任务以及应当担负的责任?你是否有过今天不知道明天应该做什么,这周不知道下周应当做什么的时候?你是否有过工作一大堆,却不知道到底谁负责哪个部分,自己又不知道该做哪些工作的时候?您的公司如何来产生中层的各级LEADER和PROJECTMANAGER?是主要通过招聘手段,还是领导单纯根据工作业绩来进行任命?或是其他的手段?对于中层管理人员的产生,有没有有意识、有目的的培养方式存在?我知道我问的这些问题琐碎而平凡,然而我并不认为这些问题因此就不重要,因此就没有什么真正的意义?恰恰相反,我认为在目前的情势下,正是类似这些琐碎而平凡的问题,才是最重要的,最值得我们关注和体验的。当然,如果对上面所有的问题,您都有明确并且您觉得完全合理的实际工作方法来作为答案,那么恭喜您正在一家优秀而有前途的企业工作,也请您不必在拙文上浪费时间,以下我的种种理论,对您已经没有什么用处了。目前,软件工程的种种方法以及过程改进可谓软件业界的显学,恰如经济学之于中国一样。我认为种种对于软件工程的讨论和关注是非常重要的,先哲与大师们的著述与讨论,国内先行者们的实践和争论,都是非常重要的,他们代表了软件发展的先进方向,也是我们前进的必然道路。然而,我认为,最重要的,并不是这些。而恰恰是上面我所关注的那些简单、琐碎而又平凡,你每天都在实践都在进行的事情。-3-因为再伟大的理论也要通过这样平凡的工作来实现,再了不起的方法也要通过一点一滴的实践来验证。实际上,长久以来,我认为我们就是缺乏了对这些构成整个软件开发的细小的沙粒的关注。也正因为如此,尽管现在先进的软件工程方法在持续的引进,我们已经可以在理论上与国际先进水平基本保持同步,然而却几乎没有听到任何一例对于先进理论,先进方法的成功实践。大家听到的,讨论的,却大都是在自己实际的工作中引进软件工程方法履步维艰,无法成功的故事;大都是软件工程无法适合中国实践,或是为什么不适合中国实践的问题。为什么软件工程和过程改进代表了软件开发的先进方向,却无法在我们的工作中得到验证和实践?其关键也就在于我们工作和实践中那一点一滴的方法和态度。大家都知道淮橘北枳的故事,南方的橘子树移植到北方便会变成枳,结的果子便不那么好吃,原因只在气候和水土的变化;同样,本来很好的软件工程和过程改进,到了我们中国,同样会因为本地的实际状况而发生改变。实际上,我认为,对于软件工程和过程改进的讨论和研究,对于目前我们大多数的软件开发人员来说,只是一种空中楼阁。那些被讨论的东西都是很好很好的,但是,那时国外的先哲与大师们在已经有着成熟有经验的人员队伍,有着管理比较现代化的企业的基础之上,对于如何达到“更好”的一种讨论。而对于我们目前的实践来说,我们尚无法达到大师们理论的起点,连“好”都尚未达到,又如何实现“更好”?(对于这一点,我相信有相当读者会有不同意见。同上,再读完本文之后,我诚恳的请您提出批评。)而我们之所以连“好”都尚未达到,便是因为我在前面所问的细小问题。而所有这一切细小问题所指向的根源,其实都只是一个,那就是:缺少规则。缺少规则,其实这个是老生常谈,并且这个问题也并非为我们软件行业独享。缺少规则,其实是我们中国的一种传统或者说特点。这其实是我们同老外们的一个本质区别,如果不认识到这一点,那么是绝对不可能搞明白为什么外国的好东西到了我们这里就是实行不了的,因为最根本的做事情的方法和规则都变了,你怎么可能还期望所有的一切恰如理论和书本上描述的一样完美?但是我知道看到这里很多朋友要提出异议了,是的,我们大多数的企业当中并非不重视规则,实际上,就以我刚刚离开的甲公司为例,公司的管理者们给我的印象是,在管理者的主观愿望上,绝对是极其重视管理的,并且,采用了各种各样的方法来加强公司的管理工作。但是,遗憾的是,我认为,绝大多数人,可以从甲公司的管理者们推广到大多数管理者,并没有意识的问题的关键所在。我所说的缺少规则,并不是说我们在工作中没有规则。实际上,每个公司都有自己不在少数的种种规章、制度,种种工作规程。但是,这些规程、制度当中,又有多少是管理者们真正根据自己心底的需要,真正根据科学的管理方法而制定出来的呢?又有多少不过是简单的抄袭书本,抄袭别的公司,或是仅仅为了对付当前的工作情势,为了应付差事而制订的呢?正如当前我们热衷于讨论软件工程而不是每一个细小的工作实践方法一样,相当多的管理者,容易把规则,把管理当作一种形而上的东西,虽然喜欢制订各种规则,但出发点往往都是为了解决一时的工作需要,为了看起来先进或是好看,并且总是认为一旦有了规则,就万事大吉了,就觉得本公司,本项目组已经实行了先进的管理方法。在这里,我敢大胆的说一句,大多数的公司,他们制定规则之前,并没有根据自己的实际状况,也没有从每个开发人员工作的实际出发,并没有在制定规则之前,弄明白自己真正需要的究竟是什么,自己制订的规则,究竟对公司有益还是有害,能够促进工作还是拖累工作,也没有搞明白,自己制订的规则,