《黑客与画家:硅谷创业之父Paul Graham文集》----读书笔记


保罗·格雷厄姆其人其事

在这里插入图片描述

人物经历

保罗·格雷厄姆以Lisp方面的工作而知名,也是最早的Web应用Viaweb的创办者之一,后来以近5千万美元价格被雅虎收购,成为Yahoo! Store。他的著作包括On Lisp (1993),ANSI Common Lisp (1995) 和Hackers & Painters (2004)。

1998年,他以5000万美元价格将自己创建的、可帮助他人快速开网店的Viaweb公司卖给了雅虎。他将Y Combinator视为一新兴公司,并称要将现有规模扩大一倍(目前它共资助43家公司),但首要问题是找到公司的发展瓶颈并加以解决。格雷厄姆担心,他和其合伙人没有足够的时间来应对这些创业者,而且办公场地也太小。他计划引入另一合伙人并扩大公司总部。他说:“第一个夏天,我们只资助了8家新兴公司。如果那时有人说我们会资助43家公司,那简直就是天方夜谭。我相信再过几年,我们资助的初创企业数量将会是个不可能的数字。”

2005年他与人共同创建了著名的创业投资公司Y Combinator,先后投资了数十家创业公司,包括reddit、Justintv等。公司的新闻网站Hacker News是访问量最高的技术新闻信息来源之一。
2008年,他与Y Combinator的另一位创办者杰西卡·利文斯顿结婚。
他拥有哈佛大学应用科学(计算机方向)博士学位,并在罗德岛设计学院和佛罗伦萨绘画艺术学院学习过绘画。

图书介绍

这本书是一个散文集,一共15篇,每篇文章之间没有关联,大家可以跳跃着来读。"黑客与画家"是其中一篇,书名也取了这篇文章的名字

当提到黑客,在一些大众的眼里面,黑客就是入侵计算机的人,和计算机犯罪联系在了一起。那么黑客一词最早的时候是定义为那些专门解决计算机中出现疑难问题的人,是一流能力的象征,自由软件基金会的创始人理查德.斯托尔曼说:"出于兴趣而解决某个难题,不管它有没有用,这就是黑客。

“可见,从精神层面看,黑客追求着一种愉悦或者是享受,是有精神追求的人。黑客在这本书中也倾向于代表着优秀的程序员或者软件设计师,但是对"软件工程师"这个称谓,作者是不太赞成的。作者认为优秀的软件设计师如其说是工程师,还不如说是建筑师,建筑师表现在"做什么”,而工程师表现在"怎么做",有意思的一点是,在英语中"建筑师"和"架构师"是同一个词architect,那么优秀的程序员不仅负责建造,还负责架构。

参考:https://m.simayi.net/duhougan/14611.html

个人作品编辑

Hackers & Painters: Big Ideas from the Computer Age-中文版《黑客与画家》由阮一峰翻译。

此后的两三年,格雷厄姆一直过着一种动荡的生活。他栖身于纽约一间极小的公寓,追求自己的艺术家梦想,但是收入低而且不稳定,日子过得非常窘迫,常常入不敷出,他不得不经常替别人编程,赚取一些生活费

“运营创业公司,每天都像在战斗;而为大公司工作,就像在窒息中挣扎。” 于是,他选择了辞职

“我们生活中的一切,都正在成为计算机。所以,如果你想理解我们目前的世界以及它的未来动向,那么多了解一些黑客的想法会对你有帮助。”

他的创业公式是:
(1)搭建原型
(2)上线运营(别管bug)
(3)收集反馈
(4)调整产品
(5)成长壮大

所有学员刚刚来到YC的时候,每人都会拿到一件白色T恤衫,上面写着“Make something people want”(制造用户需要的东西),等到他们的项目得到风险投资以后,又会收到一件黑色T恤衫,上面写着“I made something people want”(我制造了用户需要的东西)。

2005年3月,哈佛大学的学生团体“计算机协会”邀请格雷厄姆做演讲。他选择的题目是《如何成立创业公司》。“我对他们说,选择天使投资人的时候,最好选择那些自己有过创业经验的人。”说完这句话,他发现学生都以期待的眼神看着他,他赶紧补充说:“我不是天使投资人。”

“以前创业很昂贵,你不得不找到投资人才能创业。而现在,唯一的门槛就是勇气。”

译者序

想要把握这个时代,就必须理解计算机。理解计算机的关键,则是要理解计算机背后的人。表面上这是一个机器的时代,但是实际上机器的设计者决定了我们的时代。程序员的审美决定了你看到的软件界面,程序员的爱好决定了你有什么样的软件可以使用。

黑客行为必须包含三个特点:好玩、高智商、探索精神

编程是一种艺术创作


为什么书呆子不受欢迎

所以,如果智力本身与“受欢迎”无关,为什么聪明的小孩一直不受同龄人的欢迎呢?我认为,答案就是他们真的不想让自己受欢迎。

如果当时有人告诉我这个答案,我一定会嘲笑他。在学校里不受欢迎,你的日子就很难过,有人甚至因此自杀。所以,要是你跟我说,是我本人不想受欢迎,那就好比你在说,我在沙漠里快渴死了,却又不想喝水。别搞错了,让自己更受欢迎,这才是我要的。
但是事实上,我并不是那么强烈地渴望这个。我更想追求的是另一件事情——聪明。

文艺复兴时期的代表人物阿尔伯蒂[插图]有一句名言:“任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。”

我13岁的那一年,对世界的全部认识,就是身边看到的一切。

黑客与画家

同样地,优秀的软件也要求对美的狂热追求。如果你查看优秀软件的内部,就会发现那些预料中没有人会看见的部分也是优美的。

不能说的话

有时候,别人会对你说:“要根据社会需要,改造自己的思想(well-adjusted)。”这种说法隐含的意思似乎是,如果你不认同社会,那么肯定是你自己的问题。你同意这种说法吗?事实上,它不仅不对,而且会让历史倒退。

因为最先从你头脑中跳出来的想法,往往就是最困扰你、很可能为真的想法。你已经注意到它们,但还没有认真思考过。

做一个异端是有回报的,不仅是在科学领域,在任何有竞争的地方,只要你能看到别人看不到或不敢看的东西,你就有很大的优势

“守口如瓶”的真正缺点在于,你从此无法享受讨论带来的好处了。讨论一个观点会产生更多的观点,不讨论就什么观点也没有

如果你想要清晰地思考,就必须远离人群。但是走得越远,你的处境就会越困难,受到的阻力也会越大,因为你没有迎合社会习俗,而是一步步地与它背道而驰。小时候,每个人都会鼓励你不断成长,变成一个心智成熟、不再耍小孩子脾气的人。但是,很少有人鼓励你继续成长,变成一个怀疑和抵制社会错误潮流的人。


你是一个随大流的人吗

黑客是不服从管教的,这就是他们的本性。这也是美国人的本性。

人们惊慌失措时采取的措施到头来产生了适得其反的效果。

真话

上面写着“太麻烦,不如死”(death before inconvenience)

对于互联网软件,没人规定只能使用某些语言开发,因为所有的硬件都控制在你手里,你想要用什么语言,就能用什么语言。不同的语言适合不同的任务,你应该根据不同场合,挑选最合适的工具。尤其是在竞争者存在的情况下,“可以这样做”就变成了“必须这样做”(详见后文),因为如果你不利用语言的优势,那就会听任对手超过你。

如果你出错了,没有人会提醒你,唯一的代码保护机制就是你的羞耻心,你不想被同事当成傻瓜,这就足矣。

人数越来越少,软件开发的效率将指数式增长。我不记得我们在Viaweb开过讨论如何编程的会议。步行去吃午饭的路上,我们就能把该说的话说完,从来没有例外。

管理企业其实很简单,只要记住两点就可以了:

  • 做出用户喜欢的产品
  • 保证开支小于收入

只要做到这两点,你就会超过大多数创业公司。随着事业的发展,你自己就能琢磨出来其他的诀窍。

异端邪说

如果你想致富,应该怎么做?我认为最好的办法就是自己创业,或者加入创业公司。几百年来,这一直是致富的可靠途径。“创业公司”(startup)这个词诞生于20世纪60年代,但是它与中世纪集资进行的航海冒险活动其实也相差无几。

创造有价值的东西就是创造财富。

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

尽快拿出1.0版,然后根据用户的反映而不是自己的猜测进行软件优化。

时空差异

一个人的工作具有多少价值不是由政府决定的,而是由市场决定的。

技术无法使其变得更便宜的唯一东西,就是品牌。这正是为什么我们现在越来越多地听到品牌的原因。富人与穷人之间生活差异的鸿沟正在缩小,品牌是这种差距的遗留物。

机制

好设计是简单的设计。

好设计是永不过时的设计。

为什么这样做

“所有编程语言我都用过。”某个看上去饱经风霜又酷的黑客往酒吧里一坐,“你用什么语言并不重要,重要的是你对问题是否有正确的理解。代码以外的东西才是关键。”这当然是一派胡言。各种语言简直是天差地别,比如Fortran I和最新版的Perl就是两种完全不同的语言

守口如瓶

一百年后,人们使用什么语言开发软件?

我的判断是,那些内核最小、最干净的编程语言才会存在于进化的主干上。一种语言的内核设计得越小、越干净,它的生命力就越顽强。

我已经预测了,一旦未来硬件的性能大幅提高将会发生什么事。新增加的运算能力都会被糟蹋掉。

essay(论文)这个词来自法语的动词essayer,意思是“试试看”。从这个原始意义来说,论文就是你写一篇文章,试着搞清楚某件事。软件也是如此。我觉得一些最好的软件就像论文一样,也就是说,当作者真正开始动手写这些软件的时候,他们其实不知道最后会写出什么结果。

比尔·伍兹曾经对我说,根据经验判断,每增加一个解释层,软件的运行速度就会慢一个数量级。但是,多余的软件层可以让编程灵活起来。

因为这段差距正在变得越来越大,所以性能分析器(profiler)将变得越来越重要。


笑脸相迎?

大公司每年平均成长大约10%。所以,如果你掌管一家大公司,只要每件事都做到大公司的平均水准,你就能得到大公司的平均结果,也就是每年成长大约10%。

在竞争中,你的对手无法理解你的技术优势,这可是再宝贵不过了。商场如战场,对手摸不透你,你的胜算就增加了。

到了一定年龄之后,程序员极少主动更换自己的编程语言。不管习惯使用的是哪一种语言,他们往往认为这种语言已经足够好了。程序员非常忠于他们心爱的语言

有些公司的职位描述使用了大量的IT词汇,这样的内容越多,这家公司就越不构成威胁。最不用担心的竞争对手就是那些要求应聘者具有Oracle数据库经验的公司,你永远不必担心他们。如果是招聘C++或Java程序员的公司,对你也不会构成威胁。如果他们招聘Perl或Python程序员,就稍微有点威胁了。至少这听起来像一家技术公司,并且由黑客控制。如果我有幸见到一家招聘Lisp黑客的公司,就会真的感到如临大敌。


永远质疑

无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码,也可以在编译期读取或运行代码,还可以在运行期读取或者编译代码。

使用一种不常见的语言会出现的问题我想到了三个:你的程序可能无法很好地与使用其他语言写的程序协同工作;你可能找不到很多函数库;你可能不容易雇到程序员。

到目前为止,大家公认少于10个人的团队最适合开发软件。

总之,根据上面的这个数字,如果你与ITA竞争,而且你使用C语言开发软件,那么ITA的开发速度将比你快20倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果ITA开发某个新功能用了三个月,那么你需要五年才能做出来。

事实上,按照大多数公司的实际情况,计划中五年完成的项目很可能永远都不会完成。

在大型组织内部,有一个专门的术语描述这种跟随大多数人的选择的做法,叫做“业界最佳实践”。

闭包(即一个函数,通过它可以引用由包含这个函数的代码所定义的变量)


良好的坏习惯

编程语言还需要有一本介绍它的书。这本书应该不厚,文笔流畅,而且包含大量优秀的范例。布赖恩·柯尼汉和丹尼斯·里奇合写的《C程序设计语言》(C Programming Language)就是这方面的典范。眼下,我大概还能再加一句,这一类书籍之中必须有一本由O’Reilly公司出版发行。这正在变成是否能吸引黑客的前提条件了。

举例来说,hello-world 本应该是一个很简单的程序,但是在Java语言中却要写上一大堆东西,这本身就差不多可以说明Java语言设计得有问题了。

一下子从无到有做出一个大项目是很恐怖的一件事。当人们接手一个巨型项目时,很容易被它搞得一蹶不振。最后,要么是项目陷入僵局,要么是做出来一个规模小、性能差的东西。你想造一片闹市,却只做出一家商场;你想建一个罗马,却只造出一个巴西利亚;你想发明C语言,却只开发出Ada。

某种语言到底是静态类型还是动态类型、是面向对象还是函数式编程,这些都不如函数库重要。

大多数人接触新事物时都学会了使用类似的过滤机制。甚至有时要听到别人提起十遍以上他们才会留意。这样做完全是合理的,因为大多数的热门新商品事后被证明都是浪费时间的噱头,没多久就消失得无影无踪

著名散文家E.B.怀特说过,“最好的文字来自不停的修改”。所有优秀作家都知道这一点,它对软件开发也适用。


另一条路

让用户满意并不等于迎合用户的一切要求。用户不了解所有可能的选择,也经常弄错自己真正想要的东西。做一个好的设计师就像做一个好医生一样。你不能头痛医头,脚痛医脚。病人告诉你症状,你必须找出他生病的真正原因,然后针对病因进行治疗。

画家之间甚至流传着一句谚语:“画作永远没有完工的一天,你只是不再画下去而已。”这种情况对于第一线的程序员真是再熟悉不过了。


设计与研究

大多数优秀设计都是这样产生的,它们关注用户,并且以用户为中心。

我说设计必须考虑用户的需求,这里的“用户”并不是指所有普罗大众。事实上,你可以选择任何想要的目标用户。比如,假定你正在设计一种工具,你可以把目标用户定为初学者,也可以定为专家级用户。一种人眼里的优秀设计可能在另一种人眼里却是糟糕无比。这里的重点是你必须选出某些人作为你的目标用户。我觉得,除非设定目标用户,否则一种设计的好坏根本无从谈起。

如果目标用户群体涵盖了设计师本人,那么最有可能诞生优秀设计。如果目标用户与你本人差别很大,你往往会假定目标用户的需求比你本人的需求更简单,而不是更复杂。低估用户(即使出于善意)一般来说总是会让设计师出错。我怀疑那些设计“公共住宅项目[插图]”(housing project)的建筑师根本没想过自己住在里面会是什么感觉。编程语言也有这种现象。C、Lisp和Smalltalk都是设计者为了自己使用而设计的,而Cobol、Ada和Java则是为了给别人使用而设计的。

如果你觉得自己在为傻瓜设计产品,那么很可能不仅无法设计出优秀产品,而且就连傻瓜也不喜欢你的设计。
不过,就算你的设计针对的是最高端的用户,你也一样是设计给人类使用。研究就不一样了。做数学研究时,你不会只为了方便读者理解而故意选择一种更麻烦的证明方式,你只会选择最直接、最简洁的证明。我想,一般来说科学研究都是这样。科学观点不需要服从人类工程学(ergonomic)。

所谓痛点,正是如此

让用户满意并不等于迎合用户的一切要求。用户不了解所有可能的选择,也经常弄错自己真正想要的东西。做一个好的设计师就像做一个好医生一样。你不能头痛医头,脚痛医脚。病人告诉你症状,你必须找出他生病的真正原因,然后针对病因进行治疗。

先做出原型,再逐步加工做出成品,这种方式有利于鼓舞士气,因为它使得你随时都可以看到工作的成效。开发软件的时候,我有一条规则:任何时候,代码都必须能够运行。如果你正在写的代码一个小时之后就可以看到运行结果,这好比让你看到不远处就是唾手可得的奖励,你因此会受到激励和鼓舞。

点评

最早听说这个书是室友在看,说作者简直是lisp 语言的坚实簇拥,后来发现其实思维是这样的:程序员总是手里有个榔头看啥都是钉子。可能他只会LISP就顺道diss 了其他语言,尤其是java,还好稍微给python 留了点余地。十几年前已经有了对语言发展趋势的预见,可见功力之深厚。

作者的散文也是形神聚散,但娓娓道来的东拉西扯确实字字珠玑,作为程序员的我深有同感,工作之余有空写写一路走来的心路历程,顺便财富自由,这就是硅谷程序员和我们搬砖程序员的区别么,细思极恐。

什么是业界最佳实践?硅谷玩烂的东西,中关村也玩烂的东西,还有很对团队都做不到,这就是业界最佳实践。本书把软件开发中显而易见的道理高屋建瓴的给出简洁的指导意见,虽然是一家之言,但不得不佩服很多年前这么先进open的理念。然而对于中国的软件开发者来说,事实似乎没那么简单。
我曾想,新时代的我们和曾经工厂流水线上的工人有什么不同呢?

空调房里坐着而已 吧。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读