写给未来程序员的建议

给计算机系学生的建议

大概在一两年前,我还在高喊,有着良好用户体验的Windows图形界面式客户端(rich Windows GUI client)将是未来的潮流。尽管我这样说了,但是时不时地还是有大学生写信给我,问我对于找工作有何建议。既然现在又到了招聘季节,我想我还是把我的标准建议写下来,让那些大学生读一读,笑一笑,然后忘掉。

大多数大学生都很自以为是,从不会虚心向前辈求教,他们觉得那样太麻烦。但是,很幸运,在计算机领域,这样做是对的。因为他们的前辈很可能会说一些不靠谱的话,比如“到2010年之前,对纸带打孔员的需求将超过1亿人”,还有“目前Lisp语言的相关人才非常抢手”。

我也不能例外,当我在给大学生提供建议时,我完全不知道我在说些什么。我已经无可救药地属于过时人物了。我真的搞不清楚AIM是什么,我仍然在使用一种老掉牙的叫作Email的东西,真是太恐怖了。那玩意流行的年代,人们听音乐还是用一种又扁又圆叫作CD的小圆盘。

所以,你最好直接漠视我在这里说的话,将时间用来开发某种可以使其他学生找到约会对象的在线软件上。

尽管如此,我还是会说出我的建议。

如果你喜欢编程,那么你真是受到了上天的眷顾。你是非常幸运的少数人之一,能够以自己喜欢的事谋生。大多数人没有这么幸运。你认为理所当然的观念“热爱你的工作”,其实是一个很现代的概念。通常的看法是,工作是一种让人很不开心的事,你为了拿工资才不得不去上班。你工作的目的是为了攒下钱去干那些自己真正喜欢干的事,但是前提是你得等到65岁退休之后才行,而且还有不少条件。条件一,你的积蓄必须足够多;条件二,你没有老到走不动,你还有体力去干那些事情;条件三,你喜欢的事情不需要用到脆弱的膝盖、昏花的视力,也不要求你走上一里地不喘气,等等。

我刚才说到哪里了?对了,我要提建议。

二话不说,下面就是乔尔针对计算机专业学生的7条免费建议。(绝对超值哦。)

(1) 毕业前练好写作。

(2) 毕业前学好C语言。

(3) 毕业前学好微观经济学。

(4) 不要因为枯燥就不选修非计算机专业的课程。

(5) 选修有大量编程实践的课程。

(6) 别担心所有工作都被印度人抢走。

(7) 找一份好的暑期实习工作。

我会一一解释这7条建议。如果你头脑简单到我说什么你就做什么,那么你就不必读下去了。在这种情况下,我还要加上一条:

(8) 寻求专业人士的帮助,培养你的自信心。

毕业前练好写作

如果不是LinusTorvalds不断地散布福音,请问Linux操作系统会成功吗?虽然他是一个非常聪明的计算机天才,但是Linux吸引来全世界一大批志愿者的真正原因却是Linus Torvalds的表达能力。他通过电子邮件和邮件列表用书面形式传播自己的想法,最终引起了所有人的注意。

你听说过现在风靡一时的“极限编程”(Extreme Programming)吗?我在这个地方不谈我对极限编程的看法,我只说如果你听过这个词,那么原因就是它的倡导者都是一些非常有才华的作家和演说家。

即使我们缩小范围,将目光局限在任何一个软件开发团体中,你也会发现该团体中最有权势和影响力的程序员正是那些表达能力强的程序员,他们无论是做书面表达还是做口头表达,都能够清晰、自如、具有说服力地传达观点。此外,长得高也有助于提升影响力,不过这个不取决于你。

一个普通程序员与一个优秀程序员的区别,不在于他们懂得的编程语言谁多谁少,也不在于他们喜欢用Python语言还是喜欢用Java语言,而在于他们能否与他人交流思想。如果你能说服其他人,你的力量就可以得到放大。如果你能写出清晰的注释和技术规格说明书,其他程序员就能够理解你的代码,因此他们就能在自己的代码中使用,而不必重写。如果你做不到这一点,你的代码对其他人就没有价值。如果你能为最终用户写出清晰的使用手册,其他人就能明白你的代码是用来干什么的,这是唯一让别人明白你的代码有何价值的方法。SourceForge上有许多优美的、有用的代码,但是它们都像被埋葬了一样,根本没人来用,原因就是它们的作者没有写好使用说明(或者压根就没写)。这样一来就没有人知道他们的成果,他们杰出的代码就衰亡了。

如果一个程序员不会用英语写作、没有良好的写作能力,我就不会雇他。如果你能写,不管你去哪家公司工作,你很快就会发现写作技术文档的任务会落到你头上,这意味着你已经开始在放大自己的影响力了,管理层正在注意到你。

大学里有些课程被公认为“写作密集型”(writing intensive)课程,这就是说为了拿到学分,你必须写作多得可怕的文字。一定要去上这样的课程!不要管学科,只要这门课每周甚至每天都要你写东西,你就去上。

你还可以动手写日记或者网志。你写得越多,写作就会变得越容易。写起来越容易,你就会写得越多。这是一个良性循环。

毕业前学好C语言

第二点我要讲的是C语言。请注意,我说的是C语言,而不是C++。虽然在实际使用中C语言已经越来越罕见,但是它仍然是当前程序员的共同语言。C语言让程序员互相沟通,更重要的是,它比你在大学中学到的“现代语言”(比如ML语言、Java语言、Python语言或者其他正在教授的流行垃圾语言)都更接近机器。你至少需要花一个学期来了解机器原理,否则你永远不可能在高级语言的层次写出高效的代码。你也永远无法开发编译器和操作系统,而它们恰恰属于目前程序员能够得到的最佳工作之列。别人也永远不会放心将大型项目的架构设计交给你。我不管你懂多少延续(continuation)、闭包(closure)、异常处理(exception handling),只要你不能解释为什么while (*s++ = *t++);的作用是复制字符串,或者不觉得这是世界上对你来说再自然不过的事情,那么你就是在盲目无知的情况下编程。在我看来,这就好像一个医生不懂得最基本的解剖学就在开处方,他看病的根据完全是因为那些娃娃脸的医药销售代表说这种药有用。

毕业前学好微观经济学

如果你没有上过任何经济学课程,那么我首先来作一个超短的评论:经济学是这样一门学科,刚开始学的时候轰轰烈烈,有许多有用的、言之有理的理论和可以在真实世界中得到证明的事实,等等;但是,再学下去就每况愈下,有用的东西就不多了。经济学一开始那个有用的部分正是微观经济学,它是商业领域所有重要理论的基础。跟在微观经济学后面的东西就不行了。你接下来学的是宏观经济学,如果你愿意,,尽管跳过去,也不会有什么损失。宏观经济学开头的部分是利息理论,内容比方说是利率与失业之间的关系,但是怎么说呢,看上去这部分里面还没有被证实的东西多于已经被证实的东西。学完这部分,后面的内容越来越糟糕,许多经济学专业的学生实际上都变成在搞物理学,因为这样才能在华尔街上找到更好的工作。但是不管怎样,你一定要去学微观经济学,因为你必须搞懂供给和需求,你必须明白竞争优势,你必须理解什么是净现值(NPV),什么是贴现,什么是边际效用。只有这样,你才会懂得为什么生意是现在这种做法。

效果只能是既费时又没有胜利,再聪慧的人也没法成学。

写给未来程序员的建议

相关文章:

你感兴趣的文章:

标签云: