淡马锡理工学院是新加坡当时六所大专院校的一所(四所理工学院,两所大学)理工学院主要是为市场提供技术工人的。两所大学主要是培养高级技术人材的。新加坡的青年人最高百分之一的人(有才,有财)大多去国外求学。只有百分之十的青年才能考进这两所大学中的一所。另外百分之五十的人如果有钱的家庭就把孩子送去国外。澳洲,新西兰。特有钱的家庭把孩子送去英国美国学习。理工学院面向全国招生,政府按所招学生的人数为其提供资金。当时我参加淡马锡理工学院时,学校刚刚搬进在淡滨尼的新校址。学校有四个学院。设计学院,工程学院,商学院和信息技术和应用科学学院。学生有一万两千多学生,一千多教职员工。我所在的部门是电脑技术部,该部门有三个职能:负责学校的IT基础设施,负责学校教职员工的工作电脑的分配和日常维护;负责学校的应用软件的开发,维护。我所在处是应用软件处,这个处又分成两个科。一个负责教学有关的应用,如考试成绩管理系统,课程安排系统。另一个是行政管理方面的应用,如工资系统,人事系统,财务系统。
我在第二个科工作。记得当时的科长是一个姓李的韩国人,处长是一个来自文莱富商的女儿。
我的的第一个项目是用VB3和eForm 在Outlook中写一个职工建言系统(Staff Suggestion Management System). 后台数据库是Access. 虽然很简单,但是那是我们部门的第一个用VB的应用。在那之前都是现今己不复存在的开发平台,叫SQL Window. 当时其它开放平台Power Builder 和 Delphi. 当然还有Oracle。记得有一次在一个技术交流会上我问一个微软的技术代表:面对这样众多的开发平台,微软的技术方向在哪里?我得到的答复是:Visual Basic.我当时的反应是有没有搞错?Visual Basic 怎么能与power builder 比!不过我后来慢慢意识到微软的策略的成功,所以我后来一直坚持在微软的平台,时至今日。其间有许多把我向其他平台吸引的力量。在淡马锡有过,在美国也有过。最近一次是一年前当我决定要在移动应用方面做一些事,我觉得有一股強有力的吸引力要把我向苹果平台转。我为此做了很多研究。最后我决定不放弃微软平台。在视窗8.1面市四个月之后我发表了我的第一个在视窗8.1上的应用。应用上市后受到好评,在同类应用中处于领先地位,还得了最佳应用奖。我觉得我在技术方面的远见是对的。我有这样的远见是得益于很久前的一个人生讲座。在那个讲座里,演讲人讲了这样的话,我至今还记忆犹新:
你是世界上最好的苹果,但有人不喜欢苹果。于是你就尽最大的努力把自己变成一个梨,可是不论你怎么努力,你只能成为一个二级的梨子。可就是这样还有人不喜欢梨。它告诉我们一个道理:做你最拿手的,做到最好!这是你成功的最佳捷径。
说远了,回头来说这个项目的情况。在这之前我与我的朋友署明做了很长时间的VB3的程序的开发,所以这个程序对我来说非常简单,两周左右我就把这个计划几个月的项目做好了。大家对我刮目相看。
在九六年初,微软发布了 VB4,部门经理让我参加一个VB4培训,那是我在新加坡唯一参加的五天教室里的技术培训课程。在培训中我拿到老师的培训资料,回来后我为部门的所有开发人员主持了为期两周的培训。大家都对我的培训非常满意,处长和领导都很满意。
这奠定了我在VB方面的领先地位。接下来我开始了部门的第一个VB4的项目。那是一个用于管理职员的医疗报销过程的系统。接手后我并没有急着写程序,而是忙着与用户开会了解有关的规章和过程,然后把了解到的知识写成文让用户部门检查提出更正。如此有一个月左右。在小组例会上组长对我的进度表示了不满,他说:你忙了一个多月,所有的只是一个用户文档,没有一行程序?我说我首先要搞淸楚这系统要做什么,怎么做,我才能开始设计这个系统。尽管他没有什么反驳我,但我看出来他的不满意,对此我也无能为力。
与用户的会议出乎意料地成功。用户纷纷说你怎么对我们的需求和章程的了解比我们还清楚?文档顺利地通过了用户的审定,接下来我开始了我的设计。我从两个方面进行设计,一是做数据库的设计,一是做前台的用户界面的设计。用户界面是用的MDI(Multiple Document Interface) , 我还专门找了图形设计师帮我设计了一个icon。两个星期过去了,我向小组演示了我设计的用户介面,大家非常惊讶我能够在这么短的时间里设计出这么好的用户界面,小组长评价说:这才是专业设计水平呢!其实没有什么,其实大家都知道商业软件应该是什么样子的,大家天天用这样的软件,只是当时没有多少人知道怎样在VB里实现罢了。
真正的开发工作是幸苦和烦杂的,没有几个人有兴趣了解,我就省去一些。经过六个多月的开发,调试,系统基本成功。在九六年底投入使用。在这里讲一件小事,它让我认识到软件开发与人与人之间交往的关系和作为软件设计人员的困惑。
在系统中一旦有一个职员递交了一个报销单,系统就创建一个报销单。报销单号是一个流水号。如果因为任何原因这个报销单被删除了,那就有一个空号。这与我们写银行支票相似,如果一张支票写错了,撕了,再写下一张。在你的银行账目中就有一个缺号。可是用户部门的一个经理(后来因为能力太差降级到别的部门,而我又恰恰又为那个部门做另外一个应用。别人都说我好运气!)非要我让系统重新排号,因为她喜欢用月头月尾的两个号一减得出当月有几个报销。为了满足她的需求我做了一个查询功能,让她能一下看到当月或者任何时间段的各种数据,如:创建了多少报销单,处理了多少,删除了多少,多少还在领导那儿待批,多少已经批了待付款,多少已经付款了。如此等等,应有尽有。(其实这也不难,只要有数据,要什么都能算出来)可是那个经理觉得很没面子,咬死非要我让系统重排号。我与我的经理报告了此事并解释了为什么不能这么做。设想一下我月中做了一个报销,当时给我的报销号是12345。可是到了月尾我收到通知说这个报销的付款己出,可是通知中引用的报销号是12343。那致少会造成一些迷糊,也许造成财务上的混乱。经理对我说:你不要改,也不要提。这样系统没有麻烦,她也不丢面子。如果她再提,你让她找我。我猜很可能就不了了之了。我按照经理说的做了。果不出她的所料,真的不了了之了。自此以来,我一直提醒自己在与客户交往时一定要照顾他们的面子,有时我特意留一些问题让他们提,让他们觉得他们也能积极地参与并做有意义的贡献。另外一点就是一定不要当面否定用户提出的问题和建议。
九七年初我接手做另外一个项目,那时我已经是有三个手下的小组长。新项目是管理学生实习的安排工作。(SIP97, Student Internship Program), 学着微软的命名惯例,我命名它为SIP97, 这是一个管理部门和教学部门的联合项目。 一方面是学校与企业界的联系,一方面是学生的教学活动的一部分。与往常一样我并没有急于设计和编程,而是花很多时间了解现有工作流程和现有工作流程的问题和学生过去的投述。经过几个星期与各学院负责实习的教职员工和校本部公共关系部的沟通我发现有几个问题。一个是各个学院各自行动,有时一个公司收到来自不同学院的信件。一来浪费人力财力,二来对学校的形象不好,表现出缺乏内部协调。一个就是有的学生住在东部却被送去西部的公司,有的住在西部却被送去东部的公司。这样在交通上花很多时间。再一个是打印出的信件再打印信封,再人工将信件装入信封。这样一来费工,二来时有装错信的情况。公司收到装错的信件,不知其所云,也非常影响学校的大众形象。面对这几个主要问题,我又做了两个期的研究。在我做研究时我让我的手下尽量把用户工作流程成文立档。大家都很忙。只是有人看我整天抱着新加坡的地图看,抱着各学院给的信件例文看,还看我拿来了各学校的各种信封放在桌子上,不知道我在干什么,心里好生奇怪。我甚至还去邮局请教邮政编码的结构。两个星期过去了。我觉得我对这三个问题都有答案了,我先向我的手下介绍了我的设计,再向用户作了介绍。大家都很喜欢,可是我的手下说我的设计听起来有道理,不过他们不会编程实现,我说那哪一部分你不会做的告诉我,我来做。具体地我的设计是这样的:
一. 我设计一个统一的数据库,把学校所有的业界公司的信息全部放进去。然后让各个学院决定他们要联系哪些公司,如果他们有新的公司联系人要加进去,他们也可以加。一旦联系人的信息被一个学院加了或改了,所有其他学院都能看到和使用。然后在过了一定时间后由学校SIP工作小组的名义寄出信件,在同一封信里有所有有关学院的信息。这样不论有多少学院选择了那家公司,公司只收到一封由SIP工作组的信件。
二.我设计了一个数据库表,在这个表里记录了从一个邮编到任何一个邮编的相对距离,如果其中一个邮编靠近地铁站,因为交通方便,相对距离也做了相应调整。这有了这个数据后,系统就可以为学生就近安排实习了。
三.在信封的使用方面我提议用开窗信封,这样就不用打印信封,也就没有装错信封的问题了。还有一个小的改进,就是不安排女学生去需要做夜班的公司。
这几个设计最难实现的是就近实习,其核心逻辑是我亲自写的程序。
在夏天来临之前,项目圆满成功,学生,学校,学院都很满意。我们电脑部的领导也很高兴。
接下来WEB 的时代来临了。我参与了学校的第一个在微软平台的基于IIS(Internet Information Server)的建立和网页开发工作。鉴于我的领导能力和技术水平我被认命为学校的web master 同时担任行政管理应用科的科长。从那时起我就让我的手下做日常维护,我自己除了事务性的工作以外全心专研技术。几乎在从未有人尝试过的情况下我用一个在IIS上的一个付加件叫IDC(internet data connector)开发了学校第一个基于数据库的网上应用。后来又领先开发了基于ASP的网络应用。
快到年底时,微软推出了VB5 和COM,同时在NT4上推出了一个叫option pack 的付加件推出了一个叫MTS 的服务件。在这两个技术的支持下,用vb写分布式应用成为可能,用VB开发可再用部件成为可能。还有一个技术是用VB写WEB项目(web project )我专研了几个月,开发出了一个样本应用,在电脑部的内部做了演示,大家都非常感兴趣,接下来就要给我一个更大的项目,也调给我几个较为得力的手下。五年后在美国时见到一个朋友,他告诉我我的一个手下与他谈起我时是这样评价我的:他 是唯一一个精通技术并热心专研技术的经理,与他在一起工作让我学到了许多东西。我听了后,心里有点欣慰,心想自己的努力和成果还是有人看见的。在我已经不是他的上司时能这样评价我,可见其真诚的一面。
到这个时候我应该谈谈我们电脑部的部主任。他是一个马来西亚的华人,在web时代总想着一夜发富,对学校里的与教学和服务于学生的事情一概没有兴趣。他看到我的技术了得,管理能力也很好,就与我谈让我帮助他领导一个所谓新技术组,做他想做的创新工作。我直言没有兴趣,我的志向是做一个与学生有关或服务于学生的大系统,最后他让我晢时领头,待他找到其他人选后再换。我与应用开发处的经理谈了我的处境和想法。她说主任是“皇帝的新衣”只是没有人与他说罢了。现在你告诉他了,他也未必听得进。不过我支持你的思想,我们应该立足于服务于学生,立足于服务于教学。
就这样我的志向被耽搁下来了,后来我把这个新技术组长的职务推掉后也没有能做成我想做的大项目,只是由我的两个手下用我开发出来们新技术开发了一个小应用。一个得力的手下又被借到别的项目去了。我几次与应用开发处经理谈过,希望她能利用她的影响力公关校长能启动课程表系统的开发。她觉得让她越级公关,心理上有障碍,她希望我再耐心一点。同时她也把我推荐给DBS银行,她妹妹在那里任电脑部主任。经过面试,DBS决定聘用我。同时还有一家私人公司也聘用我。工资和职位都比我当时的工资高出许多。不过我最后都没有接受。这是因为我的心已经不在新加坡了。
从九八年底我决定去美国。当时我的想法是这样的:全世界最好的软件公司是微软,全世界最好的做软件的地方是硅谷。我要去那里去。哪怕不拿钱我也要看看软件是怎样开发出来的。就这样我开始在美国找工作。大概三个月后,到了九九年二月,有一个公司派了一个副总级别的人来新做面试。我记得是一个星期天,那天我穿着正式,西装领带,驾车把家人送去教会做礼拜,然后就去酒店面试。面试时我演示了我的示范应用,那个副总非常喜欢,当场给了我一个比我要求的工资还高的数字,然后问我:在有了这个数字后,我能否确认你会停止找工作并决定来我的公司工作?我给了他一个肯定的答复。面试完了后我回到教会,崇拜还没有结束。我悄悄地告诉我当时的太太说我找到了一个新工作。她问在哪里,我回答说:美国。她吃惊的程度可以说是无法形容的。
接下来就是做一系列的文档工作和签证审请工作。在学校里我把日常工作让我手下做,整天埋头做技术研究学习工作。主攻怎样用VB6 写COM, COM+和ASP应用。
十月份签证到了,我向学校提出辞呈。部门主任和部门副主任(以前的应用开发处长)的反应完全不一样。主任的态度是:为什么他要走,在我这里一样做新技术,他要去美国,我可以安排。当我告诉他如果他能让我做课程表系统的话我可以考虑留下他就不言语了。后来有人告诉我他与人说;道不同,不相与谋。副主任就表现得非常难过,在我递交辞职信到我离开新加坡三个星期内,她与我共进午餐有三四次,早餐就更多了。她说:我知道你会走的,你终于走了。希望你能留下,哪怕你能在DBS工作也好。不过我为你高兴,相信你能做的很好!我的回答是:妳让我有耐心,对不起,我没有耐心了。记得我与妳说过“妳有妳的顾虑,我理解。但是我有我的考量。有些机遇不会一直在那儿等我们的。她说:我知道,你暗示我好几次了,只是我不能创造一让你施展才华的环境。
十一月,我刚刚过了四十岁的生日后,我只身一人踏上了去旧金山的飞机。在美国的经历也是磨难重重。以后有机会再写一篇美国梦。狮城岁月到此为止,谢谢阅读。
我92年去新加坡,感恩。