最近又拾起了《黑客与画家》这本书,第一次看还是在2017年。初次结缘这本书还是在阮一峰老师的博客文章中,知道阮一峰老师非常喜欢这本书,并且翻译成了中文。本书的作者是一名黑客、画家和作家,所以这本书囊括了技术、艺术、商业等内容。
也许是因为人生经历每年都有不同,每次读这本书都有不同的感受。印象特别深的是,第一章对“书呆子”的描述,以及回答了“书呆子”为何不受欢迎的问题,第二章对“黑客”的定义 (这里的黑客指优秀程序员而不是指非法入侵别人系统的人),并将“黑客”与“画家”进行对比。还有后面对互联网软件未来的描述,站在今天的上帝视角,作者预言的很多方向都是对的,不得不对作者的高瞻远瞩折服。
下面是我阅读前面几章的摘抄,后面读完后也许会再写一篇总的读书笔记:
1、为什么书呆子不受欢迎
虽然黑客从外表看上去一般都是呆呆的,但是他们的大脑内部却是一个有趣得让你吃惊的地方。
在本书中,“黑客”就是指最优秀的程序员,而不是入侵计算机系统的人。
在他们身上,我发现:
“书呆子”与“高智商”有强烈的正相关关系。
“书呆子”与“受欢迎”有强烈的负相关关系。
事实上,我并不是强烈的渴望受欢迎。我更想追求的是另一种事情-聪明。或者说我真正想要的是,能够设计奇妙的火箭、写出漂亮的文章、理解编程原理。一句话,我想要做伟大的事情。
书呆子不受欢迎的真正原因,是他们的脑子里想着别的事情。他们的注意力都放在读书或者观察世界上面,而不是放在穿衣打扮、开晚会上面。他们就像头顶一杯水来踢足球,一边踢球,一边拼命保持不让水洒下来。
书呆子从小琢磨的却是如何更聪明,心底里也是这样追求的。这都是受父母的影响,书呆子被教导追求正确答案,而受欢迎的小孩被教导讨人喜欢。
读完计算机系的研究生,我就去了艺术学校,学习绘画。许多人很吃惊 :一个喜欢计算机的人,居然还喜欢画画!他们似乎觉得,摆弄计算机和画画是两件截然不同的事情——计算机是冰冷的、精确的、井然有序的,而画面是某种原始欲望热烈狂放的表达方式。
这种看法是错误的。计算机和画画有许多共同之处。事实上,在我知道的所有行业中,黑客与画家最像。黑客和画家的共同之处,在于他们都是创作者。与作曲家、建筑师、作家一样,黑客和画家都是试图创作出优秀的作品。他们本质上都不是在做研究,虽然在创作过程中,他们可能会发现一些新技术。
我们使用代码的行数考核程序员的工作效率。这样的考核容易实施,而容易实施的考核总是首先被采用。黑客真正想做的是设计优美的软件,考核这种工作是非常困难的。你本人需要有良好的设计感,才能去考核别人的设计是否良好。
读研究生期间,我潜意识里一直有种很不舒服的感觉,觉得自己应该多学一点理论,不应该期末考试结束还不到三个星期,就把所有东西忘得一干二净,那样真是不可饶恕 。现在,我意识到自己错了。黑客搞懂“计算理论”的必要性,与画家 搞懂颜料化学成分的必要性差不多大。
把整个程序想清楚的时间点,应该是在编写代码的同时,而不是在编写代码之前,这与作家、画家和建筑师的做法完全一样。明白这一点对软件设计有重大影响。它意味着,编程语言首要的特性应该是允许动态扩展。
大学和实验室强迫黑客成为科学家,企业强迫黑客成为工程师。在他们看来,“黑客”的工作 就是用软件实现某个功能 ,而不是设计软件。在那里,程序员被当做技工,职责就是将产品经理的“构想”翻译成代码。
这似乎是大公司的普遍情况。大公司这样安排的原因是为了减少结果的标准差。
黑客如何才能做自己喜欢的事情:找一份养家糊口的“白天工作”,然后在其余时间开发优美的软件 。
如果黑客是一个创作者,他从事的就不是机械性的工作,他必须具备灵感。黑客就像画家,工作起来是有心理周期的。有时候,你有了一个令人兴奋的新项目,你会愿意为它一天工作16个小时。等过了这一阵,你又会觉得百无聊赖,对所有事情都提不起兴趣。
就像绘画作品一样,大多数软件是为人类用户准备的。所以,黑客必须像画家一样,时刻考虑到用户的人性需要,这样才能做出伟大的产品。你必须能够站在用户的角度思考问题,也就是说你必须学会“换位思考 ”。