吾辈的博客原文地址 https://blog.rxliuli.com/p/f2...
黑客新想法的最佳来源,并不是那些名字里有[计算机]三个字的理论领域,而是来自于其余创做领域。
这是一篇读书感悟的文章,来源于最近阅读的书籍 黑客与画家。前端
摘抄自豆瓣
书籍简介:
本书是硅谷创业之父 Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工做方法等全部对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解咱们这个时代,迫使读者独立思考。
本书适合全部程序员和互联网创业者,也适合一切对计算机行业感兴趣的读者。
做者简介:
保罗・格雷厄姆,《黑客与画家》一书的做者,硅谷创业之父。1964 年,出生于匹兹堡郊区的一个中产阶级家庭。父亲是设计核反应堆的物理学家,母亲在家照看他和他的妹妹。青少年时代,格雷厄姆就开始编程。可是,他还喜欢许多与计算机无关的东西,这在编程高手之中是不多见的。
保罗・格雷厄姆在康奈尔大学读完本科,而后在哈佛大学得到计算机科学博士学位。1995 年,他创办了 Viaweb,帮助我的用户在网上开店,这是世界上第一个互联网应用程序。1998 年夏天,Yahoo! 公司收购了 Viaweb,收购价约为 5000 万美圆。
此后,他架起了我的网站 paulgraham.com,在上面撰写了许许多多关于软件和创业的文章,以深入的看法和清晰的表达而著称,迅速引发了轰动。2005 年,他身体力行,建立了风险投资公司 Y Combinator,将本身的理论转化为实践,目前已经资助了 80 多家创业公司。如今,他是公认的互联网创业权威。
以前吾辈也曾经坚信电子书籍(Epub/PDF)要比纸质书籍更好,方便携带,随时都能阅读。直到遇到了一位 dalao 的指点 -- 只要买了书,放在那里,总有机会去看看的。 以后,吾辈便尝试买了一些实体书,晚上回来闲暇片刻便会看看。react
最近一周,吾辈便把黑客与画家看完了。固然,以前已经看过电子版的了。做者真的很厉害,既是第一个互联网程序的开发者,也是一个画家,更是一个顶级黑客(非骇客)。而后,他写完这本书以后,还变成了做者。固然,译者也一样是位知名人物 -- 阮一峰。webpack
读这本书的时候,才发现真-大佬的想法真的很厉害,尤为是关于创造财富那一章,有许多思想值得吾辈深思。
下面摘抄一些内容并谈谈吾辈的想法git
书呆子不受欢迎的真正缘由,是他们脑子里都在想着别的事情,他们的注意力都放在读书或者观察世界上面,而不是穿衣打扮、开晚会上面。
嗯,吾辈想这大抵是做者的亲身体会:做为一个聪明人却不受欢迎 #笑 不过就吾辈经历而言,读书好的人通常也不会太受排挤,或许这是由于国情不一样的缘由吧 -- 国内不论如何都把成绩做为第一位,而据做者所说美国的中学生并不会特别对待学习,至少,不会拼命去学,也不会所以自杀。程序员
黑客与画家的共同之处,在于他们都是创做者。与做曲家、建筑师、做家同样,黑客和画家都是试图创做出优秀的做品。他们本质上都不是在作研究,虽然在创做过程当中,他们可能会发现一些新技术(那样固然更好)。
想一想国内的大环境,吾辈瞬间心酸得落下了眼泪。说是创做者,但实际上,开发者被称为码农不是没有道理的 -- 只是实现经理所要求的功能,而不是决定功能应该如何设计 -- 这被交给了其余人!固然,拥有/参与开源项目能够减小这个问题,由于能够决定功能如何设计而非实现。但本质上仍是在代码的圈子里打转,并无创造出人们真正须要用到的东西。github
程序写出来是给人看的,附带能在机器上运行。
这不是吾辈第一次看见这句话了,但在工做过程当中,吾辈发现实际上这句话并无多少开发者真的在乎过 -- 包括一些 dalao。为了性能死扣算法,没错吾辈就是在吐槽一些公司任何职位都要面试算法,简直成 leetcode 算法面试公司了。大部分场景实际上并不须要开发者手写算法进行优化,由于如今的计算机已经足够快了。手写算法再加上耦合业务,只会让代码变得无比丑陋,难以维护 -- 仅仅是为了在某个地方稍微快一点。web
在某些地方,自行其道,彻底不替读者着想,被当作是高水平、高智商的表现,甚至都发展成了一种风尚。
是的,有些人就是为了炫技而写出来各类奇葩的代码,致使其余人再看代码时,纷纷惊呼:“这是什么神仙代码?!”。在他们看来,写出来的代码让别人看不懂,本身说的话让别人听不懂,是一种高水准的表现,甚至于说:“这下降了 SB 来烦个人几率”。甚至于刻意不写注释,而后辩解说:“类型系统就是最好的注释”
关于这点,做者也在后面进一步评论了。面试
可是,我不以为 “换位思考” 与智商之间存在任何联系。在数学和天然科学领域,你用学习怎么向别人表达本身,也能却得很好的成就。而那些领域的人广泛很聪明,因此人们很天然地就把 “聪明” 与 “不懂得换位思考” 联系了起来。可是,世界上还有许许多多很笨的人,也一样不懂得 “换位思考”。
最后一句真是说出了大实话 -- 伪-大佬。算法
我家附近,一辆汽车的保险杠贴着一张粘纸,上面写着 “太麻烦,不如死”(death before inconvenience)。大多数人,在大多数时候,老是选择最省事的作法。若是互联网软件可以击败桌面软件,必定是赢在更方便这一优点上。不管从用户的角度仍是从开发者的角度来看都是如此。
是的,如今浏览器已经击败了客户端软件,甚至在本来必需要使用客户端的地方使用 Web 技术进行了入侵(Electron,React Native)。但这并不意味人们知道这件事就会真的对用户更友好,尤为是对于免费的开源程序而言。用户再也不是首位要素,动辄要求使用者去看源码,吐槽就会被说 “爱用用不用滚,You can you do?”。你敢相信?但这就是国内开源现状。typescript
开发软件须要的程序员人数减小,不只意味着省下更多的钱。正如《人月神话》一书中所指出的,向一个项目增长人手,每每会拖慢项目进程。随着参与人数的增长,人与人之间须要的沟通呈现指数式增加。人数愈来愈多,开会讨论各个部分如何协同工做所须要的时间愈来愈长,没法预见的互相影响越多越大,产生的 bug 也愈来愈多。幸运的是,这个过程的逆向也成立:人数愈来愈少,软件开发的效率将指数式增加。
因此说这就是小公司能生存下来的缘由么?#笑 想到以前项目实际上只有 3 我的全职开发就发现,其实也不是那么奇怪呢
桌面软甲迫使用户变成系统管理员,互联网软件则是迫使程序员变成系统管理员:用户的压力变小了,程序员的压力变大了。
唉,小公司别说系统管理员了,就连前端,后端,运维,测试都要会一点才行,必须是 多面手/万金油 才能生存下去。
许多人从小就认定世界上的财富总额是固定不变的,这样想的人数多的惊人。
小时候我就对这一点深信不疑:若是夫人拿走了全部的钱,那么其余人就变得更穷了。许多成年人至今都是相似见解的信徒。每当有人提到 x% 的人口占有了 y% 的财富,他的言下之意每每就包含了这种错误的观点。
嘛,吾辈也曾经是这样想的人之一(一个普通的不能再普通的人)。但这个观点在看完本书后刷新了,财富在净增加 -- 代价是地球自己。
确实有一些 CEO 的收入过高,不合理,可是有没有 CEO 的收入不足以体现他所创造的财富的呢?乔布斯就是这样的例子。他拯救了濒临崩溃的苹果公司,扭转了危机,削减了成本,成功决策了下一代产品。他的收入就低于他的工做所创造的价值。
是的,这点确实很厉害,尤为是吾辈正在看的 浪潮之巅 一书也谈及了他,确实是个 真-大佬。
在垃圾邮件业中,若是发送销售类垃圾邮件受到限制,那么整个行业将不可避免地受到重创。“行业”这个词是很准确的,发送垃圾邮件的人其实都是商人,他们这么作只是由于这招颇有效。虽然垃圾邮件的回应率低到不能再低了(不超过百万分之 15,相比之下,传统的邮寄商品目录的回应率是百万分之 3000),可是发送垃圾邮件的成本实际上为零,因此它仍是有效的。可是对于收到垃圾邮件的人来讲,成本却很高昂,假定有 100 万人分别收到一封垃圾邮件,每人花一秒钟删除,累计起来就至关于一我的 5 个星期的工做量,而发送人连一分钱也不用付出。
不过,虽然接近于零,发送垃圾邮件仍是有成本的^。因此,只要咱们把垃圾邮件的回应率降得很低(无论手段是直接过滤,仍是让垃圾邮件被迫掩盖它们的销售意图),商家就会发现,发送垃圾邮件是一件经济上不值得的事情。
这让吾辈想到了如今的广告过滤行业,嗯,没错是行业 -- Adblock Plus 把这事作成了生意。广告屏蔽插件流行了起来以后,广告受益者就会烦恼,会提示让用户关闭广告过滤以支持网站,或者,直接关闭页面拒绝使用 -- 直到关闭了广告过滤为止。后来,开始出现了屏蔽那些网页上检测广告的脚本 -- 反屏蔽广告脚本。这个斗争其实能够一直进行下去,终究是收益与代价的权衡罢了。
好设计是简单的设计。从数学领域到绘画领域,你均可以听到这种说法。在数学中,它表示简短的证实每每是更好的证实。特别是对于数学公理来讲,少便是多。在编程中,这种说法也基本适用。
少便是多,能知足这一点的库/框架并很少,Lodash 是一个正例,React 某种程度上来讲是个反例。无论是程序(三国杀),仍是库(rx-util),开发者老是喜欢增长功能,逐渐提升复杂度,最后让人难以接受。这里吐槽一下国产程序,只会逐渐增长功能,永远学不会什么叫减法。
高级语言比汇编语言更接近人类语言,而某些高级语言又比其余语言更进一步。举例来讲,C 语言是一种低层次语言,很接近硬件,几乎堪称可移植的汇编语言,而 Lisp 语言的层次则是至关高。
Lisp
以前一直有听闻过,但吾辈还从未真正使用过。在编程语言领域,吾辈接触过 Java
, JavaScript
, Scala
, C#
,然而他们都不能支持 Lisp
中一些很是高级的功能(宏)。
下面做者列出了 Lisp 的创新功能
Lisp 确实开创了许多功能,成功引发了吾辈的兴趣,之后有机会会去看一下做者写的 Lisp 的书籍吧
大多数程序员也许没法分辨语言的好坏。可是,这不表明优秀的编程语言会被埋没,专家级黑客一眼就能认出它们,而且会拿来使用。虽然他们人数不多,但就是这样一小群人写出了人类全部优秀软件。他们有着巨大的影响力,他们使用什么语言,其余程序员每每就会跟着使用。老实说,不少时候这种影响力更像是一种命令,对于其余程序员来讲,专家级黑客就像本身的老板或导师,他们说哪一种语言好用,本身就会乖乖地跟进。
编程语言的最高境界一直在发展之中。虽然语言的核心功能就像大海的深处,不多有变化,可是函数库和开发环境之类的东西就像大海的表面,一直在汹涌澎湃。
是啊,因此如今流行 react,流行 webpack,流行 typescript,甚至曾经有人吐槽 2016 年里作前端是怎样一种体验。各类各样的框架和库,说不定过不了一段时间就死掉了(前车可鉴),这些都是浪潮的表面。不过总有人喜欢折腾代码,而不是完成一个真正能够给其余人用的东西。疯狂造一堆没人用的轮子,美其名曰不作调参工程师。固然,尝试实现便于了解深层原理,然而若是不加节制什么东西都以为本身造才好就是典型的浪费时间。
先作出原型,再逐步加工作出成品,这种方式有利于鼓舞士气,由于它使得你随时均可以看到工做的成效。开发软件的时候,我有一条规则:任什么时候候,代码都必须可以运行。若是你正在写的代码一个小时以后就能够看到运行结果,这比如让你看到不远处就是唾手可得的奖励,你所以会受到激励和鼓舞。
跟你说实话吧,画家之间甚至流传着一句谚语:“画做永远没有完工的一天,你只是再也不画下去而已。”这种状况对于第一线的程序员真是再熟悉不过了。
是啊,能看到效果的原型很重要,看不到效果的开发是艰苦而烦躁的。并且出现错误了都没法进行调试,实在是不能更糟糕了。有些开源项目目标很大,花费的时间过长,长期作不出来一个可用版本,长此以往,就半路放弃了。
总而言之,上面是一些看书的想法以及吐槽,这本书籍吾辈强烈推荐 -- 即使不是 IT 行业。