我也来发个面试帖,顺便散分
今天撞大运了,居然面了一个印度人,电话上折腾了半天,总算是面完了。由于是我主动提问,所以比和印度分公司的partener玩con-call累得多。
总体感觉一句话:他受过非常严格的训练。具体表现在交流能力很强,并且说话很小心;还有就是编程基本能力很不错,基础很扎实;但是缺点也很明显,当我提出一些古怪问题的时候(主要是一些涉及概念比较的主观题),他不是没听明白就是直截了当地说不懂。这些问题如果我问一个国内的junior的程序员的话,他们东拉西扯总能说出一些的。
然后我了解了一些他的背景,他读了12年书,估计在中国相当于大专。在印度很多软件工程师是10年+2年的教育方式,平均工资折合在2.5k/月人民币以下,(在印度月薪2.5k的生活水平还算不错,因为印度房子便宜),而印度10所正规大学的毕业生(读书的时间相对更长一些)则起薪在6k以上(已经相当于高级白领了)。正规大学毕业的软件工程师一毕业就能够进入大型软件公司,并且有不错的升迁机会;而前面所说的大量受过严格训练,薪酬较低,基础开发能力很扎实,但是对设计、架构等高级概念一窍不通的软件工人则组成了印度软件工业的真正主力。
我记得之前论坛上有看到说印度高中生是软件工业的主力,应该就是说的这个事情。但是我们在比较印度的大专生(我们就不说高中生了,毕竟人的能力和年龄是有比较大的关系的)的开发能力,和一个刚刚毕业的中国计算机系学生的能力的时候,我们不能忽略印度的软件工业的背景:
1、丰富的流程控制理论,和富有经验的管理人员,保证项目能够很“完美”的运作,受风险的影响降低到最小。
2、良好的设计和大量有经验的高端设计人员,保证项目能够很完善地被设计,并且任务下放到编码人员手里的时候都是良好定义的。
3、大量“可替换”的编码人员,保证项目随时随地都能够在运作,不会因为开发人员的离开而阻塞进程。
我个人能想到的就是这三点决定了印度能够维持如此大规模的软件工业。
分析这三点
1、的确印度人做得不错,我接触到的国内不少项目在流程控制上都有问题,不是需求做的不完善,就是测试做得不彻底。但是这是以前,我现在的公司在这方面做得比较严格,国内不少公司也在向这方面靠拢。不过说实话CMM不是适合任何一家公司的,这和我讨论的问题无关,就不表了。
2、我们和印度差不多,但是我要说的是中国人的思路和印度人不一样,中国人的习惯是我把事情交给你,你给我看结果。印度人的习惯是我叫你这样做,你就要这样做,你不这样做是你的问题,你这样做了,做出来不对就是我的问题。所以印度人不确定的事情是不会说的,他们宁可花几个小时去开会,也不会交一份他们不确定的东西给老板review;而中国人不一样,我们可能知道一部分,或者甚至已经确信了,但是因为谦虚而不说。
3、这就是我主要要讨论的了,欢迎拍砖。我们无须怀疑,中国没有一所大学培养出来的软件开发人员是“可替换的”;但是印度人培养出来的大专生的的确确是“可替换”的。其实“可替换”这个词有点难听,另外一个我们熟悉的英文词是“professional”。所谓"professional",比较通俗的解释就是,这个人知道该做什么,不该做什么,该说什么,不该说什么,而这就是印度对基本的软件开发人员的要求,我面试的那个人就是非常"professional"的。到这里我想我不必多说了,在中国要培养一个"professional"的人需要什么样的代价可想而知了,如果要你做一个这样的"professional"的人你会开价多少?然后和印度人的2.5k/月比比。
如果你已经看得有点烦了,那么我也该抛出我的观点了:中国软件业不适合印度的形式。道理很简单,软件业在中国是高科技行业,和建筑行业不是同一级别的,我们这些白领人士和民工也不是同一级别的,所以我们是一群自由的人,自由地维护着我们疲惫而高傲的生活。既然如此,就让这个模式维持下去吧。
最后,向中国的软件人致敬!