技术散文集
黑客:数字时代的手工艺人
实际上是给书呆子进行了正名。保持黑客精神,就有可能改变这个世界。那些不服从管教的人们,是这个社会力量与财富的源泉
为什么欺负书呆子?一个人在产生良知之前,折磨别人可作为一种娱乐。在任何社会等级制度中,那些对自己没有自信的人就会通过虐待他们眼中的下等人来突显自己的身份。中间层需要找一件事情一起干,他们其实并不恨书呆子,他们只是需要一个共同的目标把自己团结起来,而书呆子是一个可供欺负的安全目标。在封闭的环境中更容易出现这种现象。
成年人在真实世界中的团体,一般来说,都存在某个共同目标。那么领导者通常可以由最善于实现此目标的人承担,而学校里的学生并没有共同目标,但等级关系却不会消失,所以学生们的等级是凭空创造出来的。
要更好的创造财富,你做的事情需要两点保证:可测量性,可放大性。硅谷的诀窍,可测量性来自小团队,可放大性来自开发新技术。
有一个办法可以发现是否存在可放大性,那就是看失败的可能性。因为收入和风险是对称的。 如果你有一个令你感到安全的工作,你是不会致富的,因为没有危险,就几乎等于没有可放大性。
致富的最好办法是创造财富,创造财富最好的办法是创业。
财富不等于金钱
你开办创业公司不是单纯地为了解决问题,而是为了解决那些用户关心的问题。
无论你的技术水平有多高,用户数量都比你自己的判断更能准确反映哪些问题应该优先解决。
关于 “不能说的话” 的论述。身处当前这种复杂的社会环境中,如果你发现了这个社会的某种禁忌–你肯定会发现的,发现了不能说的话,怎么办?最恰当的办法是挑选合适的场合再说,而不是到处去说,我们要学会”只打值得打的仗”。
别去赞同这个社会任何一种歇斯底里,但是又不告诉他们你具体不赞同哪种狂热。如果不得不面对这样的挑衅,要么将争论提升到一个抽象的层次-实际上这比较难;要么,使用隐喻-这也不容易,作者还提示了一个办法,那就是幽默
狂热分子都有一个共同点——缺乏幽默感。
公民自由是国家富强的原因,而不是结果。
如果自己是潮水的一部分,你无法看清潮水的方向,唯一的办法是永远保持质疑,提升自己的思辨能力。
小时候,每个人都会鼓励你不断成长,变成一个心智成熟,不再耍小孩子脾气的人。但是,很少有人鼓励你继续成长,变成一个怀疑和抵制社会错误潮流的人。
公司内部所有不直接感受到竞争压力的部门和人,都应该外包出去。
浪费程序员的时间,而不是机器的时间,才是真正的无效率。
画作永远没有完工的一天,你只是不再画下去而已。
编程语言不是技术,相当于是数学符号,所以发展很缓慢。
”如果观察那些做出伟大作品的人,你会发现他们的共同点就是工作的非常艰苦。如果你工作的不艰苦,你可能正在浪费时间。 并非所有的痛苦都是有益的。世界上有有益的痛苦,也有无益的痛苦。你需要的是咬牙向前冲刺的痛苦,而不是脚背钉子扎破的痛苦。解决难题的痛苦对设计师有好处,但是对付挑剔的客户的痛苦或者对付质量低劣的建材的痛苦就是另一回事了。“ 我们可以为了追求美而忍受痛苦,但是不能一味的忍受无益的痛苦。后者不断的摧残我们的身心意志,还让我们误以为自己是在好好的珍惜时间。
你向下沉沦或者向上奋进都取决于你自己,不能把原因推给外界
哥白尼不认同托勒密的体系,一个极其重要的原因是,他觉得托勒密提出的偏心等距点毫无美感…… —托马斯·库恩,《哥白尼革命》
我们所有人都会受到凯利·约翰逊的影响,狂热地相信外观优美的飞机一定会飞得同样漂亮。 —本·里奇,《臭鼬计划》
美感是第一道关卡。丑陋的数学在世界上无法生存。 —G.H.哈代,《一个数学家的道歉》
众多学科对“美”的认识有着惊人的相似度。
好设计是简单的设计。(当你被迫把东西做得很简单时,你就被迫直接面对真正的问题。当你不能用表面装饰交差时,你就不得不做好真正的本质部分。)
好设计是永不过时的设计。(如果你希望自己的作品对未来的人们有吸引力,方法之一就是让你的作品对上几代人有吸引力。)
好的设计是解决主要问题的设计。(软件的难题通常可以被改成等价的较易解决的形式)
好设计是启发性的设计。(为用户提供基本模块,使得他们可以所心所欲自由组合。可参考《Unix编程艺术》)
好设计通常有点趣味性的设计。(幽默感是强壮的一种表现。)
好设计是艰苦的设计。(野生动物非常优美,原因就在于它们的生活非常艰苦,在外形上不可能有多余的部分了。)
好设计是看似容易的设计。(科学和工程学的一些最重大的发现在形式上往往很简单,会使得你觉得自己也想到过。)(重复练习的作用一般是把刻意为之的事情变成一种自觉的行为。)
好设计是对称的设计。(自然界的对称大量存在,这就说明了对称的重要性。两种对称:重复性对称和递归性对称。叶子的叶脉纹路就是重复性对称。埃菲尔铁塔就是递归性对称,即大塔上面有小塔。)
好设计是模仿大自然的设计。(大自然在长期的演化中已经解决了很多设计问题。如果你的设计与大自然很接近,那么它基本上不会很差。)
好设计是一种再设计。(很少有人一次就把事情做对,先完成一个早期原型,然后再提出修改计划,最后把早期原型扔掉。)
好设计是能够复制的设计。(不知不觉的模仿几乎必然导致坏设计。等你逐渐对一件事产生热情的时候,就不会满足于模仿了,开始自觉地进行原创。)
好设计常常是奇特的设计。(爱因斯坦并不想让相对论变得很奇特,他只想找出真理,是真理本身显得很奇特。)
好设计是成批出现的。(推动人才成批涌现的最大因素就是,让有天赋的人聚在一起,共同解决某个难题。)
好设计常常是大胆的设计。
在任何有竞争的地方,只要你能看到别人看不到或不敢看的东西,你就有很大的优势。
训练自己去想那些不能想的事情,你获得的好处会超过所得到的想法本身。
你的思想是一个地下组织,绝不要把那里发生的事情一股脑说给外人听。“格斗俱乐部”第一条就是不要提到格斗俱乐部。
能够一起谈论’异端邪说”,并且不会因此气急败坏的人,就是你最应该认识的朋友。
“换位思考”并不就意味着你要做自我牺牲。实际上,这是完全不同的两回事。了解别人对干事情的看法,并不代表你为他的利益服务,某些情况下,比如打仗的时候,了解对手正是为了打击对手。
判断一个人是否具备“换位思考”的能力有一个好方法,那就是看他怎样向没有技术背景的人解释技术问题。
一股脑不管对错,先把代码堆上去,再慢慢修改
编程就是在调试
就像在其他创作领域——打草稿
黑客如何才能做自己喜欢的事情——day job
有一份为了赚钱的工作,还有一份为了爱好的工作
我们面试程序员的时候,主要关注的事情就是业余时间他们写了什么软件
因为如果你不爱一件事情,你不可能把它做得真正优秀
要是你很热爱编程,你就不可避免地会开发你自己的项目。
画家学习绘画的方法就是动手去画,黑客学习编程的方法也理应如此。
科学家通过实验,解题来学习,黑客通过实践来学习、干活来学习。
画家临摹大师作品,黑客可以通过观看优秀的程序学会编程。
不能盼望现有一个完美的规格设计,然后在动手编程,这样想是不现实的。如果你预先承认规格设计是不完美的,在编程的时候,就可以根据需要当场修改规格,最终会有一个更好的结果。
过早优化和过早设计都是危险的。
一幅优秀的绘画作品必须比它应该给有的样子更好。
达芬奇对作品的每一部分的认真程度完全不取决于会不会有人仔细看这个部分
迈克尔乔丹每一个球都一丝不苟,绝不降低对自己的要求。
坚持一丝不苟,就能取得优秀的成果,因为那些看不见的细节累加起来,就变得可见了。
如果你查看优秀软件的内部,就会发现那些预料中没有人会看见的部分也是优美的。
黑客就像画家,工作起来是有心理周期的
为了做出优秀的工作,你必须把这种心理周期考虑在内
有些工作需要投入巨大的热情,另一些工作则是不需要很操心的日常琐事。
在你厌倦的时候,再去做那些比较容易的工作,这是个不错的主意。
对于编程,这实际上意味着你可以把bug留到以后解决,消灭bug时,编程才变得直接和机械
软件开发需要合作,但是不要合得过头,正确的合作方法是将项目分割成严格定义的模块,每一个模块由一个人明确负责,模块与模块之间的接口经过精心设计。如果可能的话,最好把文档说明写得像编程语言规范那样清晰。
换位思考非常重要
判断一个人是否具备“换位思考”的能力有一个好方法,那就是看他怎样向没有技术背景的人解释技术问题。
源代码应该可以自己解释自己。“程序写出来是给人看的,附带能在机器上运行”
程序写出来是为了让人看懂它的算法,附带告诉计算机如何执行。
一种好的编程语言应该比英语更容易解释软件。
Viaweb的开发者只有3个人。我一直在不停地招聘,压力很大,因为我们要把公司卖掉。我们很清楚地知道,买家不愿花大价钱买下一个只有3个程序员的公司。(解决方法:雇更多的人,在公司内创设其他项目,让他们去做。)
守口如瓶,笑脸相迎。
守口如瓶的真正缺点在于,你从此无法享受讨论带来的好处了。讨论一个观点会产生更多的观点,不讨论就什么观点也没有。所以,如果可能的话,你最好找一些信得过的知己,只与他们畅所欲言。
狂热分子试图引诱你说出来真心话,但是你可以不回答。如果他们不放手,一定要你回答“到底是赞成还是反对我们”,你不妨以不变应万变:“我既不反对也不赞成。” 不过更好的回答是“我还没想好”。哈佛大学校长拉里·撒墨尔斯被逼表态时么就是这样说的。后来他解释说:“别想在我身上做石蕊实验。”
1.一种方法就是逐步把辩论提升到一个抽象的层次。 2.另一种反击的方法就是使用隐喻。 3.在所有的反击方法中,最好的一种可能就是幽默。
永远质疑
不管是谁,人们都会说同样的话:“我们心态很开放,愿意接受新思想。”但是实际上,人们脑子里有一根界限,早就认准了什么是对的,什么是错的。换言之,在他们看来,所有观点都是可以讨论的,除了那些错的观点。
只有保持一定的距离才能观察到人们观念的变化,发现流行(也就是人们自以为正确的东西)到底是什么。
不过,想要摆脱你自己的时代的流行,需要一点自觉。没有了时间所产生的距离,你不得不自己创造距离。你不要让自己成为人群的一分子,而要尽可能地远离人群,观察正在发生的事情,特别注意那些被压制的思想观点。
黑客就像是画家,工作起来时有心理周期的。有时候,你有一个令人兴奋的新项目,你会愿意为它工作16个小时。等过了这阵,你又会觉得百无聊赖,对所有事情都提不起兴趣
关于找出“不能说的话”的五种方法
1.真话——不能说出口但却是正确的言论
2.关注“异端邪说”——不一定正确但是极富正义的言论
3.diff——将当代的观念与不同时期的观念diff一下
当代世界是多种文化并存的世界。东方文化和西方文化存在巨大的差异,各种文化的价值观念和禁忌之处都不一样。所以,也可以将我们的观念与其他文化的观念diff一下,找到不能说的话。做到这点最好的办法就是亲自去看一看。
4.寻找一本正经的卫道者,看看他们都在捍卫着什么
5.观察禁忌是怎么如何产生的,道德观念是如何产生的,又是如何被人其他人接受的?(如果我们能够理解他的产生机制,就可以应用于我们自己的时代)
别人会说要根据社会需要改变自己的思想.这种说法隐含的意思似乎是:如果你不认同社会,那么肯定是你自己有问题.事实上这是不对的,不仅不对,而且会让历史倒退.如果你真的相信了它,凡是不认同社会之处,你连想都不敢想,马上就放弃自己的观点,那才会真正出问题.
大多数的斗争,不管它们实际上争的是什么,都会以思想斗争的形式表现出来。
不管实际上是否有思想斗争,斗争总是会以思想斗争的形式表现出来。正如刚刚过气的时尚并非一点也不时尚,失败的一方的思想其实也并非一无是处。
为什么去找“不能说的话”
好奇心
要自己判断禁忌之物是否真的应该被禁止,还是因为权力制衡,思想束缚等政治经济原因。
脑力锻炼,锻炼思考思维能力。
做一个与众不同的异端是有回报的,不仅在科学领域,在任何有竞争的地方,只要能够看到别人看不到或者不敢看的东西,就会有很大优势和价值。
一旦发现了“不能说的话”,下一步要怎么办?我的建议就是别说,至少也要挑选适合的场合再说。
守口如瓶真正的缺点在于,从此无法享受讨论带来的好处。讨论一个观点会产生更多的观点。那些能够一起讨论“异端邪说”并且不会因此气急败坏的人,就是你最应该认识的朋友。
只有在成为某个领域的专家之后,你才会听到心里有一个一个细微的声音说:“这样解决太糟糕了!一定有更好的选择。”不要忽视这种声音,要培育它们。优秀作品的秘诀就是:非常严格的品位,再加上实现这种品位的能力。
我们把由父母供给收入的模式称为“老爹模式”。这个模式与真实世界的最大区别之一就是对勤奋工作的评价不同。在老爹模式中,勤奋中作本身就是值得的,老爹会感到很高兴。但是在现实中,财富是用工作成果来衡量的,而不是用它花费的成本来衡量的。如果我用牙刷油漆房屋,屋主也不会付给我额外工资的。
所以对那些仍然处于“老爹模式”的人来说,看到有人勤奋工作却没有得到很多报酬就会感到不公平。为了破除这种迷信,我们假设有一个工人,他单独一人在荒岛上打猎和采集水果。如果他的能力不足,就算非常勤奋地工作,最后也不会得到很多食物。这是不公平吗?又是谁对他不公平?
“不公平”这三个字就是“老爹模式”的独门标志。为什么别的情况下人们不会想到这三个字?因为要是你现在还处于“老爹模式”,认为财富就是从某个口子流出来的被大家分享的东西,而不是来源于满足他人的需求的创造活动。那么当你注意到有些人赚钱比其他人多得多时,你就会不偏不倚的得出”不公平“这个结论。
当我们讨论”收入分配不公平“时,我们还要问问收入从何而来,收入背后的财富到底是谁生产出来的,如果收入完全根据个人创造的财富数量而分配,那么结果可能是不平均的,但是很难说是不公平的。
在长期的职业生涯中,我发现冗余的代码会导致更多冗余的代码,不仅软件如此,而且像我这样性格慵懒的人,我发现在床底下和房间的角落里这个命题也成立,一件垃圾会产生更多的垃圾。



不过,有些人的这种态度不是真的,而是装出来的。某些年轻程序员注意到了知名黑客的怪癖,就会模仿,好使自己显得更聪明。这种装出来的不服从再加上故作姿态挑毛病的态度,不仅仅令人恼火,而且实际上会延缓创新的进程。
构思这种东西有一个特点,那就是它会导致更多的构思。你有没有注意过,坐下来写东西的时候,一半的构思是写作时产生的?软件也是这样。实现某个构思,会带来更多的构思。所以,将一个构思束之高阁,不仅意味着延迟它的实现,还意味着延迟所有在实现过程中激发的构思。事实上,将一个构思束之高阁,甚至会限制新构思的产生。因为你看一眼堆放在一边、还没有实现的构思,就会想”我已经为下一个版本准备了很多有待实现的新东西”,你就懒得再思考更多的新功能了。
计划这个词,只是将构思束之高阁的另种表达方式。只要想到好的构思,我们就立刻着手实现。
推动人才成批涌现的最大因素就是让有天赋的人聚在一起,共同解决某个难题。互相激励比天赋更重要。(这也是为什么同一个时期会涌现大批“天才”的原因)
E.B.怀特曾经从一个农民朋友那儿听到一则趣闻。奶牛们被电篱笆电击后,即使篱笆不再通电,也不敢逃跑了。
如果你是一个黑客,不懂企业管理,害怕竞争,就是没有通电的篱笆。
企业管理其实只要记住两点:做用户喜欢的产品,保证开支小于收入
事实上,买家假定用户知道谁有最好的技术。虽然这听上去很蠢,但是用户是你证明自己创造了财富的唯一证据。财富就是人们需要的东西,如果没人使用你的软件,可能不是因为你的推广活动很失畋,而是因为你没有做出人们需要的东西。
所以,我认为你应该和买家一样,也把用户数量当作一个测试指标。
像优化软件一样优化公司,用户数量就是判断公司表现好坏的指标。
有钱的客户倾向于更贵的选择,即使便宜的选择更符合他们的需求,他们也不会买。
如果你创业的话,千万不要为了取悦风险投资商或潜在并购方而设计你的产品。让用户感到满意才是你的设计方向。只要赢得用户,其他事情就会接踵而来。如果没有用户,谁会关心你选择的“正统”技术是多么令人放心。
所以,发明新事物的人必须有耐心,要常年累月不断地做市场推广,直到人们开始接受这种发明。我们就耗费了好几年才使得客户明白Viaweb 不需要下载安装就能使用。不过,好消息是,简单重复同一个信息就能解决这个间题。你只需要不停地重复同一句话,最终人们将会开始倾听。人们真正注意到你的时候,不是第一眼看到你站在那里,而是发现过了这么久你居然还在那里。
丑陋的做法与聪明的做法存在一个共同点,那就是不符合常规。你用胶带把包裹绑在自行车上,那是不符合常规的丑陋做法;你提出充满想象力的新概念,推翻欧几里得空间,那是不符合常规的聪明做法。从“丑陋”到“聪明”,他们之间存在一种连续性渐变。



发展用户就像一种优化过程,明智的做法就是放慢速度。一般情况下,用户比较少意味着你任何时候都可以加大修改的力度。这时,对语言规格做出改变就像撕绷带,当你感到痛苦的一瞬间,痛苦就已经成为了回忆。如果用户数量庞大,修改语言带来的痛苦就将持续很长时间。
P213C15设计与研究
设计与研究的区别:设计追求好,研究追求新。
我说的是「用户需要的设计」,而不是「用户要求的设计」
一种人眼里的优秀设计可能在另一种人眼里却是糟糕无比。这里的重点是你必须选出某些人作为你的目标用户。我觉得,除非设定目标用户,否则一种设计的好坏根本无从谈起。
如今,几乎所有的美术老师都会告诉你准确画出一个事物的方法,不是沿着轮廓慢慢一个部分、一个部分地把它画出来,因为这样的话各个部分的错误会累积起来,最终导致整幅画失真。你真正应该采用的方法是快速地用几根线画出一个大致准确的轮廓,然后再逐步地加工草稿。
如果你觉得画某样东西很乏味,那么你画出来的东西就真的很乏味。
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/reads/%E9%BB%91%E5%AE%A2%E4%B8%8E%E7%94%BB%E5%AE%B6.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)