跳到主要内容

黑客与画家

· 阅读需 21 分钟
不如怀念
Web 前端工程师 (Web Front-end Engineer)

最后更新于 2021-08-24 01:26:00

这本书在 IT 圈子应该是为人熟知的,这也是我知道存在这本书的原因。不过,从我知道这本书到读完这本书中间还是隔了相当一段时间的,一方面是因为工作后读书的习惯保持的不太好,另一方面也是确实比较忙。幸运的是,最近终于有空来读一读了,当然从开始读这本书到读完也是断断续续好一段时间。

这本书的名字《黑客与画家》乍一听让很多人摸不着头脑,包括我在内刚开始也猜不到这本书的内容主题是什么。然而,作为 IT 从业者,“黑客”一词对我们绝对有足够的吸引力,至少会让很多人产生了解一下的想法。这本书本身是作者写的一系列较受欢迎的文章的集合,在读完这本书之后我相信对于 IT 从业者,至少是有一定工作经验的人来说是值得读的一本书,也许会对目前的认知有所改变和产生新的认识。

作者

这本书的作者是保罗·格雷厄姆(Paul Graham),国内知道其人的可能不太多,但提到 YC(Y Combinator)可能很多人有所耳闻,这是硅谷著名的创业孵化器机构,前不久陆奇从百度离职后也成为了 YC 中国的创始人。YC 投资和孵化了许多著名的创业公司,例如著名的 Reddit 论坛,而全球访问量最高的技术论坛 Hacker News 则是 YC 官方运营的站点,本书的作者正是 YC 的创始人。

本书作者自己本身也是 IT 从业者,学习时期攻读的计算机科学学位,后来也学习过绘画,这也是这本书名称的由来。

本书的主题

由于这本书是用作者一系列受欢迎的博客文章集合而来,所以章节之间也许没有明显的关联,但从译者序中我们可以对此有一个大致的了解。

作者想让公众了解,黑客并不神秘,更不是技术怪人。《黑客与画家》这个书名就是在提示应该把黑客与画家当作同一种人看待。和画家一样,黑客只是怀有一门特殊手艺、有创造天赋的普通人。这个书名还有另一层含义,即编程是一种艺术创作,黑客就是艺术家,开发软件与画家作画、雕塑家雕刻、建筑师设计房屋并没有本质不同。

由此可见,这本的核心主题在于向读者阐述“黑客”这个群体的特点,以及他们做什么事情,如何通过技术来影响世界,黑客文化是什么样的。

“黑客”群体

作者首先通过第一视角(作者本人也是一名 "hacker")阐述了“黑客”是一群什么样的人,他们如何看待这个世界。

哪怕你什么也改变不了,但是仅仅是理解自己的处境,也能使得痛苦减轻一些。书呆子并不是失败者。他们只是在玩一个不同的游戏,一个更接近于真实世界状况的游戏。成年人明白这一点。成功的成年人,几乎都声称自己在高中属于书呆子。

有趣的是,开篇探讨的是“为什么书呆子不受欢迎?”这个非常接地气的问题。众多周知,热爱技术的人,大多社交能力偏弱,他们时常沉浸在代码的世界里,而处于复杂的社会环境中,社交能力却是个非常重要的能力,而且从事工作的过程中更多的是需要协作和沟通。“书呆子”这个名词本身是一种歧视性的标签,作者更想让作为“书呆子”的当事人们理解这并不是他们的错,反过来他们更专注于做一些其它事情,作者视这些人为“聪明人”。不局限于 IT 行业,各行各业都存在“书呆子”这类人,这些人不应该因为被贴上标签而自卑,产生心理困扰,他们在做非常出色的事情。但话说回来,为了在复杂的社会环境中更好的生存,适当的培养自己的社交能力也是值得考虑的一方面。

因为黑客更像创作者,而不是科学家,所以要了解黑客,不应该在科学家身上寻找启示,而是应该观察其他类型的创作者。

接下来,更有趣的是,探讨的主题就是本书的名称“黑客与画家”。作者通过自己的学习经历,将“黑客”与“画家”做类比,他们拥有很多共同点,是创作者而不是科学家,也为普通大众了解“黑客”群体提供了一个比较易懂的视角。这部分的核心思想在于理解“黑客”的本质,从而理解如何做一个优秀的黑客,作者探讨了很多点,下面就举两个我比较印象深刻的点来看看。

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

很多技术爱好者容易陷入对技术的狂热中,却忽视了技术本质上只是个工具,最终的目的还是用好的工具创作好的作品。

黑客就像画家,工作起来是有心理周期的。有时候,你有了一个令人兴奋的新项目,你会愿意为它一天工作 16 个小时。等过了这一阵,你又会觉得百无聊赖,对所有事情都提不起兴趣。为了做出优秀的工作,你必须把这种心理周期考虑在内。只有这样,你才能根据不同的事情找出不同的应对方法。

这个对于搞技术的很多人也许会感同身受,如何自我调节把握这种心理周期也是一个需要提升的方面。

优秀作品往往来自于其他人忽视的想法,而最被忽视的想法就是那些被禁止的思想观点。

再接下来,作者阐述了一个观点,优秀的人应该有独立思考的能力,保持质疑,敢于打破传统思维,而不是随大流,被禁锢了思想。

只有深入了解当前的技术,黑客才能构想下一代技术。

最后,作者说明“黑客”有叛逆的显著特点,而正是因为叛逆,才更加优秀,叛逆并不总是坏的。这里用黑客比较关心“版权法”的现象举了一个例子,黑客们反抗“版权法”,认为其阻止了技术的进步和变革,作者的观点有没有道理我们不得而知。但经过时间的验证,曾经对开源嗤之以鼻的微软如今全力拥抱开源软件,说明了什么问题呢?如今,开源软件已成为 IT 世界的主流,很多优秀的软件也源于开源社区,开源是全世界优秀黑客们智慧的结晶。

用技术影响世界

第二部分,篇幅比较大,话锋一转,作者讲到了互联网软件的开发模式与传统软件的开发模式的不同,从多个方面进行了论述,例如,用户使用便利程度、软件发布流程、软件 bug 修复流程、不同方式的客户支持、关注用户、盈利模式等等。

我家附近,一辆汽车的保险杠贴着一张粘纸,上面写着“太麻烦,不如死”(death before inconvenience)。大多数人,在大多数时候,总是选择最省事的做法。如果互联网软件能够击败桌面软件,一定是赢在更方便这一优势上。无论从用户的角度还是从开发者的角度来看都是如此。

互联网软件带来的最大变化之一,就是软件发布方式的改变。对于桌面软件来说,发布新版本是一个很痛苦的过程,整个公司不得不使尽全力,满头大汗地挤出一大块巨型代码。互联网软件则完全不同,就像你写给自己用的程序一样,修改起来很方便。软件的发布过程可以分解为一系列的渐进式修改,而不是猛地推出一个大幅变动的版本。

能够即时发布软件,对开发者是一个巨大的激励。步行上班途中,我经常会想哪些地方还需要变动,然后当天就予以实现。如果软件的新版本要等到一年后才能发布,我就会把大部分新构思束之高阁,至少过上一段时间再来考虑。

如果公开收取软件的订阅费,而不是让用户购买软件的所有权,操作起来会更自然、更简便。“订报纸模式”正是互联网软件天然的收费模式。

作者在思考互联网软件这方面笔墨较多,其实这部分也是非常值得 IT 从业者学习的一部分。

开篇算是对互联网时代背景的一个介绍,接下来作者着重论述了在这个时代背景下为何创业是最好的选择、也是比较有意义的事,作者对个人工作方面有很多的讨论,值得思考。比如,作为个人应该努力的工作,才会有超出预期的回报,但在一个大的团队中其实个人很容易被淹没,个人的努力和贡献很难能体现出来,作者这个时候提出了一个很有意义的论点,个人所做的工作应该具备可测量性和可放大性。

你想更努力地工作,但是你的工作与其他许多人的工作混杂在一起,这样就产生了问题。在大公司中,个人的表现无法单独测量,公司里其他人会拖累你。

你的职位产生的业绩,应该是可测量的,否则你做得再多,也不会得到更多的报酬。此外,你还必须有可放大性,也就是说你做出的决定能够产生巨大的效应。

后续,作者也给出了一个答案,可测量性即小团队,可放大性即高科技,这一点在现在来看也是比较容易理解的。

作者对贫富差距产生的原因着墨较多,目的就是为了论证掌握技术/能力的人会有更多产出,也是贫富差距产生的核心原因,在我看来,作者的观点有失偏颇,太过片面,有点为了论证论点而刻意去这样说的感觉,我在这里不做太多论述。

最后,作者提出作为创作者、设计者要有自己的品味,其实通俗一点的说就是要对自己所做的事情,所在的领域的相关事务有自己的思考和看法,这样才能找到改进的地方,才能找到所谓的切入点。

单单是无法容忍丑陋的东西还不够,只有对这个领域非常熟悉,你才可能发现哪些地方可以动手改进。你必须锻炼自己。只有在成为某个领域的专家之后,你才会听到心里有一个细微的声音说:“这样解决太糟糕了!一定有更好的选择。”不要忽视这种声音,要培育它们。优秀作品的秘诀就是:非常严格的品味,再加上实现这种品味的能力。

第二部分的核心主题在我看来是作者呼吁 IT 从业者抓住互联网时代的风口,学会如何创造财富,如何利用自己所掌握的技术改变世界,同时为自己赢得财富。

黑客文化

最后一部分,作者介绍了黑客文化,他们关注的是什么?作者选择从编程语言的视角试图帮助大家理解黑客文化。黑客与计算机打交道,就像人与人沟通一样,必然会存在一个媒介,编程语言则建立了黑客与计算机机器之间的桥梁。编程语言对于黑客来说是一种工具,而选择趁手、好用的工具则是黑客们最为关注的,这也是编程语言从汇编语言到低级语言再到高级语言不断演进的原因,而最为关键的是,是黑客们这个群体自身推动了这个演变的过程。如今,世界上的编程语言百花齐放,凸显了黑客群体们强大的创造力。

如果你长期使用某种语言,你就会慢慢按照这种语言的思维模式进行思考。所以,后来当你遇到其他任何一种有重大差异的语言,即使那种语言本身并没有任何不对的地方,你也会觉得它极其难用。缺乏经验的程序员对于各种语言优缺点的判断经常被这种心态误导。

语言设计者之间的最大分歧也许就在于,有些人认为编程语言应该防止程序员干蠢事,另一些人则认为程序员应该可以用编程语言干一切他们想干的事。

另一方面,许多项目是无所谓选择哪一种编程语言,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务可能只要写一些很小“胶水程序”,然后再把这些小程序连起来就行了。

编程语言不是数学定理,而是一种工具,为了便于使用,它们才被设计出来。所以,设计编程语言的时候必须考虑到人类的长处和短处,就像设计鞋子的时候必须符合人类的脚型。如果鞋子穿上去不舒服,无论它的外形多么优美,多么像一件艺术品,你也只能把它当作一双坏鞋。

为了写出优秀软件,你必须同时具备两种互相冲突的信念。一方面,你要像初生牛犊一样,对自己的能力信心万丈;另一方面,你又要像历经沧桑的老人一样,对自己的能力抱着怀疑态度。

以上是摘抄的一些觉得比较有意义的论述,总得来说,黑客们不仅使用工具,还会自己改进工具、创造新的工具,自我驱动能力非常的强,也具备很强的设计能力。

结语

这本书的篇幅还是比较长的,其实可以粗略的读,多读几遍便会有更深刻的理解。为什么说这本书值得有一定经验的 IT 从业者读呢,因为书中有很多知识和概念可能对于一个没有多少经验的人来说是较难理解的,另一方面,经验丰富的人,思考问题的角度应该也会多一些,看待一个事情也不会过于片面和偏激。归根结底,用代码创造财富的群体们是如何理解自己的呢?也许这个更有意义。

  • 《黑客与画家》- [美]格雷厄姆 著,阮一峰 译