李开复给程序员的七个建议

1.练内功。
不要只花功夫学习各种流行的编程语言和工具,以及某些公司招聘广告上要求的科目。要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络、离散数学等基础课程学好。大家不妨试试高德纳斯所著的The Art if Computer Programming里的题目,如果你能够解决其中的大部分题目,就说明你在算法方面有一定的功力了。
2.多实战。
通过编程的实战积累经验、巩固知识。很多中国大学生毕业生缺乏编程和调试经验;学习C语言,考试过关就算学会了;课题项目中,只要程序能够编译、运行、并且输入输出满足就算了事。就些做法是不行的。 写程序的时候,大家必须多想想如何 把程序写得更加精炼、高效、高质量。建议大家争取在大学四年中积累编写十万行代码的经验。我们必须明白的是:好程序员是写出来的,不是学出来的。
3.求实干。
不要轻视任何实际工作,比如一些看似简单的编码或测试。要不懈追求对细节一丝不苟的实干作风与敬业精神。我发现不少程序员对于知识的掌握很肤浅,不求甚解、没有好奇心,不会刨根问底。比如,学会了C++,是否了解一个对象在编译后,在汇编代码中是如何被初始化的?这个对象的各个成员在内存中是如何存放的?当一个成员函数被调用时,编译器在汇编代码中加入了哪些额外的动作?虚函数的调用是如何实现的?这些东西恐怕在编程语言或编译原理中都没有详细提到,只有通过踏实的实干才能真正掌握。

4.重视数学学习。
数学是思维的体操,数学无处不在。学计算机至少要学习离散数学,概率论,布尔代数,集合论和数理逻辑。这些知识并不难,但是对你未来的工作帮助会很大。尤其当你对一些“数学密集型”的领域如视频,图像处理等有兴趣时,这些些知识将成为你手中的利器。

5.培养团队精神。
学会与人合作。今天的软件工程早已经不是一个人可以单独操作的,而必须靠团队合作才能成功。不懂得合作的人是不能成大器的。大家要去寻找可以与人一起做项目的机会。

6.激励创新意识、培养好奇心、不要死记硬背。
没有掌握某种算法技术的根本原理,就不会有应变和创新的能力。想成为一位好程序员(其实从事任何一个行业都是如此),重要的是要培养钻研,好奇,创新,动手,合作的优秀习惯,不满足于填鸭,不满足于考试交差,不满足于表象。这不是学几门课就能够一蹴而就的。

7.有策略地“打工”。
在不影响学业的前提下,寻找真正有意义的暑期工作或兼职。去找一个重视技术的公司,在一个好的“老板”指导下完成真正会被用户使用的程序。不要急于去一个要你做“头”而独挡一面的地方,因为向别人学习才是你的目的。找工作也是一样,不要只看待遇和职衔,要挑一个你能够学习的环境,一个愿意培养员工的企业,一个重视你的专业的公司。最后,还要挑一个好老板。
希望大家都能够把握机会,养成好的学习习惯,把算法学精学透;希望大家都能有一个美好的未来!
posted @ 2010-04-16 22:05  六不朽  阅读(755)  评论(0编辑  收藏  举报