笑谈我的学习之路——章立民

在资讯软体界讨生活,要放轻松是谈何容易。说笑谈是有点故做轻松状,心路历程听起来又有点恶心,讲到传承吗,那更是不敢当,总之,大家就是放轻松,当作生活经验的交流。将我这近 20 年来的经历与心得,毫不保留但简短地跟大家分享。更重要的是,我希望大家在读完本文后,大家都能够更清楚以及坚定地选择你未来所要走的路。

技术快速演进的不变定律

综览人类文明的演进,大抵都建立在今日会比昨日好、明日要比今日强的基本史观之上。回顾过往的资讯技术洪流,80 年代末还在钻研 DOS 系统、倚天中文、组合语言,90 年代初却得踏进 Windows 3.1、Windows SDK、DDE 等新架构所延伸的密林,大气还没喘上一口,却又在 90 年代中期碰上了 32 位元 Windows、MFC vs. OWL/VCL、OLE2 所构成的技术风暴,而 Web 也在此时开始火热,主从式架构也快速增加成三层式、甚至多层式的 Windows DNA,正当庆幸千禧年的 Windows 架构还在掌控之中,.NET 技术的跃进又像一波波不断来袭的大浪。

身处速度快、变化大的资讯技术洪流,的确必须随时准备好面对更快、更好、更强的明日世界。但是,技术的本质是什么?学习的瓶颈该如何突破?如果只是一味盲目乱冲,而不适时让自己缓下来思考,很容易被洪流吞噬。面对技术洪流,你的生存之道是什么?你是否也思考了技术的本质以及学习的方法呢?更重要的是,您真的准备好面对这永无止尽的磨练(或是说折磨)吗?

你为什么进这一行

正所谓男怕入错行,女怕嫁错郎(我必须说,这观念其实是迂腐的)。所以在我们分享所谓的经验之前,应该先回到源头,问问你自己,为什么入这一行。在两岸,常常会有一些年轻的程式设计师感到彷徨而来求助于我。我通常第一个问题就是问对方,你为什么进这一行。是因为你在学校原本就读资讯相关课系所以自然进了这一行,还是当时自己或家人觉得电子与资讯相关产业非常热门,因此进了这一行。如果你是因为觉得产业热门才进了这一行,而且是在 1999 年之后才入行的话,那我只能送你一句话,那就是夕阳无限好,只是近黄昏。所以说,如果你在午夜梦回的时候,常常会对自己的工作有所质疑的话,那真的应该好好思考思考。

我所要强调的是,你对资讯软体真的有兴趣吗?你真的喜欢这样的工作吗?你顶得住压力吗?更重要的是,你快乐吗?能够把一件事情做好,并不表示你真的喜欢,也不表示你真的快乐,这只代表你有足够的能力。如果这真的是你的兴趣,你真的热爱,就算辛苦,也会乐在其中。

身处在这行,工作日与假日加班是常态。我常常看到许多年轻人,不过就是假日加个班,就觉得自己备极辛苦,备受委屈。如果你也常有这种心态,赶快转行吧!更可怕的是,自己辛苦也就算了,家人与亲密爱人常常无法理解与谅解,同样的,他们的抱怨也成了常态。干这行,还有许多后遗症,像是身体变形,秃头,满头白发,心情很难放松…等等。

我谈这些,并不是要你离开这个行业,我的目的,是希望大家再次肯定自己是喜欢这个行业的,不论您是开发人员或者是 IT Pro,都能够更加确认自己的选择,然后坚定的走下去。

技术路线的选择

在你确定自己适合走技术这条路,也决定要走技术这条路之后,接下来所面临的就是技术路线的选择,而这通常也是学生或初入行者最大的抉择。为什么呢?因为这关系到他未来的就业,他希望自己押对宝。然而为什么会难以抉择呢?因为目前看不出何者拥有绝对的优势。据说是 .NET 小赢。但是我们必须了解,任何一种技术架构都有其特性与优劣所在,然而难就难在 .NET 与 J2EE 都非常庞大,我们很难两者都精通。因此我说成功没有一定的规则可言,失败确有,那就是两面讨好者。

我常常看到有许多人喜欢比较 .NET 与 J2EE。说句实在话,这两种技术路线都有极深的内涵,单单看了技术架构,稍微用了点其中的技术进行开发,就足以评断两者的优劣吗?这未免太自以为是,大放厥词。我投注了极大的心力研究 .NET,才比较认为能够稍微随心所欲地掌握其内涵,也才能够真正体会其中的优点与缺点。我相信同理之于 J2EE。问题是,我时间有限,精力有限,能力有限,不可能同时研究这二者,既然如此,何德何能去评论呢?

我要说的是,检视诸项技术时,最忌讳的就是成见以及那股莫名的情绪,或是说情节。当您有了这样的心态,如何以客观的心情去评量各种技术呢?奉劝大家,在选择技术的时候,不需要有太多的情绪与爱恨情愁。我知道有很多人就是看微软不爽,看微软赚那么多钱就觉得很讨厌,因为我讨厌微软,所以我不用微软的技术,所以我选择 J2EE、Java、Oracle。微软的技术真的不好吗?同样的,你也不需要因为非常喜欢微软,所以就讨厌 J2EE、Java、Oracle。身为一位技术人员,一定要抛开这些成见与情绪,因为一旦有这些成见,就会影响你的判断力,也因此很可能跟好的技术失之交臂。所以 我的态度是,不论技术是谁推出的,一定用开放与正面的态度去看待。正所谓知己知彼,百战百胜,不论是自我学习,或是在市场上竞争,切忌闭门造车。

其实只要您真正投入,掌握技术的精要,自然能将其特性彻底发挥,进而开发出优质的应用程式。如果您学东西总是半调子,那即使您用的是什么伟大的技术,写出来的东西也是平淡无奇,甚至上不了抬面。

我选择技术的原则非常简单,第一看技术的进入障碍;第二看技术有没有未来性。所谓进入障碍,当然就是跟我目前的技术能力是不是有延续性,是不是能够有良好的衔接,这是为了确保我过去投入的心血不会轻易付诸流水。就未来性而言,也就是看技术有没有前景,说得露骨点,或者应该说有没有景,毕竟技术必须叫好,也要叫座,才是好技术,那种孤芳自赏者,通常没有好下场。没错,这两个原则有时候是彼此相冲突的。放诸技术的演进史,有时候会因为某种革命性架构与装置的推出,导致引发大跃进式的演进。在这种时候,未来性的考量当然更胜于进入障碍。

其实在许多时候,技术(或是说技术路线)的选择也没有那么难,因为市场可能已经帮您做了决定。如果真的无法自行判断,就跟着流行潮流走吧!

不需要跟技术谈恋爱

别让执着害了你。就好比我们劝人在投资理财的时候不要跟股票谈恋爱一样,你也不需要跟技术谈恋爱。没错,你当初看好某一家公司的前景,买了该公司的股票准备长期投资,可是当你发现公司营运状况不如预期或是出现更大的危机之时,难道还要抱着股票不放吗?你希望你的股票变成废纸吗?没错,您现在出脱股票已经受伤,已经赔钱,可是如果不当机立断、壮士断腕的话,损失将会更为惨重。投资理财如此,技术的选择也是如此。

拿得起,也要放得下。当发现所选择的技术已经失去优势,应该毫不考虑的转换。没有错,你已经投入了许多的时间和精力学习该项技术,要你放弃,谈何容易。不过 IT 这个行业就是如此,过去被奉为圣经、归镍的技术架构可能在短短的时间就被淘汰出局。所以我们说,您也必须抱持一个开放的态度,随时注意趋势的变化,不要侍才而骄,自以为了不起。就好像戏水溺毙的人多半是游泳高手一样,因为他自认功夫过人一等,不会有任何危险,完全没有任何的警戒心,因此反而比别人死得更快。

我为什么要特别提到不要跟技术谈恋爱,因为我过去之所以在会在 1999 年急转之下,陷入低潮,就是犯了这个错误。在很久之前,我靠 FoxPro 成名,我的存款、房子、车子都是靠 FoxPro 这只狐狸赚来的。可是当时已经有一些明显的迹象显示出 FoxPro 未来将不会是微软的发展重点。这些迹象包括:FoxPro 在美日两大市场卖得非常不好,Tech-ED 的 FoxPro 场次人数递减…. 等等。甚至连微软内部的高层人员都要我小心,可是我却不信邪。最后的结果就是后果自己承担,承受痛苦。

我是如何学习的

正所谓万丈高楼平地起,要把功夫练好,马步一定要蹲得稳。我想很多人最好奇的,就是我如何学习新技术。说真的,我用的都是笨方法。学习技术,一定要先把架构与原理彻底了解,然后才能晋升到技巧的活用。而这中间的窍门,就是不停且大量的实作,并将结论有组织地整理起来。

每当我阅读一段原理与说明时,都会尽可能去实际动手模拟或撰写程式验证,一方面可以确认自己的理解是正确的,一方面也可以更加熟悉并体会其内涵,并了解其应用层面。当然,人的记忆力是有限的,最终的验证结果与结论,务必有系统的整理,以方便未来能够快速查阅。

这中间的过程不仅枯燥,更是乏味,而且很寂寞,然而却是必经的过程。就我的了解,业界的开发人员,可能最缺乏的就是这一段学习过程,毕竟大家都急于对老板与客户负责,交差结案,因此常常会流于追逐实用的技巧。但是大家别忘了,彻底了解技术架构,可能会比追逐新工具来得可长可久,毕竟许多原理都是一以贯之的。就以 .NET 而言,从 2002 推出到目前的 .NET 3.5,基本的大架构并没有什么不同,只是一直在既有的基础上累加并扩充,如果你当初就能够秉持正确的原则来学习,或许现在会更加感觉如鱼得水。

如何让自己与众不同

如果要在这个产业长久发展,你必须让自己与众不同,而不同之处不仅仅是技术而已。

我很喜欢问开发人员一个问题:除了高人一等的技术能力之外,你还有什么?我常跟别人说,你再会写程式,你也只是个程式设计师。这句话听起来或许很伤人。不过就像过去很多人问我写书要写到几岁一样,我以前从来不觉得这是个问题,但是当年纪大了,我开始思考这个问题。因此我现在问你,你要写程式写到几岁呢?难道你要一辈子写程式吗?你以为每一位会技术的人都可以像 Bill Gates 一样吗?你以为 Bill Gates 就只是会技术吗?他没有其他的特质吗?

也不是说你不能一辈子写程式,不能一辈子当技术人员。因为有些人真的不适合当主管,不适合开公司做生意。如果真的想要长久做技术研究,你就需要一个比较稳定的环境。可能是在学校或研究单位,亦或是大型的私人企业。大家要早点想这个问题,毕竟中年转业不容易啊。

我也常告诫人,不要让高人一等的技术能力成为反效果。正所谓:工作的金字塔,一人抵三人。你技术能力强,以一敌三,老板为什么要帮你升职,因为要用三个人补你的缺,而且你真的看起来不像个主管。为什么升任主管的常常是你认为技术不太行的,只会耍嘴皮子的。结果是什么呢,你花了很长的时间与很大的努力来证明自己,可是等你年纪大了,公司可能觉得你太老,不想给你机会。唉!真是残酷啊!

或许你可以思考如何进一步融入热情人文素养与非技术的专业素养,或许这样,可以让你更发光发热。我在 2007 年之前的好几年都不讲研讨会,因为我不觉得我可以讲得比以前更好,我觉得难以再超越过去的成绩,我有疲惫感,也就是说我没有热情。与其勉强上台,还不如不上台。假设我自己都不 热爱这样的工作,如何让听众去热爱呢。不要忘记,任何人比你都敏感。千万不要以为可以混水摸鱼,蒙混过关。

我还想问你,你的特质是什么。为什么同一首歌,由不同的人演唱,会有完全不同的效果。因为他捉住其中的感觉,能做最佳的诠释。反过来说,量身订制,因此你应该寻找最适合你的表现方式。

千万记得,在演讲、讲课或做简报时,是不可以忘我的,要随时与台下观众保持互动。所谓的互动不见得是言语的互动,而是透过你的眼神、话语和肢体语 言来传达讯息,而从听众的表现、坐姿等等,都可以看出他们的反应,并随时动态调整。因此我较不喜欢列出太细的项目,保持动态调整的弹性,而且准备的内容应 该要比实际的会议时间来得长和丰富。

最后建议科技人应当走出技术的象牙塔,培养良好的人际关系,展现不凡的热情与活力。

抓住机会,秀出自己

资讯人员一般来说都比较内向,比较沉默,不喜欢表现。可是我真的鼓励大家,抓住机会,秀出自己(Present yourself)。想当初我第一次到微软并且帮微软讲研讨会,根本就是毛遂自荐的。重点是,当别人给我机会时,我充分掌握住了。

成功是性格、努力、与机运的结合。我们常说性格决定命运、努力要有方法和策略、最后还需要天时、地利以及人和的机运。你说路遥知马力,日久见人心,问题是有机会表现时,你闷不吭声,好像不存在。其结果是,人家还以为你能力不够。

当然,如果你是金玉其外,败絮其中,也撑不了太久。但是如果你真的有能力,给你一个良心的建议:不要只做沉默的工蜂。毕竟机会稍纵即逝,逝者不可追。

在这里提供大家一项真实的统计资讯,当你说话的时候,人们接收到的讯息是什么?请注意,有 93% 来自肢体语言和语调:

  • 55%:外型与肢体语言。
  • 38%:语调。
  • 7%:话语(内容)。

为什么我要特别强调上述的数据,因为我听很多资讯人员讲话的时候,真的很想扁人。不是说话的音调没有高低起伏,就是喃喃自语不知所云,不然就是自顾自地讲,完全沉醉在自己的话语和情绪中。唉!真是昏倒。

另外还有一项重要的数据提供给大家。一场演讲后,人们还记得什么:

  • 过了 1 小时,人们会忘掉 50% 的内容。
  • 过了 1 天,人们会忘掉 80% 的内容。
  • 过了 1 周,人们会忘掉 95% 的内容,剩下的记忆是:故事、例子、亲生经历。

这也就是为什么我们即使谈的是技术性的研讨会,也要举许多的实例与成功案例,因为这样印象才会深刻。

反省的能力

策略一定要动态调整。人们往往会活在过去的成功模式中,然而今非昔比,策略应时时作调整。

千金难买早知道,千金难买回头望。也许我们无法抓住机会,但是藉由不停的反省与修正,也能让自己往对的方向前进。

健康是最大的财富

大家都听过这句话吧:健康的身体是 1,没有这个 1,后面的 0 将毫无意义。美国前总统雷根曾经说过:It is true hard work never killed anyone, but I figure, why take the chance?(努力工作确实不会致人死命,但我想,何必冒险?)

当然,我们之前一直提到要努力,加班也不要抱怨,问题是没人要你熬夜与晚起,你就不能早睡早起吗?时间一样长得很,更重要的是,这样对身体有益。很多东西在失去了之后还可以找回,但是健康不能。刻骨铭心的恋情可能会永远占住你心中的角落,不时还会隐隐作痛,问题是它不会夺去你的生命;错过的电影,还有下一场,健康可能没有;这个男生不爱你,没关系,下一个男人会更好,只要你有健康的身体。

过去六、七年来,我一直保持运动的习惯,饮食也是清淡到不行,有人说我过得是清教徒的生活。运动不仅让身体更舒畅,也让大脑能够休息与清醒,为下一次的吸收做好准备。建议大家也尝试看看吧!

结论

我常告诉朋友,不论你的年纪多大,现在永远是有生之年最年轻的时候,不论过去的事迹多么辉煌终究已成过去。要想在未来成就些什么,唯有把握现在、努力实践。我想我已找到工作的宿命了。选择我所愿,坚持我所选,这算不算是一个现代版的城市英雄呢?共勉之!真挚的叮咛其实信息必非笔者读大学时的本科,多年来完全是靠自修、自学。虽然辛苦,但也累积不少宝贵经验。特在此归纳整理出下列信条,提供有志踏上这条路的朋友参考:

  • 学习计算机务必坚持且持久,最忌三分钟热度。
  • 遇到任何问题,一定要想尽办法解决。因为在解决问题的过程中,您的功力已不知不觉的提升。
  • 学习计算机最忌闭关自守,在象牙塔中摸索,应与人交流,并不耻下问。
  • 勿吝啬与人分享您研究的心得,或许您沾沾自喜的技巧,别人早已不屑。
  • 永远要不停的吸取新知。信息业进步之快超乎想象,没有人是永远的赢家。但是输家却有,那就是自以为是者。
  • 学计算机并不一定要拘泥于某种固定模式与步骤。
  • 永远保持一颗好奇的心。
  • 学会与计算机沟通虽然重要,但是如何与人沟通更重要。
  • 家人的支持与鼓励将是您最佳的动力。

人在好的时候要想到不好的时候,人在不好的时候不要去想好的时候,而是应该静下心来思考方法与策略,然后迅速脱离谷底。当然,我自己对未来也有很多期许,希望能再创高峰。

有人说:发现一瓶好水,令人心旷神怡;发现一位好作者,令人眉开眼笑。这么多年来,我写书一向注重品质,期许自己能够成为让人感到眉开眼笑的 好作者。过去如此,现在如此,未来也将如此。近 20 年来,经过起起伏伏,风风雨雨,今天还站在这里,我是心存感激的。下次再见,谢谢大家。

章立民 2008/06/23