《软件随想录》的原文摘录
1. 个人办公室,带有可以关上的门,这是绝对必需的,不能协商。
2. 程序员需要许多电源接头。他们应该可以将各种新颖的小玩意插进与电脑桌齐高的插座,而不用再地板上拖电线。
3. 我们需要可以方便地转接各种数据线(电话线、网线、有线电视线、警报器线等),装修结束后就再也不想再墙壁上打洞了。
4. 办公室可以用来“结对编程”。
5. 整天对着一台显示器工作就需要通过注视远方,使眼睛得到休息,所以显示器不应该靠着一整堵墙摆放。
6. 办公室应该是一个窝,一个能够很愉快度过时间得地方。 (查看原文 )
如果你想把事情做完,无论合适,你一定要想清楚什么是眼下最重要的、必须马上做好的事。如果你不做这件事,你就不能以最快的速度取得进展。 (查看原文 )
我从来没有见过哪个能用Scheme、Haskell、C语言中的指针函数编程的人,竟然不能在两天里面学会Java,并且写出的Java程序质量竟然不能胜过那些有5年Java编程经验的人。 (查看原文 )
我不是指面向对象式的『设计』:那种编程只不过是要求你花上无数个小时来重写你的代码,使它们能够满足面向对象编程的等级制继承式结构,或者说要求你思考到底对象之间是『has-a』从属关系,还是『is-a』继承关系,这种『伪问题』将你搞得烦躁不安。
你需要的是那种能够在多个抽象层次上同时思考问题的训练。这种思考能力正式设计出优秀软件架构所必须的。 (查看原文 )
第一点。如果你说不清楚你的软件解决了什么棘手问题,就不要去开软件公司。
第二点。不要独自一人创办公司。
第三点。一开始不要抱太高期望。 (查看原文 )
程序员受到一种愿望的驱使,渴望方方面面都照顾到,让每个人都感到满意。但是这种愿望的基础其实是一个不正确的认识,更多的选择会不会让用户感到更幸福,我们需要重新思考这一点。 (查看原文 )
(1) 毕业前练好写作。
(2) 毕业前学好C语言。
(3) 毕业前学好微观经济学。
(4) 不要因为枯燥就不选修非计算机专业的课程。
(5) 选修有大量编程实践的课程。
(6) 别担心所有工作都被印度人抢走。
(7) 找一份好的暑假实习工作。
(8) 寻求专业人士的帮助,培养你的自信心。 (查看原文 )
但是,对于某些最激动人心的编程任务来说,指针仍然是非常重要的。
比如说,如果不用指针,你根本没办法开发 Linux 的内核。如果你不是真正地理解了指针,你连一行 Linux 的代码也看不懂,说实话,任何操作系统的代码你都看不懂。
如果你不懂函数式编程,那你就无法创造出 MapReduce ,正是这种算法使得 Google 的可扩展性达到如此巨大的规模。术语『Map』和『Reduce』分别来自 Lisp 语言和函数式编程。
回想起来,在类似 6.001 这样的编程课中,都提到纯粹的函数式编程没有副作用,因此可以直接用于并行计算。任何人只要记得这些内容,那么 MapReduce 对他来说就是显而易见的。 (查看原文 )
指针和递归的真正价值在于那种你在学习它们的过程中所得到的思维深度,以及你因为害怕在这些课程中被淘汰所产生的心理抗压能力,它们都是在建造大型系统的过程中必不可少的。 (查看原文 )
目前,许许多多样子可爱的创业公司都有一个共同点,那就是他们所有的产品就是一个小小的站点,背后的技术就是一些Ruby-on-Rails和Ajax,不解决任何“麻烦事”,而且别人很容易做出复制品。这类公司中相当一部分,给人的感觉就是不实在和空洞,因为他们没有解决实际中迫切需要解决的任何困难问题(...)。只有等到他们解决了困难问题,他们对用户才是有用的。用户只向解决困难问题的公司付钱。 (查看原文 )
优秀的人才从不在市场上求职 (查看原文 )
追踪优胜者,设法结识他们 (查看原文 )
后来公司倒闭了 (查看原文 )
不收怪人 (查看原文 )
艾玛婶婶是英国情景喜剧IT crowd中的角色 (查看原文 )
纽约的那些大型投资银行被认为是相当艰苦的程序员工作环境。...... 程序员是千真万确的三等公民 (查看原文 )
使用非必要的热门技术 (查看原文 )
将一个互联网编程框架上升到某种“美、幸福和激励” (查看原文 )
"过度合理化效应(Overjustification Effect)" (查看原文 )
CS323有一个最大的优点,那就是它让许多人明白了原来自己不是编程的那块料,永远也成不了程序员 (查看原文 )