我的编程生涯开始于90年的暑假,我小学刚毕业,无聊的暑假让我产生了学习电脑的的念头,在一位亲戚的朋友家里,我见到了平生第一台电脑,一台黑白显示屏的笔记本电脑。而后凭着一本厚厚的DOS操作指导和一份原始的Basic编程书,我写下了一生中第一行程序:“print 3+2”,当电脑正确的显示5的时候,那种激动的心情真是难以名状。电脑这种东西的确最能引起孩子的兴趣。在我激动之余,埋下了从事软件开发的念头。 此后,我虽然有过一些断断续续的编程学习,但在中学的6六年里,由于学习的压力,同时自己也没有计算机,我的编程生涯基本是空白的。直到96年考入大学的计算机系之后,编程生涯才又重新开始。父母为支持我的学习,在家庭经济极其困难的情况下给我买了一台电脑。大学的编程是幼稚的,但却充满激情。什么小游戏,小工具,各种语言都试试,各种软件都玩玩。我几乎安装过市面上所有的linux版本,试遍了当时所有常见的编程工具,我经常自嘲我们这一代编程人员都是盗版软件培养出来的。在那个信息产业的泡沫年代,我在学校里虽然无缘加入那浩浩荡荡的软件洪流,但我的心情却无时无刻不被软件领袖们的成功所激荡,年青的心沉醉在硅谷的梦想中,幻想着有一天自己也能像那些软件英雄那样取得辉煌的成功。
2000年,我毕业了,毕业之前我就加入了湖南一家较大的软件公司,第一份工作是挫折的。我在一个项目组做医院信息系统的开发,混乱的代码管理,基本没有任何文档,经常谁都不知道软件里面的代码到底是写了些什么,谁也不知道代码的含义,一点都不像一个正规的软件企业,我感觉很糟糕。公司老板头脑已经发昏了,各类产品全面铺开,什么教育软件,游戏软件,管理软件,统统都想做,没有一个产品有规模,没有一个高质量。最后还在全体员工的集会上大谈公司发展如何顺利,然后自豪的认为,自己以后的工作就只剩下打高尔夫球了,公司管理交给自己的助手就可以了。我想公司的总裁就是这种水平,这个公司也就该玩完了吧。没多久我就离职了。
2001年初我加入了深圳一家通讯设备公司,从事智能网软件的开发。这家公司的老板倒是从来不谈高尔夫。我一进公司就成天听他大谈“冬天”,耳朵都能听出老茧来。不过在冬天里干活可一点也不能含糊。大家伙都干得热火朝天,累得死去活来。但我却感觉我进步了,并不是我学到了什么先进的技术,而是我学到了一种工作的态度。我发现周围的同事都很牛,都有良好的教育背景,高学历的人很多,但这么多牛人仿佛都在傻傻地做一些简单的事情,代码一行行的看,文档一点点的写,测试一点点的做。项目组内鼓励互相学习的气氛很好,有时一点点的小技巧,哪怕是操作上的小技巧小改进,只要共享出来,都能获得鼓励和赞扬。如果遇到了大问题,很难的问题,大家就一起的测啊,想啊,直到搞定为止。这的确是一个驱除你浮躁心理的好地方,虽然很累,但是慢慢的,你就会被这种傻劲所感染,当产品逐渐稳定下来,你会领会到什么叫做万丈高楼平地起,因为一砖一瓦都是大家辛勤的汗水。编程生涯的艰辛和快乐,恐怕只有经历过的人才能有深刻的体会。
2002年我曾经被派往公司的南京研究所工作过半年,回深圳后,我被指定负责一组印度员工的技术指导工作,这算是我和印度软件业的第一次接触。我看到印度员工能够熟练地查找各种技术支持网站,迅速找到相应的信息,测试用例和设计文档也都写得井井有条,给人的感觉比较职业化。尤其是英文不错,给我留下了很深的印象。我一直是坚定的汉语主义者,但从那之后我对语言有了新的认识。这个世界有很多民族,很多语言,人类的文明需要交流才能前进,而这种交流需要一种通用的语言作为载体。再快捷的翻译也无法代替直接的交流,而互联网上关于软件的技术信息也多为英文,我要继续我的编程生涯,就绝不能输在语言上。不然我如何领导外籍员工呢?经过一番痛苦的努力之后,尤其是傻傻地背了不少单词,现在我无论是听说读写都不会比从小受英文教育的印度人差了。
之后我又和众多中国及印度工一起,陆续为一二十多个国家开发过软件,去年年底,我被派到了公司的印度研究所继续从事软件开发,在班加罗尔开始了我常驻海外的编程生涯。在这里,我见到了很多印度同行。对印度的软件业有了更深刻的认识,其实印度软件工程师和中国一样。有很多牛人,也有不少庸人,其编程人员的总体素质和中国差不多,管理得当能充分发挥其优势,管理不好也一样出乱子。说印度软件工程师比中国人聪明我绝对不同意。但印度的软件产业化做得比中国好。
在印度,大的软件公司多且比较规范,软件人员也有一个良好的职业晋升渠道,每隔半年就根据其表现进行一次评价,并决定是否提职和涨薪,大学刚毕业是助理软件工程师,干一年左右可以升为软件工程师,然后两年左右可以升为高级软件工程师,之后若干年可以升为系统分析员或技术领导,然后是系统工程师,再后来是系统架构师。各个公司晋升体系虽各有不同,但基本类似,软件从业人员即使跳槽也可以保留原来的级别。开发人员可以走技术线搞开发一直干很多年,同时也有机会可以转到管理线,担任项目领导或者项目经理,但如果你愿意搞开发,干到很老都没有问题,而且你的开发工作经验会被认为是很有价值。而国内的普遍荒唐地认为软件开发只能搞到30岁,印度这里30岁以上的研发人员比比皆是,国内10年以上的软件从业人员则是凤毛麟角。在这种错误的指导思想之下,中国当然会缺少有经验的软件从业人员,产生所谓之结构失衡。
其实编程也就是一种普通职业,没有什么特殊的,和其他行业的白领工人没有什么区别。班加罗尔到处都是软件工程师,他们普遍薪水也不是很高,即使在大公司,一般软件人员的工资折人民币也就是三四千,小公司薪水更少。但我看他们都很知足的样子,有自己的家庭和生活,很开心。相比之下,在国内大家普遍认为软件业就是吃青春饭的。但愿国内IT业经历冬天之后能够回归理性。不论是业内人士还是局外人士,都能以一种平和的心态看待软件开发工作,则是中国软件业的大进步了。
一转眼我自己也从业好几年了,也经历了大大小小不少坎坷的故事。不久前,就发生了一次。巴西的客户对我们的软件提出了极高的性能要求。我们的软件在疯狂的高速之下,频繁出错,形势很是紧张。我们持续调测数周,也始终没能最后稳定下来,客户很不满意,领导下令无论如何都要搞定,否则就有可能失去这份订单,那天夜里,我坐班加罗尔的办公室里,和千里之外的深圳的同事一起紧张进行模拟调试,一些小的问题已经逐渐被排除了,但计算结果始终不对,一直测到天亮,仍然没有任何进展,第二天下午,我已经感觉头上在冒冷汗了。大家决定背水一战,一定要把这个bug挖出来!于是我们分成三批,一批负责分析提供测试方法,一批负责编码实现,另外一批在深圳总部进行测试。持续不停,轮番轰炸。终于,在那天傍晚,我们成功地定位了问题所在。办公室内大家起立欢呼,掌声一片。谁能想到这个问题竟然是某著名大公司的数据库系统的一个常用函数在高速运行之下出错了!我们迅速修改了代码并传给了巴西。第三天,巴西传来捷报。大家才终于如释重负。事后,产品线经理去了一趟南美,我才了解到由于最开始调测出很多问题,客户非常恼火,声称给我们最后一次机会,在最后一次测试过程中,公司巴西代表处的市场以及用服人员都待在机房,每个人都极其紧张,小心翼翼地按照客户的要求进行统计并核对数据的准确性。每核对完一次,正确。机房里所有的公司员工都欢呼一次。期间,公司一位巴西的客户经理竟然跪在地上,双手合十,非常虔诚的为项目的成功祈祷,大家已经不仅仅把这个软件当成一个项目,而是当作自己亲生儿子一般注入了感情!很幸运,我们终于顺利通过了测试。真要感谢那些奋斗在远方的一线人员,正是他们辛勤的努力,才让我们开发的软件顺利的走出实验室,冲向世界的五大洲。我对他们充满了由衷的敬意!
工作就是这样,痛并快乐着。我很庆幸我能在我短短的编程生涯中经历这么多的事情,我坚信,更精彩的还在后头等着我。
|