《黑客与画家》——每一位程序员和互联网从业者都应该阅读的一本书

 读书笔记  原创  管理员  2020-05-10 15:33

概要:很早之前就听说过《黑客与画家》这本书,一直以为它讲的是黑客与画家之间的故事。当在浏览网页搜索资料的时候,多次有文章提到这本书,于是就想看一下。翻了几页,决定完整地读一遍。这本书是作者的博客文章,后面出版成书,每一章也都是独立的。写得非常好,虽然快有二十年之久,但是非常值得每一位程序员或计算机从业者阅读。

前言

计算机的快速发展,给社会带来了巨大的改变。我们开始让机器帮助我们做事,而互联网的发明,更是加快了这种步伐,它使得信息的壁垒在距离上完全不是问题,它让我们能更快地接收到信息。这本书,是硅谷创业之父 Paul Graham 的博客文集,他所创立的 ViaWeb 网店在当时做得风生水起,后面被雅虎所收购。

这本书是从作者的个人经历讲起,每一章都值得我们深入地去阅读,只有很少的一部分会涉及到技术上的专业知识,其它大部分的文章对于没有技术背景的朋友们来说,也是完全不受影响的。当然,如果不喜欢某一章,完全可以跳过去阅读下一章。

书名中的“黑客”,并不是我们日常所理解的黑客,我们平时认为黑客就是那些搞软件破解或攻击的那一群人,而本书中的“黑客”是指那些热衷于使用计算机技术来打破陈规,突破技术壁垒,追求卓越,在技术上实现自我价值的一群人,他们是积极的、自由的、厉害的、酷爱学习的一群人。

书中的“画家”是指作者本人在经历过计算机技术成长后,后面去了国外进修绘画。两种职业和角色上的变化,给他带来了非常大的改变。接下来,我将结合此书,为大家呈上部分感受。

做自己

学校并不是对所有人都友好,往往这种场所成了大人们管理小孩子的地方,让他们不要过多的干涉大人们的生活或社会的秩序。老师和学生都变成了一种过一天是一天的状态,老师在忽悠学生的同时,也在被学生们所忽悠。学校也不会真心地关注每一位学生的成长。其实,关键还是要靠学生自己本身的觉悟,现在的学校似乎已经沦为了一个托儿所的机构,不论是初中、高中或大学。

对于技术上很有天赋或自学能力超前的人往往并不受周围学生们待见,外围的人更觉得这些人是所谓的怪人,觉得他们的圈子与众不同,也就是说,学生的群体,也分不同的阶层或团体,他们互相之间也是带有歧视和敌意的。

对于这些有着“特长”的学生来说,他们并不认为自己是个异类,而是觉得自己做的事比其它团体的事情更重要。也就是说,他只是兴趣与别人不一样而已,因此,他们不会强迫自己附和别人的团队。这也是他们能够专注某些事情的原因。

黑客与画家

计算机牛人与画家或建筑工程都一样,他们都是创造者。程序员学习计算机的相关概念与画家学习颜料与配色都是相同的。真正的黑客都是喜欢做自己的事情,就像优秀的画家一样,他们肯定执着于自己的审美。

如果黑客要想设计出优秀的软件,那么最好必须创业去实现它,因为创业将会使得自己有绝对的控制权,而不是总是受人指挥。就像画家绘画一下,总是先有轮廓的感觉,然后逐渐完成他的作品,而不是最开始就已经有固定完整的标准。程序设计也是如此,这也是为什么优秀的软件会重视后期的迭代过程,而不是前期的完整设计。

作者之所以后来离开雅虎,很大程度上是他实在是无法忍受大公司的毛病:大公司的程序员基本上已经沦陷为技工了,他们只需要实现由产品经理决定的需求即可,不需要自己思考或设计任何内容。这一点是所有大公司都存在的问题,大公司的设计可以由极少数的架构师或委员会来设计蓝图即可,而其它程序员,只需要负责实现即可,不用关注特别多的细节。这是大公司为了量化以及提高产品稳定性必要的做法。分工细致,最终导致的结果是每个人都变成了一颗随时可以被替代的螺丝。

沉默的勇气

日常生活中,似乎很少讲真话,因为讲真话的成本已经越来越高,在古代,可能一句话就会导致杀身之祸。而现在,虽然没有那么严重,但还是需要警惕那么一些人。讲真话,是需要勇气的,而这种勇气并不是谁都有。

然而,现实中,我们似乎都缺少了怀疑与批判精神,总是让自己成为一个随波逐流的人,别人说什么好,那么什么就是好的。似乎我们有时候自以为说的是自己的观点,其实也是从别人口中得出的,这种拿来主义已经成为了习惯。

在产品需求设计中,我们基本上不会去怀疑它或很少怀疑它,因为当遭受到多次的反驳之后,大家都选择了沉默,因为他们知道,怀疑也没有用,你的怀疑反而成为别人怀疑你的借口。

作为技术牛人,要学会沉默,这里的沉默是指我们只需要在该闭嘴的时候闭嘴就行,但是不能停止思考,我们需要保持自己的独立思考。

保持好奇心

技术狂热的追求者们,一定会有一颗宝贵的好奇心在驱使。比如,有这么一个需要注册码的软件,对于黑客们来说,这种限制等于是在侮辱他们的智商,因此他们会想尽办法去破译这种机制,以达到自己的满足欲。

不幸的是,软件开发商为了保护自己的软件不受到破解,联合起来游说并推出版权保护法,这对黑客们来说,是一个最大的打击,因为他们追求的就是自由,他们希望能看到任何程序的运行规律。软件开发商的每一条限制,都是对黑客们的挑战。

他们是一群喜欢探索技术的人群,因此,在后来的开源社区中,他们这群人发挥了重要的作用。那些相对封闭的软件,被他们所鄙视,比如像 Windows 这样的操作系统,在他们眼中就是一个 Bug 无数的操作系统,他们每修复上一个版本的无数 Bug 的同时,也引入了新的 Bug。这正是 Linux 等开源系统如此受欢迎的原因。

B/S 模式

传统桌面软件需要用户先下载,然后安装到本地电脑。由于每个用户的操作系统环境可能有差别,这样就会导致桌面软件在运行的过程中可能会出现各种奇怪的问题。当客户将这些问题反馈给软件厂商的时候,他们似乎也有可能很懵,因为他们自己也不知道这个错误是如何产生的,毕竟是用户自己的电脑。除非他们能派一个售后技术人员去上门服务一次才行。

作者在开发 ViaWeb 的过程中,刚开始使用的就是桌面应用程序的方式,经过一周,他们决定改用浏览器模式,也就是我们常说的 B/S 模式,这种模式带来的好处就是,可以随时发布更新,并且用户看到的效果基本上都是一致的。

传统的桌面软件的更新发布,需要经常打断用户的行为,让用户重新下载安装,但是有了浏览器之后,大部分的计算都放到服务器端处理,这样对用户来说是不透明的,因为用户不需要感知我们更新了网站,他们只需要关注这个功能能不能用,或者是不是他们想用的就行。似乎,对于普通人来说,我们只需要一个浏览器就行了。

另外,作者强力推荐了一种叫作 Lisp 的编程语言,他认为这个语言是最强大的、最抽象的语言。它是一种函数式编程语言,而函数式的特点就是无副作用,我们只需要把一个功能拆成多个函数,而每一个函数就是独立的一部分,他们像积木一样,后面的应用程序只需要对它们进行粘合就可以了。并且,函数式编程还有一个重要的特点就是可测试性非常强,通常,我们只需要保证这个函数是正常的就可以了,如果所有函数都是正常的,那么整个应用程序基本上也都是正常的。

创业

大公司由于人员众多,导致每一个人的贡献都很容易被平均化,比如一个完整产品的推出,请问:有多少功劳是属于程序员?有多少是属于测试人员呢?我可以肯定,每一个公司管理者基本上回答不出来准确的信息,因为他们对待这个问题也很困惑,似乎对于程序员们的考核是一个永恒的话题,以至于有些公司,会以代码行数来衡量一个程序员的水平。

大公司的效率特别的低下,原因在于,他们总是喜欢提倡所谓的流程,比如:当客户反馈一个问题后,会经过一层又一层的评估、风险分析、成本分析等等流程。如果有幸,这个要求最终到达产品经理那里,那么,还会经过程序员、测试人员的一些排期流程,最终这个功能才会得以发布生产环境。而这种现象,在所有大公司都是普遍存在的。

大公司的这种毛病,成为了创业公司的契机。一个创业公司最在意的就是产品的上线速度,他们要赶紧做出来上线,然后再后期迭代优化,如果一个产品的规划需要一年以上,估计这种产品还没推出来,失败的可能性非常大。

既然讲求速度和效率,团队的规模是一个最小的条件,一个团队应该越小越好,最好控制在 10 人以内,不过以我的经验来看,10 个人的团队还是有点大,我觉得应该 5 人就可以了。人越少,也就意味着流程越简单,沟通越简单,这样对不愿被打扰的程序员们来说,他们有更多的精力去完善产品的功能和技术细节。

作者之所以后来选择离开雅虎,主要原因就是受不了大公司的毛病。而对于普通人来说,如果你在的公司容纳不了你的才华,建议可以尝试一下创业。不需要太多人,几个人就行,然后专心打磨好自己的产品就可以了。

好的设计

国内的太多 App、网站等都显得过于花哨,用另外一种说法就是太臃肿,而这种臃肿似乎已经成为了一种业界标准。如果一个从未使用电脑的人来说,让他去操作这些应用,我想第一反应就是不知所措。因为整个界面有太多的干扰了,让用户不知道从哪里入口。

好的设计应该是简单的设计,而我们追求的却是让用户如何入坑,所以不得不给用户设置很多的陷阱。掉入陷阱的用户越多,成交量越大,这种设计在众人眼中就成了优秀的设计。似乎我们已经忘记了设计的初衷,设计就是为人而服务的,它应该遵守简单、自然、对称等等原则。

好的设计也应该大胆一些,在一些公司,有些页面的布局还是十多年前的。我们应该大胆尝试一下新的设计方式,不需要过于复杂的内容,只需要简单清晰就可以。

编程语言

语言的争论似乎已经成为了一种宗教上的敌视。如果说一种语言比另外一种语言优秀,则会产生严重的鄙视链和口水战。因此,我在生活中,如果有遇到过这样的问题,我只会说每种语言都是相通的,没什么太大的差别,学会了其中的一个,再学另外一个非常的容易。这种折中的说法,是没有什么问题的。

我们现在已经不会使用低级语言编程了,现在所有流行的语言都是高级语言,对于有些黑客来说,动态弱类型的语言似乎很受欢迎。而公司在招聘程序员的时候,也只会招聘那些流行的语言,它们有个特点是使用的人非常多,对于公司来说,是一种比较保险的措施。如果一个程序员离开后,完全可以很快找到另外一个程序员去替代他。

编程语言的本质从工具变成了一种流行或生态,但是为了生活,普通的程序员们又不得不忍受那些流行但实际很烂的编程语言。选择一种好的编程语言,对一家公司来说至关重要。特别是小公司,如果选择一种臃肿的编程语言,那么你的开发效率可能会是其它选择高效编程语言的十分之一。往往一个产品的推出速度很重要,至于推出后的事情,可以在成功试探用户反应后再做决策也不迟。

总结

全书两百多页,看起来并不费力,很难想象,如今程序员的工作场景似乎和二十年前一模一样。我们看似在前进,似乎又还在原地踏步,互联网的发展的确给生活带来了翻天覆地的变化,然而,这种变化是必须的,还是可有可无呢?

好书推荐  

编辑:myweb   最后更新于:2020-05-10 15:39


版权声明:本站所有原创内容受到法律的严格保护,版权归本站所有。如果您觉得我们的内容有价值,您仍然可以进行自由传播,但必须显著地标识或说明此内容在本站的链接地址。




联系我:help@wodeabc.com,鄂ICP备14016278号-2
©2016-2020 我的ABC All Rights Reserved.
友情链接: 一起编程网