《黑客与画家》

2021-08-10 post/reading

各位亲爱的朋友,不知大家国庆节过得怎么样,是宅在家看人山人海的直播呢,还是加入了人山人海的直播队伍,今天是节后上班第一天,希望大家能够从假期中回过神来。话说我也出了趟远门,对于我这种身患“强迫症”+“胡思乱想症”的人来说,自然又不少了发出N多感慨出来(这里先做个小预告,后面会连续写几篇游记感想出来,请大家监督)

上面提到了我有强迫症倾向,我这人很是奇怪,如果是平日上班,我的作息一般很规律早上6点半左右起床,但一旦到了节假日,我甚至有失眠的倾向不到六点钟就爬起来——反正就是睡不着觉,心里一直想着“好不容易有了我可以完全支配的节日时间,就这么呼呼睡过去了,如果时间是一道美餐,那我觉得睡大觉简直就是暴殄天物的行为”于是干嘛呢?——发呆么?自然不是!于是拿起床头的kindle狂读它一两个小时,这不一个七天的假期下来,又读了几本书所以从今天起先把假期读的一些书给大家分享一下:

这里要说明下,时间关系我主要是将书中的一些摘录给大家分享下,附上一些我的简短感想。

关于这本书

《黑客与画家》

本书是硅谷创业之父Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代,迫使读者独立思考。本书适合所有程序员和互联网创业者,也适合一切对计算机行业感兴趣的读者。

为什么读这本书

好奇——仅此而已

什么是黑客?

在这里,hack作为名词有两个意思,既可以指很巧妙或很便捷的解决方法,也可以指比较笨拙、不那么优雅的解决方法。两者都能称为hack,不同的是,前者是漂亮的解决方法(cool hack或neat hack),后者是丑陋的解决方法(ugly hack或quick hack)。hack的字典解释是砍(木头),在这些学生看来,解决一个计算机难题就好像砍倒一棵大树。那么相应地,完成这种hack的过程就被称为hacking,而从事hacking的人就是hacker,也就是黑客。

黑客的行为特点?

这时,“黑客”这个词不仅是第一流能力的象征,还包含着求解问题过程中产生的精神愉悦或享受。也就是说,从一开始,黑客就是有精神追求的。自由软件基金会创始人理查德·斯托尔曼说:“出于兴趣而解决某个难题,不管它有没有用,这就是黑客。”根据理查德·斯托尔曼的说法,黑客行为必须包含三个特点:好玩、高智商、探索精神。只有其行为同时满足这三个标准,才能被称为“黑客”。另一方面,它们也构成了黑客的价值观,黑客追求的就是这三种价值,而不是实用性或金钱。

这就好比一个政客,他想让选民忘记糟糕的国内局势,方法就是为国家找出一个敌人,哪怕敌人并不真的存在,他也可以创造一个出来。一群人在一起,挑出一个书呆子,居高临下地欺负他,就会把彼此联系起来。一起攻击一个外人,所有人因此就都成了自己人。这就是为什么最恶劣的以强凌弱的事件都与团体有关的原因。随便找一个书呆子,他都会告诉你,一群人的虐待比一个人的虐待残酷得多。

作者提到了很多与书呆子有关的文字,我觉得上面这一段特别有意思,你可以细读一下我加粗字体的部分,回想下六、七十年代发生在我们国家那段特别的历史(文化XXX)。

那么,为什么大学和实验室还把论文数量作为考核黑客工作的指标呢?这种事情其实在日常生活中普遍存在,比如,我们使用简单的标准化测试考核学生的“学术能力倾向”(scholastic aptitude),再比如,我们使用代码的行数考核程序员的工作效率。这样的考核容易实施,而容易实施的考核总是首先被采用。

这几句话简直是对菊花厂的某些现状啪啪的打脸,这里就不多说了。   

黑客真正想做的是设计优美的软件,考核这种工作是非常困难的。你本人需要有良好的设计感,才能去考核别人的设计是否良好。但是,你觉得你有“良好的设计感”,与你实际是否具有,不存在相关关系,甚至可能存在负相关。唯一有效的外部考核就是时间。经过岁月的洗礼,优美的东西生存发展的机会更大,丑陋的东西往往会被淘汰。不幸的是,这种考核需要的时间可能比一个人的生命还要长。塞缪尔·约翰逊说过,人们对一个作家的评价,需要100年才能达成一致。你必须先等他的那些有影响力的朋友都死了,然后再等他的追随者都死了,才能对他有一个公正的评价。

好吧,也就是因为这个因素的存在,所以从公司层面上来说还是简单粗暴的方式显得更实用。   

明白这一点对软件设计有重大影响。它意味着,编程语言首要的特性应该是允许动态扩展(malleable)。编程语言是用来帮助思考程序的,而不是用来表达你已经想好的程序。它应该是一支铅笔,而不是一支钢笔。如果大家都像学校教的那样编程,那么静态类型(static typing)是一个不错的槪念。但是,我认识的黑客,没有一个人喜欢用静态类型语言编程。我们需要的是一种可以随意涂抹、擦擦改改的语言,我们不想正襟危坐,把一个盛满各种变量类型的茶杯,小心翼翼放在自己的膝盖上,为了与一丝不苟的编译器大婶交谈,努力地挑选词语,确保变量类型匹配,好让自己显得礼貌又周到。

关于编程语言的这个比喻实在精妙。

令我惊讶的是,雇主都很犹豫,不愿意手下的黑客为开源软件项目工作。但是,在Viaweb,要是你不愿意这样干,我们会很犹豫要不要雇用你。我们面试程序员的时候,主要关注的事情就是业余时间他们写了什么软件。因为如果你不爱一件事,你不可能把它做得真正优秀,要是你很热爱编程,你就不可避免地会开发你自己的项目。

深有同感

如果黑客只是一个负责实现领导意志的技术工人,职责就是根据规格说明书写出代码,那么他其实与一个挖水沟的工人是一样的,从这头挖到那头,仅此而已。但是,如果黑客是一个创作者,他从事的就不是机械性的工作,他必须具备灵感。

看到这里你可能就会发现,我们身边有着一堆的挖水沟工人。

我认为,这也是多人共同开发一个软件的正确模式。需要合作,但是不要“合”得过头。如果一个代码块由三四个人共同开发,就没有人真正“拥有”这块代码。最终,它就会变得像一个公用杂物间,没人管理,又脏又乱,到处堆满了冗余代码。正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责。模块与模块之间的接口经过精心设计,如果可能的话,最好把文档说明写得像编程语言规范那样清晰。

当年的观点在如今敏捷大行其道的今天仍然有借鉴意义。

普通黑客与优秀黑客的所有区别之中,会不会“换位思考”可能是最重要的单个因素。有些黑客很聪明,但是完全以自我为中心,根本不会设身处地为用户考虑。这样的人很难设计出优秀软件,因为他们不从用户的角度看待问题。

好吧,大神在N年前就在反复强调这个观点了(其实我之前也反复写过这方面的文章)

「在这些公司内部,类似的想法很可能被贴上“悲观消极”、“失败分子”这样的标签。优秀的决策者根本不应该在乎这些标签,而是直接问自己、它们到底对不对?其实,一个公司是否健康运作,可以用一个指标衡量,那就是对负面评价的容忍程度。做出伟大产品的公司,自我评价往往以“批评”和“自嘲”为主,而不是以“肯定”和“表扬”为主。我认识的杰出成就人士都认为自己做得不好,之所以能成功只是因为其他人做得更差。」

菊花厂在这一方面无疑做的比国内N多公司做的好,因为有心声社区的存在,在这里打个小广告,欢迎你关注“心声社区”——这是我之前负责的一个产品。

只有深入了解当前的技术,黑客才能构想下一代技术。知识产权的拥有者也许会说,不,谢谢,我们不需要你的帮助,我们自己就能开发下一代技术。他们错了,在计算机工业的历史上,新技术往往是由外部人员开发的,而且所占的比例可能要高于内部人员。1977年,IBM公司内部肯定有一些部门正在开发下一代电脑。他们没有料到的是,真正的下一代电脑不是诞生于IBM实验室,而是由两个与他们完全不相干的长头发年轻人在旧金山的一间车库里开发出来的。这两个年轻人,一个是史蒂夫·乔布斯,另一个是史蒂夫·沃兹尼亚克。差不多同一时间,计算机工业的几大巨头聚在一起,合作研发官方版的下一代操作系统Multics。但是,另外两个年轻人——26岁的肯·汤普森和28岁的丹尼斯·里奇——觉得Multics过分复杂,就另起炉灶,写出了一个自己的操作系统。他们参照Multics,为它取了一个搞笑式的名字Unix

外行颠覆内行的好例子,可以收下了。

但是把代码放到服务器上发布之前,我们会深思熟虑。提高软件可靠性的关键在于开发时全神贯注,而不是降低开发速度。正是因为飞行员全神贯注,他才能在夜间让一架18吨重的飞机以225公里的时速平安降落在航空母舰的甲板上,做得比小孩子切面包还要安全。

速度与质量的再思考

只要有可能,商业性公司就会采用一种叫做“价格歧视”(price discrimination)的定价方法,也就是针对不同的客户给出不同的报价,使得利润最大化。软件的定价特别适合采用价格歧视,因为软件的边际成本接近于零。这就是为什么很多软件的Sun服务器版本比Intel服务器版本更贵的原因,因为如果一个公司购买Sun服务器,就表明它很有钱,不在乎对设备的投资,那么为什么不向它开个高价呢?盗版实质上是一种价格歧视,只不过针对的是最底层的消费者。我觉得,软件公司明白这个道理,所以故意对某些盗版行为睁一只眼闭一只眼。由于互联网软件无法盗版,所以软件公司必须想出其他策略推广软件。

你以为本书的大神只会写代码?too naive了吧,人家经济学也是牛牛的好嘛?

选择公司要解决什么问题应该以问题的难度作为指引,而且此后的各种决策都应该以此为原则。Viaweb的一个经验法则就是“更上一层楼”。假定你是一个手脚敏捷的小男孩,身后有一条壮硕的大狗正在追你。你跑到楼梯口,这时应该上楼还是下楼?我觉得应该上楼。如果下楼的话,大狗可能跑得跟你一样快。上楼的话,大狗的庞大身躯就将成为劣势。不错,跑上楼你会比较吃力,但是大狗会感到更吃力。

非常不错的一个小例子,我读到这里的时候想到的是当我遇到困难的时候,正如天底下没有新鲜事,别人一样会遇到,如果是你,你选择吃力的上楼还是下楼?

好设计是永不过时的设计。只要没有错误,每一个数学证明都是永不过时的。所以,数学家哈代才会说:“丑陋的数学在世界上无法生存。”他的意思与飞机设计师凯利·约翰逊的观点是一样的:如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已

寻求美——永无止境

推动人才成批涌现的最大因素就是,让有天赋的人聚在一起,共同解决某个难题。互相激励比天赋更重要,达·芬奇之所以成为达·芬奇,主要原因不仅仅是他的天赋,更重要的是他生活在当时的佛罗伦萨,而不是米兰。今天,人类生活的流动性高得多,但是伟大的项目依然不成比例地集中在少数几个热点上:德国包豪斯建筑学院、曼哈顿计划、《纽约人》杂志、洛克希德公司的臭鼬工作室、施乐公司的帕洛阿尔托研究中心。
在历史的任何时刻都有一些热点项目,一些团体在这些项目上做出伟大的成绩。如果你远离这些中心,几乎不可能单靠自己就取得伟大成果。某种程度上,你个人最多可以对趋势产生一定的影响,但是你不可能决定趋势,实际上是趋势决定了你。(或许有人办得到,但是米兰的达·芬奇显然没有办到。)

欢迎加入菊花厂,和一堆大牛共同战斗,OVER

点击“阅读原文”有小惊喜哦。

Comments
Write a Comment