《程序员》对话
(这条文章已经被阅读了次) 时间:2002年11月04日 13:24 来源:闫辉 原创-IT
仨程序员聚餐
主持人:闫辉
平凡的对话撞出不平凡的火花,睿智、感悟、经验是一个优秀程序员必须具备的,也是我们推出“对话”栏目的初衷。
前些天在一次聚会上我遇到了周鸿袆,作为杂志的老朋友,他提了很多中肯的看法。蒋涛还邀请到了在美国微软工作多年的戴习为,戴老师的丰富经历肯定可以让对话更精彩。所有人工作都很忙,经过反复协调,终于确定在星期日下午7点见面,周鸿袆在晚上9点半还另有安排,因此只能边吃边聊。就这样在亚运村鑫三江饭店的包间里,四个人吃着川菜,聊着天,周鸿袆为此两次推迟下面的会见。当我们走出包间的时候,才发现已没有了其他客人,要打烊了。
叹中国软件业要能放下一张平静的书桌
主持人:戴老师眼中看到的是中美在软件发展上的差距,周鸿袆感受的是软件创业环境的艰辛。
蒋涛(以下简称蒋):戴老师在美国微软工作了很多年,现在回国也有一段时间了。周鸿袆也是在方正公司担任技术主管多年,又自己创业。想听听你们两位对软件业的看法。
戴习为(以下简称戴):软件工业与其他的工业比较,是门槛比较低的领域,很容易进入,再加上曾经的网络热潮,使得各国政府都越来越重视软件产业,这点是肯定的。但如何去做又是另外一回事。如果问今天和七十年代相比,国内外软件的差距是大了还是小了呢?我认为是大了。为什么这样说呢,在70年代,美国刚出来Unix和小型机的时候,中国集中了很多技术人员,在研究硬件的同时,也把操作系统彻底解剖了。但今天,我感到在软件基础上研究上的决心没有了。表面上看,美国出现什么新产品和新技术,盗版出现的很快,一些厂商也能同时推出基于某些平台的产品,好像跟踪很快,但底层的机制现在有多少人关心呢?不在基础上下力气的现状会带来可怕的后果,那就是失去判断力,进而影响投资方向。现在在底层市场上几乎是零,在产品市场就没有核心的竞争力。
蒋:现在国内的确没有多少软件产品公司,特别是互联网热之后,软件新产品在市场上很少见,更多的软件公司也就是靠市场炒作和不断升级产品,像最近的病毒厂商事件就是明显的例子。
周鸿袆(以下简称周):这几年在基础应用软件方面的确一直在走下坡路。以前在中关村,大家还很有创意,各自做不同的软件产品,现在很多都去做系统集成了。投资方面,我也想补充一点,国家在这方面缺乏良好的机制,这使得风险投资成本高,风险也大,这个风险不是公司运营的风险。我认为在这方面应该由产业和市场去驱动。
蒋:不过现在新名词到是出现了不少,比如软件蓝领、软件学院等,印度软件业也被很多人当做可以效仿的对象。
戴:我首先就不赞成什么软件白领、软件蓝领的概念。翻开美国的杂志,至少我没有看到过有这种提法,在微软公司更没有这种概念。现在中国软件产业有时候像瞎子摸象一样,发现了一种方法就认为是诊治的良药。比如CMM这套体系属于学术派的理论,微软不用,IBM不用,那这在美国肯定不是主流。
周:Sun和Oracle也都不用CMM,就此问题我也问过他们。当然我们并不是说CMM不好,而是软件领域有很多方面,不能某个领域成功的经验就要拿到所有的领域,因为没有放之四海皆准的方法。
现在大家有些太急功近利。首先中国软件业发展还缺少沉淀,这就像给国内的电影导演一亿美金,他们也拍不出好莱坞的大片,这不是钱的问题,而是文化沉淀不够。软件同样如此,很多东西不是一夜之间能够学来的,时间因素是不可回避。我们首先要承认这个现状。如果幻想一招就灵是很幼稚的。以日本为例,他们曾经搞软件工厂想超越美国,而且通产省还制订了计划,但最终还是失败了。
戴:微软在这方面做得很实际,他们用的都是从经验中总结出来的方法,只做那些必要的工作。计算机的胜利应该说是一种像微软这样工程派的胜利。
周:此外在中国就是不能容忍失败,大家总在梦想快速的成功。微软内部也有很多项目没有出成果,甚至到市场上的机会都没有就被证明失败了。但有十个失败的项目做基础,只要这些人不走,从失败中得到的教训和经验就会留了下来,为以后的成功打基础。而我们却经常一遇到挫折就像中国足球一样马上想到换方法。
戴:其实国内很多媒体经常报道国外软件业的情况,有些人对微软的了解比我都多,这说明我们不是不知道国外的情况。但总的感觉,大家心态是极其浮躁的,总指望着在三到六个月就能创造出自主知识产权的东西。
现在最迫切的就是要能放下一张平静的书桌,做到这点,才能去谈别的。我很反感现在很多报纸一提就是超国际水平,要知道,水平是需要市场验证,而不是自封的。电视卖的很好,你不用去报纸上吹,大家也都知道中国的电视组装水平已经被全世界承认了。
求不在乎你知道多少,在乎你有多聪明
主持人:每个软件公司都试图去招聘最好的程序员,每个程序员都希望进入最好的软件公司,他们的谈话能够让程序员看到自己的差距,也能给软件公司的招聘以启示。
蒋:谈了这么多问题,其实整个产业还是在不断向前进的,单单从程序员数量上就在不断攀升。这产生了如何对这些软件从业人员进行评估和管理的问题,在CSDN网站和杂志中,谈招聘的文章读者都特别关注。
戴:微软认为软件就是两年一代产品,所以新员工的加入很重要。根据我的经验,微软招聘最关注三类人:第一类,也是招收最多、最普遍的是名牌学校的大学毕业生,喜欢招应届毕业生超过招跳槽的。微软并不在乎你过去知道什么,而是你有多聪明,所以微软面试的题目除了问一些经典的问题外,大量的是智力测验问题。现在很多介绍微软面试的文章,已经不奇怪了。但我刚到微软的时候,所有的中层干部都要接受如何去面试人的培训,我当时很惊讶去问树上打鸟,西雅图每天死多少人这些千奇百怪的问题。其实微软根本不指望你能够知道这些问题的答案,而是看你解决问题的过程。
第二类就是微软挖的人,从世界各地挖来的人都是花很大的代价,也包括我。从我了解的情况看,挖来的人中留下来的有一半多,这些人的能力是不用置疑的,但能不能适应微软的文化是另外一回事。第三类就是微软员工推荐的朋友,这些人很有意思,很多都是没有任何文凭,有的就是高中生甚至是初中生,但这里面有很多高手。后两类的人员相对是少数,但微软认为很宝贵,千方百计要留住他们。
周:我刚才听戴老师讲,挺受启发的,也特别同意戴老师的观点。我也喜欢招刚毕业的学生。我比较得意的一点是我在方正做过的招聘工作。当时方正有北大的优势,感觉自己牌子很响,很少主动去招聘。但我还是亲自去校园,但因为方正的工资不高,而且也没有招聘的预算,所以我的方法就是到计算机系的男生宿舍里和学生聊天。刚毕业的学生就像白纸一样,比较容易影响他,给他灌输理念。编程一半是工作,一半是基于兴趣和激情,我要招认同这些理念的学生,而不是上来就谈待遇。
我认为,只要在学校基础学的好,掌握新的工具和技术是非常快的。我不是特别喜欢招研究生,因为我们的研究生教育存在一些问题,研究生比本科生并没有多学多少东西,很多就是给导师干活,多了些实践经验,但硕士的牌子会把他的心态搞坏,不愿意去做编码的工作。
我们的招聘只能自己编写一份考题,考其在学校中学的基础知识扎不扎实。互联网的发展尽管给大家带来了很多新的知识和信息的传播途径,但年轻一代程序员的心态也变得很浮躁了,现在很多学生不认为干活是一件很重要的事情。
戴:我在招聘时发现这样的现象,很多人在一个公司工作不超过几个月。于是我定下规矩,凡是在一个公司工作时间不超过6个月的,一概不看。要知道在美国,凡是在上一个公司工作不超过两年都不看的。
周:这个观点我也同意,我们也是这样做的。软件公司要招聪明、有思路,而且愿意为软件玩命干活的人,但试题只能考基本功,学习能力、创新能力、求知和激情方面在面试中很难去测试。坦率的讲,程序员是一个很辛苦的职业,很多人说程序员挣钱多,但我觉得一点都不多,因为程序员到公司做就占用了他大部分时间,吃饭、做梦都要想工作,而且程序员很少有不加班的。所以程序员需要以苦为乐,只有喜欢热爱编程才会认为这是乐趣。
蒋:如果程序员几个月就跳槽,也很难知道他真的能够做什么。很多应聘书上写着一大堆精通的介绍,比如有的写着“精通windows和Linux”,我问他在Linux上做过哪些工作,他说把linux下载下来,安装过几次。
周:可以改成“精通Linux安装”。(笑)其实要这样写,“在windows文件操作领域从事过两年开发”,做过什么项目,写的真实反而更容易让别人知道你在哪方面擅长。
戴:我也经常收到这样的资料,有些写“精通英语”,我问,你是不是精通英语啊,我马上换英文对话,这招有点损。但整个社会大气候就是这样,人人都是这样写。在美国,没有人敢这样去写,因为这样写的后果就是很可能找不到工作。
愿不要少一个天才的程序员,多一个平庸的经理
主持人:CSDN网站上最近有几篇报道引起了巨大的反响,利玛和天心的报道从另一个方面显示了中国软件公司的开发管理水平的低下。为什么要做程序员,如何做程序员,这是我们最关心的问题。
蒋:招进程序员之后,他们的职业发展之路应该如何定制呢?兴趣和工作安排如何去结合来避免偏差?
戴:程序员管理难就是因为他是个性化的,你要了解这个人,根据他的特长设定他的职业发展的目标。微软从来不试图去改造谁,而是让其尽量将个性发挥出来,自己这个萝卜找到属于自己的那个坑。
周:因为我们公司比较小,而且招的大部分都是应届毕业生,所以开始我会很坦率的告诉他们:做事情不要太功利,不要认为现在去做Oracle就意味着有发展前途,而在Unix下做小工具就低档,所有的工作都是在培养能力。我希望程序员刚开始工作的时候能够按照公司的需要到不同的岗位上,不管是否喜欢,一定要投入去做一段时间,否则只能学到皮毛的东西。半年到一年之后,我们会给他换岗位,以前做客户端开发的,可以去做服务器端,让他尽可能掌握多方面的知识。
蒋:软件开发提倡还是要以团队为最小单位,那个团队多少人比较合适?
戴:我在微软的时候,所在的小组只有60人,开发和测试人员对半。换句话说,真正的开发者只有30人,但还要分成两部分,一部分做操作系统,一部分为应用做API接口。微软一直就是这样以小公司的方法做大公司的。
周:我觉得比较好的是四到五个人,一定要细分到这样的规模,而且要有一个Leader。当小组中再增加成员的时候,沟通的成本会大大增加,这在软件工程中已经被证明了。
蒋:即便在一个团队中,程序员发展的也有不同的方向,但很多开发人员都不愿一直做技术,而是希望向管理方向发展。
周:我觉得管理有三类:首先是技术管理,或者说项目管理;此外是产品管理,微软就有一些人用VB快速做原型,告诉未来产品的模型,我认为做过产品开发的人设计产品还是有优势的;第三种才是经营管理这条路,我认为能成功走上这条路的属于凤毛麟角。我当时也是痛下决心,斩断、放弃了很多的东西才转向了公司经营这条路线的。尽管我自认为在软件开发方面有天分,但发现这没有用,中国找不到一个公司愿意给提供这样的环境。
蒋:我比较赞成国内程序员走技术管理路线,向Architect方向发展。如果只是停留在技巧这个层次上,只会利用互联网和论坛学习知识点,还不能代表有综合分析问题、解决问题的能力。
戴:但我觉得国内有个误解,有些程序员做过一年两年的代码之后就希望成为不写code的设计师。我在微软的职务就是Architect,可是我一天都没有脱离过写code。因为现在开发环境和工具更新速度非常快,脱离code一段时间之后,你连讨论都无法参与了。所以我认为如果要走技术管理这条路线,也不能不写程序,停滞下来。
周:我同意您的观点,如果技术管理者不了解细节的话,可能就不是领导程序员,而是被程序员领导了。另外程序员的功夫有些也在程序外,他要有适当的时间去接触客户、市场人员,不见得要做出什么成绩,但他能对市场产生一定的概念,锻炼一种感觉。我也做过技术支持,之后我的观点改变了许多,不是从自己的感觉出发,而是真正从用户角度出发。很多程序员认为自己高人一等,躲起来写软件,其实他拿出适当的时间去一线,这对他知识面的扩展和阅历的增加都是有好处的。
蒋:现在程序员的流动性很强,要想让程序员对公司产生认同感,就要给他更多发挥的空间呢和晋升的机会。前段时间利玛事件就给我们很多在技术人员管理方面的启示。
周:发挥的空间就是培训他,让他放手去干,不断给他设定可以达到的目标。要让程序员开心,让他感到受尊重。因为我是曾经是程序员,原来我在方正最恨的就是对程序员的不尊重。因此营造一个灵活的空间,打破条条框框就很重要。我在方正的时候,程序员喜欢踢球,我就说上班时间可以踢球,而且还可以在这种团队活动中促进关系的融洽。
晋升机会不一定是升官,有时让他去做一个有挑战性的项目对他就是一个鼓励,或者给他一个全新的领域去做,总之不要出现了少一个天才的程序员,多一个平庸的经理的状况。
戴:这就是你有悟性的地方,微软就是这样的,直到现在,微软还是用小公司的管理方法管理大公司,每天上午10点到下午2点,班车拉着程序员去玩,去健身房锻炼。激励是什么,就是让员工开心,钱只是让他高兴的一部分。衡量一个管理人员的标准,首先就是你的团队是否开心。