我的七个建议(软件随想录)——Joel Spolsky [图片]

上传人:gg****m 文档编号:203577784 上传时间:2021-10-22 格式:DOC 页数:7 大小:92.50KB
返回 下载 相关 举报
我的七个建议(软件随想录)——Joel Spolsky [图片]_第1页
第1页 / 共7页
我的七个建议(软件随想录)——Joel Spolsky [图片]_第2页
第2页 / 共7页
我的七个建议(软件随想录)——Joel Spolsky [图片]_第3页
第3页 / 共7页
我的七个建议(软件随想录)——Joel Spolsky [图片]_第4页
第4页 / 共7页
我的七个建议(软件随想录)——Joel Spolsky [图片]_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《我的七个建议(软件随想录)——Joel Spolsky [图片]》由会员分享,可在线阅读,更多相关《我的七个建议(软件随想录)——Joel Spolsky [图片](7页珍藏版)》请在金锄头文库上搜索。

1、我的七个建议(软件随想录)Joel Spolsky溷片作者:Joel Spolsky编若按山于Joel Spolsky的双重身份(昔日耶鲁大学 计算机系学长,今口 Fog C“ek软件公司的CEO),所以听听他的建议,对于当今无数困扰 于就业压力的中国高校计算机专业学子來说,是大有裨益的。你们会发现,大多数建议,都 在强调“软实力”的价值。本文转载自软件随想录(作者:Joel Spolsky ,译者:阮一峰, 2009年12月岀版),感谢北京图灵文化发展有限公司的支持。如果你喜欢编程,那么你真是受到了上天的眷顾。你是非常幸运的少数人之一,能够以 自C喜欢的事谋生。大多数人没有这么幸运。你认为理

2、所当然的观念“热爱你的工作”,其实 是一个很现代的概念。通常的看法是,工作是一种让人很不开心的事,你为了拿工资才不得 不去上班。你工作的目的是为了攒下钱去干那些自C真止喜欢干的事,但是前提是你得等到 65岁退休之后才行,而且还有不少条件。条件一,你的积蓄必须足够多;条件二,你没有 老到走不动,你还有体力去干那些事情;条件三,你喜欢的事情不需要用到脆弱的膝盖、昏 花的视力,也不要求你走上一里地不喘气,等等。我刚才说到哪里了?对了,我要提建议。毕业前练好写作如果不是Linus Torvalds不断地散布福音,请问Linux操作系统会成功吗?虽然他是一 个非常聪明的计算机天才,但是Linux吸引來全

3、世界一大批志愿者的真正原因却是 Linus Torvalds的表达能力。他通过电子邮件和邮件列表用书而形式传播自C的想法,最终 引起了所有人的注意。你听说过现在风靡一时的“极限编程 (Extreme Programming)吗?我在这个地方不 谈我对极限编程的看法,我只说如果你听过这个词,那么原因就是它的倡导者都是一些非常 有才华的作家和演说家。即使我们缩小范围,将目光局限在任何一个软件开发团体中,你也会发现该团体中最有 权势和影响力的程序员止是那些表达能力强的程序员,他们无论是做书面表达还是做11头表 达,都能够清晰、自如、具有说服力地传达观点。此外,长得高也有助于提升影响力,不过 这个不収

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

5、原因就是它们的作者没有写好使用说明(或者压根就没写)。这样一來就没有人知道他们的 成果,他们杰出的代码就衰亡了。如果一个程序员不会用英语写作、没有良好的写作能力,我就不会雇他。如果你能写, 不管你去哪家公司工作,你很快就会发现写作技术文档的任务会落到你头上,这意味看你已 经开始在放大自己的影响力了,管理层止在注意到你。大学里有些课程被公认为“写作密集型” (writing intensive)课程,这就是说为了拿到学 分,你必须写作多得可怕的文字。一定耍去上这样的课程!不耍管学科,只耍这门课每周其 至每天都要你写东西,你就去上。你还可以动手写口记或者网志。你写得越多,写作就会变得越容易。写起來

6、越容易,你 就会写得越多。这是一个良性循环。毕业前学好C语言第二点我要讲的是C语言。请注意,我说的是C语言,而不是C+。虽然在实际使用 中C语言已经越来越罕见,但是它仍然是当前程序员的共同语言。C语言让程序员互相沟 通,更重耍的是,它比你在大学中学到的“现代语言”(比如ML语言、Java语言、Python 语言或者英它止在教授的流行垃圾语言)都更接近机器。你至少需要花一个学期來了解机器 原理,否则你永远不可能在高级语言的层次写出高效的代码。你也永远无法开发编译器和操 作系统,而它们恰恰属于日前程序员能够得到的垠佳工作Z列。别人也永远不会放心将大型 项目的架构设计交给你。我不管你懂多少延续(co

7、ntinuation)、闭包(closure)、异常处理 (exception handling),只要你不能解释为什么while (*s+ = *t+);这句代码的作用是复制 字符串,或者不觉得这是世界上对你来说再自然不过的事情,那么你就是在盲目无知的情况 下编程。在我看来,这就好像一个医生不懂得最基本的解剖学就在开处方,他看病的根据完 全是因为那些娃娃脸的医药厂商销售代表说这种药有用。毕业前学好微观经济学如果你没有上过任何经济学课程,那么我首先来做一个超短的评论:经济学是这样的学 科之一,刚开始学的时候轰轰烈烈,有许多有用的、言之有理的理论和可以在真实世界中得 到证明的事实,等等;但是,再

8、学下去就每况愈下,有用的东西就不多了。经济学一开始那 个有用的部分止是微观经济学,它是商业领域所有重要理论的基础。跟在微观经济学后面的 东西就不行了。你接下來学的是宏观经济学,如果你愿意,尽管跳过去,也不会有什么损失。 宏观经济学开头的部分是利息理论,内容比方说是利率与失业Z间的关系,但是怎么说呢, 看上去这部分里面还没有被证实的东西多于己经被证实的东西。学完这部分,后面的内容越 来越糟糕,许多经济学专业的学生实际上都变成在搞物理学,因为这样才能在华尔街上找到 更好的工作。但是不管怎样,你一定耍去学微观经济学,因为你必须搞懂供给和需求,你必 须明白竞争优势,你必须理解什么是净现值(NPV),什

9、么是贴现,什么是边际效用。只有 这样,你才会懂得为什么生意是现在这种做法。为什么计算机系的学生也应该学经济学?因为,从经营一家公司的角度來看,比起那些 不懂的程序员,一个理解基本商业规则的程序员将会更有价值。就是这么简单。我无法告诉 你有多少次我是那样地充满挫折感,因为我看到了太多的提出一些疯狂的想法的程序员,这 些想法在代码上也许可行,但在资本主义I比界中毫无意义。如果你懂得商业规则,你就是一 个更有价值的程序员,你会因此得到回报的,但是前提是你要去学习微观经济学。不要因为枯燥就不选修非计算机专业的课程。想提高GPA绩点的一个好方法就是多选修非计算机系的课程。请千万不要低估你的 GPA的重大

10、意义。千千万万的人事经理和招聘人员在拿到一份简历的时候,第一眼就会去 看GPA,包括我也是这样。我们不会为这种做法道歉。为什么?因为GPA不反映单个的成 绩,血是代农了许多个教授在一段很长的时间中,在不同的情况下,对你的衣现的一个总的 评估。SAT成绩难道不够吗?哈,那只不过是一场几个小时的测试罢了。GPA中包括了四 年大学期间你的小论文、期中考试和课堂表现,总数有几百次之多。当然,GPA也有自己 的问题,不是方分之百准确。比如,这些年來,老师对学生的打分越來越宽松,学习成绩有 通货膨胀的趋势。再比如,GPA无法反映课程的难度,没人能够看出你的GPA是來自无名 社区大学家政系的轻松课程还是来自

11、加州理工学院针对研究生的量子力学课程。渐渐地,我 形成了一套自C的做法,首先我会过滤掉所有来自社区大学、GPA低于2.5的简历,然后我 会要求剩下的人给我寄成绩单和推荐信。我再从中发现那些成绩一贯优秀的人,而不是那些 仅仅在计算机系课程中得到高分的人。为什么我要关心某人的“欧洲历史”课程成绩呢,毕竟作为雇主我要找的应该是程序员 啊?何况,历史是那么枯燥,不得高分很正常。哦,这么说來,你的意思是我应该雇用你, 而不用考虑一日工作变得枯燥你会不会努力工作?别忘了,在编程工作中也有很枯燥的东 西。每一项工作都有枯燥难耐的时刻。我不想雇用那些只想干有趣事情的人。选修有大量编程实践的课程我依然淸楚记得我

12、发誓绝不读研究生的那一刻。那是在一门叫做“动态逻辑”的课程上, 教师是活力十足的耶魯大学教授Lenore Zuck,她是计算机系那些聪明的老师中最聪明的人 之一。如今,山于记忆力糟糕,我己经差不多把这门课的内容忘光了,但是不管怎么说,在 这里我还是想要对付着说一下。大致上,形式逻辑的意思是说,如果条件成立,你就能证明 结论也成立。比如,根据形式逻辑,己知“只耍成绩好,就能被雇用”,然后假定“Johnny的 成绩好”,你就可以得到一个崭新的结论Johnny会被雇用”。这完全是经典方法。但是,一 个解构主义者(deconstructionist)只需要10秒钟就能破坏形式逻辑中所有有用的东西。这

13、样一來,留给你的只是一些趣味性,而不是实用性。现在再来说动态逻辑。它与形式逻辑其实是一冋事,但是必须再多考虑时间因素。比如, “你打开灯之后,就能看见自C的鞋子”,已知“灯以前是亮的”,那么这就意味着“你看见了 自己的鞋子对于像Zuck教授那样聪明的理论家,动态逻辑充满了吸引力,因为它看上去很有希望 让你在形式上证明一些计算机程序的相关理论问题。这样做说不定很有用。比如,你可以用 它在形式上证明,火星漫游车的闪存卡不会发生溢出(overflow)问题,不会因血整天一遍 乂一遍地重启,耽误了它在那颗赤红色的星球上漫游寻找火星人马文(Marvin the Martian) 在第一堂课上,Zuck博

14、士写满了整整两面黑板,其至黑板旁边的墙上都写上了很多证 明步骤。需要证明的问题是,有一个控制灯泡的开关,现在灯泡没有亮,这时你打开了开关, 请证明灯泡将会点亮。整个证明过程复杂得不可思议,处处都是陷阱,必须十分小心。保证这个证明不出鉛太 困难了,还不如直接相信打开开关灯就会亮。真的,虽然证明过程写满了许多块黑板,但是 还是有许多中间步骤被省略了,因为如果要从形式逻辑上完報证明所有步骤,那就坝碎得无 法形容了。许多步骤是用务种经典的逻辑证明方法推导得到的,包括归纳法、反证法等,其 至有些部分述是由旁听的研究生证明的。留给我们的课后作业是证明逆命题:如果灯原來是关着的,现在却亮了,那么请证明开 关

15、的状态一定同原來相反。我动手开始证明,我真的去证明了。我在图书馆里待了很长时间。我对照肴Zuck博士的原始证明想依样画葫芦。研究了几个小时之后,我在英中发现了 一个错误。可能我抄写的吋候抄错了,但是这使得我想通了一件事。如果花费3个小吋,写 满了-块又一块的黑板,每一秒钟都可能出鉛,最后能够证明的却只是一个很琐碎的结论, 那么这种方式有多大的实用性呢?在活生生、充满趣味的现实I廿界中,你永远都不会有机会 使用它。但是,动态逻辑的理论家们对这一点不感兴趣。他们看上它不是因为它有用,血是因为 它可以为他们带來终身教职。我放弃了这门课,并且发誓绝不会去读计算机科学的研究生。这个故事告诉我们,计算机科

16、学与软件开发不是一冋事。如果你真的非常幸运,你的学 校可能会开设很像样的软件开发课程。但是另一种可能是,你的学校根本不教你在现实中如 何编程,I大I为精英学校都觉得,教授工作技能最好留给职业技术学校、犯人重返社会的培训 项目去做。你到处都能学怎么写代码。别忘了,我们是耶魯大学,我们的使命是培养未來的 世界领袖。你交了 16万美元的学费,却在学循环语句的写法,这怎么可以?你以为这是什 么地方,难道是机场沿途的酒店里临时拼凑起來不靠谱的Java语言培训班?哼哼。麻烦在于我们没有一种真止教授软件开发的专门学校。你如果想成为一个程序员,你可 能只能选择计算机科学专业。这是一个不错的专业,但是它同软件开发不是一回事。在那些 400等级的课程代号中,去寻找名称中带有-Practicum-这个词的课程吧(编者注:指供人实 习的课程)。不要被这个拉丁语单词吓倒,这些都是有用的课程,之所以起这种名字,只是 为了让那些文

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号