Joel Spolsky在耶鲁的演讲无责任导读
By 刘未鹏(pongba)
C++的罗浮宫(http://blog.csdn.net/pongba)
大嘴Joel最近在耶鲁作了场演讲,照例是诙谐尖锐,有趣有益,目前他的blog上放出了两部分。
因g9老大在TopLanguage上推荐,就一溜小跑去读了,读完了觉得很有意思,因为没有时间全文翻译,所以就总结了一下其中的要点和有趣的地方,也就是下面的无责任导读:
第一部分(http://www.joelonsoftware.com/items/2007/12/03.html)导读:
1. 搞IT的,一定要尽早知道自己到底适不适合搞理论(PhD),这可以通过去上一些很PhD的课来自我评估(当年Joel是无意间撞上了,那个教授在第一堂课为了证明f=!f——f是bool变量——在运行偶数次之后的值还是原来的,整堂课(还加上拖课的时间)写了一黑板,用上了归谬法、归纳法、穷竭法,最后绝望地用上了“研究生法”——一个研究生在她绝望地发现忘记了某步证明的时候站起来说,“啊,对对,就是那样证明的”…)。
2. 搞IT的,一定要尽早知道自己到底适不适合搞coding。这同样可以通过上一些很coding的课来自我评估(再次,Joel当年是被逼的。当年那个教授每星期布置40个小时才能完成的coding作业,OMG… 给的学分是1.5,但由于0.5只有遇到另一个0.5才算1,否则不算(晕,5舍6入啊),同时那个系却另外有两个多出0.5的,结果这门课的0.5等于白拿了。Orz…)
3. 对于软件质量这个说法,要以用户意见为核心考量。根据经济学中的边际效应递减(Diminishing Return),在bug方面花的精力越多,得到的收益也越小。因此,将"完全无bug"作为衡量质量标准也许在一些非常极端的环境下(军事?金融?)是有用的,然而在大多数商用软件方面都是没那么重要的。
4. Windows把GUI作为第一类平台导致了Windows上的各种应用只提供GUI操作逻辑,而不提供可编程的非GUI接口;进而导致程序员,比如说,没法调用photoshop来进行批处理。
5. 软件的外观很重要:P
6. 搞软件正确性验证的一帮geeks脑子全都灌水了,类似于搞物理的去搞永动机。(Joel的逻辑是,要验证正确性,首先要确定"什么是正确的",而要确定什么是正确的,就必须先写出一个关于某个软件的正确行为的严格定义来,这个定义必须要严格到...极其严格...才行,要能够涵盖所有定义的行为和未定义的行为...严格到其"熵"跟代码自身的熵都一样了,可以互相转换了。这么一搞,等于把一个烂摊子转成了另一个同样烂的摊子...无语...
7. 高水平和低水平的程序员文化也反映在大学的课程上,从好的大学(Linux&Unix加理论课程),到差的大学(Visual Studio 2005入门精要,21天搞定SQL Server啥的…)。
关于第一部分的演讲,再转一段g9发在TopLanguage上的感想:
“Joel的文章一向有趣。文章里照例不少营养。比如说软件质量不能被自动检测出。穿西服的在某种意义上未必不懂得什么是软件质量。里面被Joel鄙视的CS理论教育简直就是我当年上学的翻版。看得我狂笑。比如说用动态逻辑证明f := not f的某个性质非常困难。比如说要写出机器能验证的spec难度不比写 出程序小,无非是把写程序换成写spec罢了。比如说"At Ivy League institutions, everything is Unix, functional programming, and theoretical stuff about state machines. "。记得大四时看到一门课,叫Program Design,就想当然地修了。哪知这门课就和那门动态逻辑课一样,证明比程序复杂,连写出对问题的描述都比程序复杂。一怒之下放弃。幸好我的导师见机得快,不再追求自动验证spec,而转为追求检验程序的某些性质。虽说大众了点,但比用范畴论验证需求这种不靠谱的研究有意思多了。”
break
continue
以下是第二部分(http://www.joelonsoftware.com/items/2007/12/04.html)导读:
1. 别做in-house(内部用)软件,千万别做in-house软件,做in-house软件不如回家卖红薯。为什么?做in-house软件,你永远没机会把事情做对,只有机会把事情做得差不多。比如,一个做铝罐的厂会叫,比如说,IBM,提供程序员给他们做软件,而IBM狮子大开口——300刀每小时——提供一个学了6星期"叨耐特"的毕业生,你说雇主还会让你慢慢磨蹭把功能完善更完善?不不,只要主要功能实现,管什么界面,管什么鲁棒性,赶紧拍屁股走人,或者拍屁股去修补别人去年留下的烂摊子。于是,你搞出来的东西就跟狗啃的一样而且你还不能啥啥语言酷就用啥啥语言,Ruby?Ajax?不不,您老还是打开Visual Studio拖几个控件,连个把数据库,赶紧把功能给搞定了吧。300刀一小时,你拿不到,我还是要掏腰包的。所以,忘了"编程的艺术"这种crap吧,忘了作为程序员的荣耀和自豪吧... 那些都是虚名,就像浮云一样... 27年以后他们会发给你你一个纪念金表...噢不,现在已经不给金表了,现在,27年以后你得到的是腕管综合症(控件拖多了吧小样?)。所以说啊,叫你千万别做in-house吧,做in-house软件是不好滴,如果做in-house软件好我不可能不让你做in-house软件啊,你想做in-house软件吗...?
2. 别做in-house软件。干嘛?因为做in-house软件,你永远不会像做facebook那样实现的功能跟公司命运息息相关,后者你可以花上一个星期去捣鼓界面上的一个小特性,因为你的产品是要给大家用的。你有机会实现真正漂亮的东东。另外,你能得到上司的重视,你的职业生涯与你的技术挂钩。而作in-house软件你就只能跟另外两个人猥琐在一个阴暗的办公室角落,面朝没有窗户的墙壁,挥汗如雨地猛敲HTML代码;而产品经理本人则坐在宽敞明亮的大办公室里面晃悠。
3. 石器时代的管理理念是管理者应该告诉下属应该做什么。然而真正懂技术的却是...懂技术的一帮家伙;所以,遇到这种管理方式,你得自认倒霉,赶紧另谋出路。Joel原来在微软的时候,老是有一帮家伙跑到应用部门的头头那里争论技术问题,头头便跟他们打打屁,讲两个荤段子,然后叫他们自己的问题自己搞定。这才是管理一群有头脑的geeks的最佳办法。而回到Joel原来待的一个叫Juno的地方,那儿的头头却认为管理者应该负责决定,结果呢,由于要做的决定太多,于是搞了一个啥子"微管理",最后搞到对话框上的日期输入方式都要折腾一番,Orz…
--
1. 最近Feedburner抓取feed似乎出问题了,然而还有近200位同学通过Feedburner订阅了C++的罗浮宫(本来用FB的时候没预料到“墙”的问题,sigh~),所以,麻烦用FB订阅的同学转为用下面的feedsky订阅:-)
http://feed.feedsky.com/pongba
又或者你也可以直接订阅原始rss(因feedsky的服务似乎也似乎时有问题):
http://blog.csdn.net/pongba/rss.aspx
2. C++的罗浮宫已改为全文rss输出。
3. As Always,欢迎加入我们的讨论组——TopLanguage(http://groups.google.com/group/pongba),自从8月份建立以来,我们已经吸引了三百位同学,二千五百多条讨论,想知道我们讨论些什么,参见TopLanguage讨论精选[一],精选[二],精选[三],加入前请看这里。
分享到:
相关推荐
Joel Spolsky在这篇文章中提出的两大建议——提高写作技巧和掌握C语言,都是基于“软实力”的提升。这两项技能对于任何希望在IT行业取得成功的计算机科学学生来说都是非常宝贵的。通过强化这些技能,不仅可以增强...
- Joel Spolsky在书中分享了许多关于如何提高软件开发效率和质量的方法论。例如,他强调了编写高质量代码的重要性,并提出了诸如“重构”等技术来持续改进软件。 - 他还讨论了团队协作的方式,提倡开放和透明的...
根据提供的文件内容,可以看出这是一篇关于Joel Spolsky和他的网站Joel on Software的文章,但文本中包含了大量的乱码和非中文字符,这可能是由于编码错误或原文本的特殊处理造成的。尽管如此,我们仍然可以从有限的...
Joel Spolsky是一位知名的软件工程师和企业家,他以其在软件工程领域的独到见解和实用建议而闻名。 ### 重要知识点概览 #### 1. 软件项目管理的最佳实践 Joel Spolsky强调了项目管理对于软件开发的重要性,提出了...
《基于证据的计划:Joel Spolsky的修订版Excel电子表格解析》 在项目管理领域,有效的规划和控制是成功的关键。Joel Spolsky,一位知名的软件工程师和企业家,提出了基于证据的计划方法,强调了数据驱动决策的重要...
美国著名程序员Joel Spolsky关于软件管理和技术公司管理精辟论述,读来受益匪浅,特别是其中给大学计算机系学生的建议。
在《Joel on Software》一书中,Joel Spolsky探讨了一系列关键知识点: 1. 软件质量:他强调了测试、代码审查和持续集成的重要性,这些是保证软件质量的基础。 2. 开发团队文化:Joel提倡打造一个充满活力和创新的...
在《Joel on Software》中,Spolsky分享了他的许多核心观点,这些观点对于理解软件开发的本质及其背后的商业逻辑至关重要。以下是一些关键知识点的详细说明: 1. **软件质量**:Joel强调软件质量的重要性,主张开发...
- **个人背景**:Joel Spolsky 是一位知名的软件开发者、作家和技术博客作者,他在软件开发领域有着丰富的经验和深刻的见解。 - **编辑选择**:通过Joel Spolsky编辑的选择可以看出,本书很可能汇集了来自不同作者的...
(Quora) -Greg Brockman (条纹CTO)录用-Joel Spolsky (StackOverflow联合创始人) -Joel Spolsky -Jeff Atwood (StackOverflow联合创始人) Atwood-Jeff Atwood (Quora)的(四方) -乔尔·斯波斯基(Joel ...
在总结中,Joel Spolsky的核心观点是,除了技术知识外,计算机专业的学生应当重视提升自身的软实力,尤其是沟通和写作能力。同时,扎实的C语言基础将为未来的职业生涯奠定坚实基础。这两点建议不仅适用于刚毕业的...
PS:以上是按照Joel Spolsky编写更好代码的12个步骤。 满分为12分,可以接受的分数为11分,但满分为10分或更低,这说明您遇到了严重的问题。安装$ npm install --save joel-test用法var joelTest = require ( 'joel...
这款插件以著名互联网人物Joel Spolsky的名字为灵感,模仿了经典的Lorem Ipsum占位符文本,但提供了更为有趣和贴近现实的内容。Lorem Ipsum通常用于在设计阶段填充文本,以展示布局和视觉效果,而Joel Ipsum则提供了...
SMART AND GETS THINGS DONE Joel Spolsky's Concise Guide to Finding the Best Technical Talent
——Joel Spolsky 当《人件》第1版出版时,我写了一篇评论,“我强烈推荐你买一本《人件》给你或你的老板;如果你是老板,那么请为你部门的每个人买一本,并且也给自己买一本。”这个建议在12年后依然有效,并且...
Joel Spolsky的建议主要聚焦于两个关键方面:软实力的培养和基础技术的扎实掌握。软实力,特别是良好的沟通能力,对于任何行业的成功都起着决定性作用。在IT行业,这主要体现在写作能力和表达能力上。 首先,写作...
《软件随想录 - More Joel on Software》是乔尔·斯波斯基(Joel Spolsky)的一本经典著作,他是一位知名的软件开发者、企业家和博客作者。这本书汇集了他在软件开发、团队管理、产品设计等多个领域的深入思考和经验...