8月13日,NBA巨星中锋奥尼尔,姚明崇拜的榜样,来华访问。有记者问道奥尼尔对“将之道”有何理解时,奥尼尔表示一个球员要在球场上成为领袖,必须要有精湛的个人技术,在困难的时刻带领全队取胜。而这个技术则是由不断的刻苦训练才能锻炼出来。他还说:一切都从基本功开始,而不是一味的去追求视觉上的花哨。我们现在美国队的球员上场就会胯下运球其他花哨的动作。真的要想拿到冠军,需要一切从基本功去练习,只有把基本功练好了,你才有希望。
学习软件是一样的。要想成为一名优秀的软件人才,一定要刻苦训练基本功,在困难的时刻以精湛的软件技术克服困难取胜。例如,新产品急需的新技术,你能不能发明出来?一个新产品因一两个严重的bugs不能上市,你能不能尽快地修复它。这些都需要精湛的技术和经验。
我在微软开发工具部门(Visual Studio)工作时,曾参与一个新产品的研发。我们需要一个图形学新算法,微软没有。我们试图从外面购买这项技术,谈来谈去,花一百万美元只能买到一个执行程序而没有源代码。这对软件整合很不利。于是我自告奋勇,承担了这个算法的研发。我用在学校学到的算法,数据结构,数学等基础知识,成功地发明了一个新算法。此后,这个算法用在多个微软的产品中,包括 Visual Studio, SQL,Access, Visual InterDev, 等等。我也因此获得了我的第一个美国技术专利。
但是,我们现在有不少学生过于浮躁,不愿吃苦,不愿意练基本功,总想找捷径,太过于急功近利。这也许是受到当前我们社会中的浮躁风气的影响。例如,曾经有学生问我,说他不喜欢编程序,太累,说他想做架构师,或软件技术管理,他问我,怎么学才能达到这个目的。我说,你想成为成功的架构师或技术管理人才的机会太小了。我告诉他,我在微软工作了十三年,见到的架构师和技术开发经理都是,过曾经是优秀的程序员,包括比尔盖兹。
因此,铁杵磨成针,学好基本功,真的是你未来成功事业的基础。什么是基本功呢?
数学是内功!离散数学教你计算机的方式思维。是计算机逻辑和算法的基础。高等代数不仅是很好的数学训练,也是程序和算法分析的工具。概率论和数理统计在互联网时代尤其重要,被大量应用于数据挖掘。微积分是离散世界与连续世界的桥梁,教你抽象思维,也是数值分析的基础。
数据结构,算法和程序设计是程序员的看家本领,像篮球里的运球和投篮,学不好,怎么得分?中国的软件业因商业应用的发展,正面临着极大的挑战和机遇,例如,中国的无线通信已走在世界前沿,照抄照搬已不够用了,急需创新软件技术,包括算法和系统。
计算机/网络体系结构和操作系统教你计算机的基本工作原理。理解它,能帮助你理解软件内部的工作原理,使你从肤浅的皮毛走到深层,使你能写出架构合理,性能优越的软件,使你能成为调试和编写程序的高手。
英语的重要性不用我说了,是你又一只眼睛,又一张嘴,使你能与外界沟通。能进微软中国工作的人,几乎所有的人都会有机会去微软美国总部培训和工作,那里没人跟你讲中文。
但是,这么多东西,又要动手做,实践,怎么都学精学好哪? 我的建议是,有目的地学。用你目的来确定你的重点,来驱动你的学习。 这是你的又一个选择。