黑客与画家,这两个词正是格雷厄姆前半生的人生写照。“黑客”(hacker)在我们大多数人眼里就是入侵计算机、干破坏性事情的人。但是,在很久以前这个词被发明的时候,“黑客”,完全是正面意义上的称呼。“黑客”这个词不仅是一流能力的象征,还包含着求解问题过程中产生的精神愉悦或享受。
这个书名就是在提示应该把黑客与画家当作同一种人看待。和画家一样,黑客也是怀有一门特殊手艺、有创造天赋的普通人。
第一章,为什么书呆子不受欢迎。在本书中,“书呆子”被称呼为“聪明的学生”,他们不受欢迎的真正原因,是他们的注意力都放在读书或者观察世界上面,而不是放在穿衣打扮、外表上面。
第二章,黑客与画家。黑客与画家的共同之处在于他们都是创作者。与作曲家、建筑师、作家一样,黑客和画家都是试图创作出优秀的作品。他们本质上都不是在做研究。
黑客的工作方式:1.黑客真正想做的是设计优美的软件,但是考核这种工作是非常困难的,唯一有效的外部考核就是时间。经过岁月的洗礼,优美的东西生存发展的机会更大,丑陋的东西往往会被淘汰。
2.黑客编程的编程语言首要的是特性应该是允许动态扩展,需要的是一种可以可以随意涂改、擦擦改改的语言。
3.黑客通常在业余时间做自己的项目,通过实践学习编程。他们可以通过范例来学习,不是看代码的执行结果,而是看源代码。
4.黑客认为“过早设计”与“过早优化”同样是一件危险的事,不要太早决定一个程序应该怎么做。
5.黑客就像画家,工作起来是有心里周期的。有些工作需要投入巨大的热情,另一些工作则是需要很操心的日常琐事。那么在你厌倦的时候再去做那些比较容易的工作。
6.多人共同开发,需要合作,但是不要“合”得过头。如果一个代码块由三四个人共同开发,就没有真正“拥有”这块代码。正确的合作方式是将项目分割成严格定义的模块,每一个模块由一个人明确负责。
7.时刻考虑到用户的人性需求,必须学会“换位思考”,能够站在用户的角度思考问题。但是,“换位思考”并不意味着你要做自我牺牲,了解别人对于事情的看法,并不代表你为他的利益服务。
第三章,不能说的话。要是能坐上时间机器回到过去,不管哪一个年代,有一件事都是不会改变的,那就是"祸从口出"。那到底什么话是我们不能说的?当然,要注意的是,并不是所有不能说出的话都是我们要找的答案。实际上,只要同时满足两个条件才行。第一个条件是,这些话不能说出口;第二个条件是,它们是正确的,或者看起来很可能正确,值得进一步讨论。如果达不到第二个条件,大部分情况下你都不会有麻烦。
第四章,良好的坏习惯。总体看来,黑客是不服从管教的,他们不服从管教的性格是利大于弊的。与其他美国人一样,黑客的成功秘诀就是打破常规。
第五章,另一条路。互联网软件带来的最大变化之一,就是软件发布方式的改变。互联网软件运行在服务器上,用户界面就是网页。
第六章,如何创造财富。最好的办法就是自己创业,或者加入创业公司。
第七章,关注贫富分化。与下棋、画画、写小说一样,赚钱也是一种专门的技能。但是,处于某种原因,我们以完全不同的态度对待这种技能。如果某些人下棋或写小说,没有人会有意见;但是某些人善于赚钱,报纸上会有社论出来说这是不对的。每个人的技能不同,导致收入不同,这才是贫富分化的主要原因。
第八章,防止垃圾邮件的一种方法。统计学过滤器。
第九章,设计者的品味。好的设计是简单的、永不过时的、解决主要问题的、启发性的、有点趣味性的、艰苦的、看似容易的、对称的、模仿大自然的设计,是可以再设计、能够复制、常常是奇特的设计。
第十章 ,编程语言解析。计算机和其他机器一样,也有一张操作命名清单。
第十一章,一百年后的编程语言。一百年后,人类怎样编程?为什么不从现在开始就这样编程呢?
第十二章,拒绝平庸。想要不被别人模仿,就需要与别人保持与众不同,Viaweb公司的秘密武器是Lisp语言,Lisp语言开发速度惊人,是一种很强大的编程语言。编程语言的特点之一就是它会使得大多数使用它的人满足于现状,不想改用其他语言。
第十三章,书呆子的复仇。在高科技行业,只有失败者采用“业界最佳实践”。
第十四章,梦寐以求的编程语言。一种好的编程语言,是让黑客可以随心所欲使用的语言。
第十五章,设计与研究。1.设计与研究的区别在于,设计追求“好”,研究追求“新”。一个软件需要考虑的是“用户需要的设计”,而不是“用户要求的设计”。让用户满意并不等于迎合用户的一切要求。关注用户,以用户为中心,此用户指的是“目标用户”。
2.在软件领域,贴近用户的设计思想被归纳为“弱即是强”。如果你正在设计某种新东西,就应该尽快那出原型,听取用户意见,而不是等到完整的成品出来后再一下子隆重推向市场。
3.士气是设计的关键因素。先做出原型,再逐步加工做出成品。就像画作永远没有完工的一天,你只是不再画下去而已。