[读书笔记]黑客与画家-思维、财富、创业、产品、设计、编程

Hackers and Painters

黑客与画家特别值得记录的

这本书一直都有很多的朋友推荐看,从fenng到身边的朋友看过的人也挺多的,想想跑到日本来也有一个月多的了,很多的之前的想法和做的东西,包括学习的方向,随着地域的变更,很多都变化了,在努力的学习和适应中,也想想,在新的地方,开始一个新的生活,从零开始,过去的不重要,重要的是现在和未来。

很多的准则在这个世界上都是适用的,但是往往这些准则很简单,而被很多人给轻视了,当然我自己也是这样的。读这本书,有一种回归本质的感觉,从很多的方面能够刺激你去思考,一整本书我没有看完,无奈找了多个地方都不能下载完整版的中文版,就先下了一本英文版本的电子书先看着,在豆瓣上看了一些评论,看到了一篇 http://www.cnblogs.com/me-sa/archive/2012/07/23/Hackers_and_Painters.html 博客园的朋友写的读书笔记感觉真的很赞,总结的很好,自己也把这些敲了一遍,深刻的体会下,读这本书,和之前读10gen的 rework之类的,有很深的感触。其实明白自己想要的是什么,然后开始动手做,知道做成,这个是一个很简单的过程,但是往往很多有想法的人都很难做到,看这本书,静下心来,知道自己要的是什么?感觉行动才是,能行动的就只有自己的了!

 

 

思维方式

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

我们这个世界,你向下沉沦或者向上奋进都取决于你自己,不能把原因归于外界。

数学家Norbert Wiener说:如果你与奴隶比赛,你也会变成一个奴隶。

你把整个程序想清楚的时间点,应该是在编写代码的同事,而不是在编写代码之前,这和作家画家和建筑师的做法完全一样。

通常都是想很多方案在去比较,浪费的挺多时间的,这个也许就是大公司和小公司的人的区别吧,没有好坏可言!

历史的常态似乎就是,任何一个年代的人们都会对一些荒谬的东西深信不疑。

如果你想要清晰的思考,你就必须远离人群,小时候每个人都会鼓励你不断长大,变成一个心智成熟,不耍小孩子脾气的人,但是很少有人鼓励你继续成长,变成一个怀疑和地址社会错误潮流的人。如果你就是潮水的一部分怎么能看到潮流的方向?

如果一个命题是错误的,这就是它所得到的最坏的评价,足够批判它了,根本不用在加上任何标签,但是一个命题不是错的,却被加上各种标签,进行压制和批判就有问题,因为只要不是错误的观点,就不应该被压制讨论。

丑陋的做法和聪明的做法有一个共同点就是不符合常规。

Michael Rabin遇到难题的时候,会吧问题重新定义成一个比较简单的形式,同时一定会假想一个对手在于他比赛谁更快的解决问题。

遇到问题的时候简单化考虑,之后快速解决

构思这东西有个特点,就是它会导致更多的构思,你有没有注意过,坐下来写东西的时候,一般思维是在写作的时候产生的?软件也是这样!

构思是在动手之前,动手之前想太多也不是什么好事情,会想的更多,这点我深刻的体会到3年来尤为如此

互联网产品

“你的电脑”这个概念正慢慢变为过去式,取而代之的是“你的数据”,你应该可以从任何终端上获取你的数据。

任何数据都能及时的获取到

移动客户端,便利的网络条件下

硬件需要考虑的地方不仅仅在于怎样才能避免出问题,还在于怎样做才能最大地发挥他们的作用。

如果关键是经常性发布,每次只有很小幅度的变化,那么就不容易产生复合式BUG,这好比是扫除,你一直在打扫大厅,掉落在地板上的东西会被立即清理,省的他们时间一长与其他的东西粘在一起,软件运行不了就不发布,一旦能运行了就立即发布;你的软件是连续性渐变的,某些更新也许比较重大,但是“版本”这个概念并不适用于互联网软件,因为你能得到用户数据,所以就不能依赖基准测试了,基准测试不过是在模拟用户,而你现在能看到真实的用户,你想知道该优化什么地方,就登陆到服务器,看看什么程序最消耗CPU,你会知道什么时候应该停止优化,当我们发现viaWeb编辑器的瓶颈是内存而不是CPU时,就知道可能应该停止优化了。

快速的迭代符合大部分用户的需求更符合整个产品长期的发展线路

大公司的做法不是立刻实现新的功能,而是先对新功能做一个计划,我们没有任何计划,我们有改进的想法,但是我们如果想到怎么改进,我们就已经把它实现了。

小团队的计划就是快速的实现

提高软件可靠性的关键在于开发时的全神贯注,而不是降低开发速度,正因为飞行员的全神贯注,他才能在夜间让一架18吨飞机以225公里的时速安全降落在航母的甲板上,做的比小孩子切面包还要更安全。

在任务下面只要够全神贯注而且能力又足够的话,其实不会什么拖延的,因为很多的功能能在很短的时间内完成

正如人月神话指出的,向一个项目增加人手,往往会拖慢项目进度,随着参与人数的增加,人与人之间的沟通成本呈指数式增长。

3-6个人的小team可以做很多的事情,几乎可以无敌了

只要你还在很活跃的开发产品,就免不了亲自做系统管理,互联网软件是获得,每时每刻都在你的服务器上运行

从网络中选择自己想要的好的东西,把他们用起来用的更好

现在关注的

Storm

Hadoop

yaf framework

openresty

redis

mongodb

nginx

 

工作&创业

人们无法考核你的工作,甚至误解你的工作,都不是最糟糕的事情,更大的危险是你自己也误解自己的工作。

知道现在自己想要什么,知道过去自己想要的和现在得到的是否是一样的,

工作就是在一个组织中,与很多人共同合作,做出某种人们需要的东西。

普遍的工作都是提不起兴趣的

你的职位产生的业绩应该是可测量的,否则你做得再多,也不会得到更多的报酬。

我认为,真实世界的关键并非在于它是由成年人组成的,而在于它的庞大规模使得你做的每件事都能产生真正意义上的效果

从经济学观点看,你可以把创业想象成一个压缩的过程,你所有的工作年份被压缩成短短几年,你不在是低强度的工作四十年,而是以极高的强度工作四年,在高技术领域,这种回报极其丰厚,工作效率越高,额外报酬越高。

创业坚持4年就可以了,想想我坚持了3年多了,可是到现在屁都没的,自己认为的创业不一定是创业

切记创业不可能仅仅是自己一个人,而是一群人在一起

技术就是某种手段,就是我们做事的方式,如果你解决了一个热门的技术难题,别人都会使用你的解决方案,这就是可放大性。

让技术有放大性

如何让自己的技术有放大性?

假定软件有两个候选的新功能,他们创造的首页价值完全相同,那么我们总是选择比较困难的那个功能,不是因为这个功能能带来更多的收入而是因为它比较难,我们在创业初期精疲力竭解决难题,但是我们很高兴,如果那些问题我们都觉得那么困难,那么竞争对手就会更认为不困难解决,VC知道这个道理,为它取了一个名字:barriers to entry 进入壁垒

其实技术壁垒只要有投入大部分的壁垒都能突破的

这个也是国外有很多专利大战的原因了

用户数量也许不是最好的测量指标,但是应该也相差不远了,买家(收购方)关心它,收入依赖他,竞争对手恐惧它,记者和潜在用户则是被它打动,无论你的技术水平有多高,用户量都比你自己的判断更能准确反映哪些问题应该优先解决。

用户量,用户量,用户量

我是买家2年时间 400+的用户啊,令人汗颜

社会财富&自由

技术肯定加剧了有技术者和无技术者的生产效率差异,这毕竟就是技术进步的目的。

技术进步是更本的,而且是必然的,如何跟随?

技术应该会引起收入的差距扩大,但似乎在缩小其它差距;1900年只要你有一辆马车,你就是富人,根本就没有人问你马车的牌子;今天,即使美国最穷的人也有自己的汽车,那么厂商只好通过广告训练我们识别品牌;技术无法使其变更便宜的唯一的东西就是品牌

品牌价值不是一段时间能决定的。

创造财富不是致富的唯一方法,在历史长河中它甚至不是最常见的方法,快速致富的方法可以是继承,婚姻,征服,没收,很自然的财富的名声不好,积累财富的名声不好,积累财富最常见的方法其实是偷窃,游牧社会是偷别人的牲口,农业社会是征税(和平时期)和直接掠夺(战争时期)。不管是战争还是政治斗争,本质上都属于偷窃;在控制程度更高的社会,统治者和官僚阶层都会使用税收代替直接充公,但本质没有变。

每个人的技能不同,导致收入不同,这才是贫富分化的主要原因。

岗位和方向问题,同样是程序员其实差距还是很大的

一个人们拥有言论自由和行动自由的社会,往往最优可能采纳最有效的方案而不是采纳最优权势人提出的方案。专制的国家会变成腐败的国家,腐败的国家会变成贫穷的国家,贫穷的国家会变成弱小的国家,经济学里面有一条拉佛曲线,认为税率上升税收收入会先增加后减少,政府的力量也是如此。

中美日比较之后尤其的感触颇多,就让时间来证明吧

两个事情发生了变化:一是法律的变化保护平民的血汗钱不被强盗掠夺;二是工业化的来临,创造财富的人能够心安理得的享用自己的财富,没有财富的激励技术革新就不会停顿。

工业化就是提高效率,那么人的劳动力成本就会富于出来的了。

法律往往是不公正的,在大多数的国家都是如此

欧洲在历史上为什么变得强大?答案可能就是欧洲人接收了一个威力巨大的新观点:允许赚到大钱的人保住自己的财富。只要懂得藏富于民,国家才会强大,让书呆子保住他们的血汗钱,你就会无敌于天下

在国内人太多有钱人太多,但是比例不对,就会发生问题的了,这个问题在哪个国家都一样,比例的问题

设计

当你被迫把东西做的简单的时候,你就被迫直接面对真正的问题。当你不能用表面的装饰交差的时候,你就不能不做好真正本质的部分。

做了自己来用,用户来用,看到的就是是我们想要的了,让大家来说吧

飞机设计师凯利约翰逊的观点:如果解决方案是丑陋的,那就肯定还有更好的解决方法,只是还没被发现而已。

我不知道丑陋是由谁来批判的

好设计是解决主要问题的设计

设计本质是为了解决问题

好设计是具有启发性的设计,你应该提供一些基本的模块,使得他们可以随心所欲的自由组合,解决各种问题。

基本模块不外乎

用户

对象

人和对象的关系

好设计是看似容易的设计科学和工程学上一些最重大的发现在形似上往往非常简单,会使你觉得自己也想到过,可是如果它真的那么简单,为什么发现的人不是你呢?

目标用户用的顺手才是最重要的

好设计是能够复制的设计:我们对待复制的态度经常是一个否定之否定的过程,刚入门的新手不知不觉的模仿他人,逐渐熟练之后才开始操创作原创性的内容,最后他会意识到,把事情做对比原创更重要;等你逐渐对一件事情产生热情的时候,就不会满足于模仿了,你的品味就进入了第二阶段,开始自觉的进行原创。

同质化的产品很多慢慢的就会发现,细节是很重要的,然而想改变一些事情还是很难的。

好设计是成批出现的,好设计是大胆的设计

创造优美事物的方式往往不是从头做起的,而是在现有成果的基础上做一些小小的调整,或者将现有的观点用比较新的方式组合起来

先设计一个最简单的产品出来,然后慢慢的上路,一步一步更新才是最重要的

编程语言

整个语言进化过程中,某一种语言的位置到底在哪里?找到进化的主干,它会启发我们去选择那些靠近主干的语言,这样对当前的编程最有利。

自己选择是对的就好了,选择是对的之后就能用的更好的了

在长期的职业生涯中,我发现冗余的代码,不仅软件如此,而且像我这样性格懒散的人,我发现在床地下和房间的角落这个命题也成立,一件垃圾会产生更多的的垃圾

个人感觉垃圾无法避免,能够写漂亮的代码并非易事

各种交接更是会产生更多的冗余的代码

编程语言进化缓慢的原因在于他们并不是真正的技术,语言只是一种书写的写法,而程序则是一种严格的符合规则的描述,以书面形势记录计算机应该如何解决你的问题,所以编程语言的进化速度更像数学符号的进化速度而不像真正的技术比如交通或通信技术那样的进化速度,数学符号的进化是缓慢的渐进式变化,而不是真正技术的那种跳跃式的发展。

用语言来做我们想做的东西就可以了语言不是很重要

虽然现在的PHP的版本更新的很快,但是很多的新功能我们需要用到么???

一旦未来硬件的性能大幅提高将会发生什么事情?新增加的运算能力会被糟蹋掉,而是以及十年前的标准来衡量,有一些使用新语言开发的热门应用程序对硬件资源的浪费非常惊人。不仅编程语言有这样的现象,这实际是一种普遍的历史趋势,随着技术的发展,每一代人都在做上一代人觉得很浪费的事情。

VPS 和独立主机的区别的了

一种让程序员做无用功的语言才真正称得上很烂,浪费程序员的时间而不是机器的时间才是真正的浪费时间

语言不在乎多,够用就好了,个人看好下面写的4种而且是一直再用的

大家都知道徒手使用机器语言写整个程序是一件很蠢的事情,但是把这个观点推广到一种更为普遍的情况,知道的人就不多了,如果你有好多种语言可以选择,在不考虑其他音速的情况下,不选择最强大的语言就是一件很蠢的事。

我的选择

PHP

C

JAVA

LUA

 

附录是书的目录,还有很多有没的英语句子值得记住的!

Why nerds are unpopular
为什么书呆子不受欢迎

Their minds are not on the game
他们的心思在别的地方

Hackers and Painters
黑客与画家

Hackers are makers,like painters or architects or writers.
黑客也是创造者,与画家,建筑师,作家一样

What you can't say
不能说的话

How to think heretical thoughts and what to do with them.
如果你的想法是社会无法容忍的,你怎么办?

Good Bad Attitude
良好的坏习惯

Like Americans,hackers win by breaking rules.
与其他的美国人一样,黑客的成功秘诀就是打破常规

The Other Road Ahead
另一条路

Web-based software offers the biggest opportunity since the arrival of the microcomputer
互联网软件是微机诞生后的最大机会。

How to Make Wealth
如何创造财富

The best way to get rich is to create wealth.And startups are the best way to do that.
支付的最好方法就是为社会创造财富。创造财富的最好方法就是创业。

Mind the Gap
关注贫富分化

Could "unequal income distribution" be less of a problem than we think?
收入分配不平等的危害,会不会没有我们想的那样严重?

A Plan for Spam
防止垃圾邮件的一种方法

Till recently most experts thoughts spam filtering would't work.This proposal changed their minds.
不久前,许多专家还认为无法有效地过滤垃圾邮件,本文改变了他们的想法

Taste for Makers
设计者的品味

How do you make great things?
如何做出优秀的东西?

Programming Languages Explained
编程语言解析

What a programming language is and why they are a hot topic now.
什么是编程语言?为什么他们现在很热门?

The Hundred-Year Language
一百年后的编程语言

How will we program in a hundred yeas?Why not start now?
一百年后,人类怎样编程?为什么不从现在开始就这样编程呢?

Beating the Averages
拒绝平庸

For web-based applications you can use whatever language you want.So can your competitors.
别忘了你的对手和你一样,能用任何想用的语言编写互联网软件

Revenge of the Nerds
书呆子的复仇

In technology,"industry best practice" is a recipe for losing
在高科技行业,只有失败者采用“业界最佳实践”

The Dream Language
梦寐以求的编程语言

A good programming language is one that lets hackers have their way with it.
一种好的编程语言,是让黑客可以随心所欲使用的语言。

Design and Research
设计与研究

Research has to be original.Design has to be good.
研究必须是“新”的,而设计必须是“好”的

上一张脑图:

 

 

最后

推荐支持正版,培养一个看书的好习惯,会一生受益!黑客,如果你想成为它,就开始行动吧!

posted @ 2012-08-09 00:07 xinqiyang 阅读(...) 评论(...) 编辑 收藏