Joel Spolsky在耶鲁的演讲无责任导读

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——fbool变量——在运行偶数次之后的值还是原来的,整堂课(还加上拖课的时间)写了一黑板,用上了归谬法、归纳法、穷竭法,最后绝望地用上了“研究生法”——一个研究生在她绝望地发现忘记了某步证明的时候站起来说,“啊,对对,就是那样证明的”)。

 

2. IT的,一定要尽早知道自己到底适不适合搞coding。这同样可以通过上一些很coding的课来自我评估(再次,Joel当年是被逼的。当年那个教授每星期布置40个小时才能完成的coding作业,OMG… 给的学分是1.5,但由于0.5只有遇到另一个0.5才算1,否则不算(晕,56入啊),同时那个系却另外有两个多出0.5的,结果这门课的0.5等于白拿了。Orz…

 

3. 对于软件质量这个说法,要以用户意见为核心考量。根据经济学中的边际效应递减(Diminishing Return),在bug方面花的精力越多,得到的收益也越小。因此,将"完全无bug"作为衡量质量标准也许在一些非常极端的环境下(军事?金融?)是有用的,然而在大多数商用软件方面都是没那么重要的。

4. WindowsGUI作为第一类平台导致了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星期"叨耐特"的毕业生,你说雇主还会让你慢慢磨蹭把功能完善更完善?不不,只要主要功能实现,管什么界面,管什么鲁棒性,赶紧拍屁股走人,或者拍屁股去修补别人去年留下的烂摊子。于是,你搞出来的东西就跟狗啃的一样而且你还不能啥啥语言酷就用啥啥语言,RubyAjax?不不,您老还是打开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,欢迎加入我们的讨论组——TopLanguagehttp://groups.google.com/group/pongba),自从8月份建立以来,我们已经吸引了三百位同学,二千五百多条讨论,想知道我们讨论些什么,参见TopLanguage讨论精选[]精选[]精选[],加入前请看这里

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页