黑客与画家

  1. 黑客与画家 – 读书笔记
    1. 为什么书呆子不受欢迎
    2. 黑客与画家
    3. 良好的坏习惯
    4. 互联网软件
    5. 设计者的品味
    6. 编程语言
    7. 设计

黑客与画家 – 读书笔记

未来 20 年里,个人和小团体将崛起,成为推动社会前进的主要力量。在这个过程中,互联网和计算机必将扮演重要角色,因为他们将个体的影响力指数式的提升。

创业公司快速发布产品,这样可以知道一个创意是否可行。许多伟大的公司,一开始做的都是与后来业务完全不同的事情。

快速试错才能快速调整到用户需要的程度。

理解计算机的关键,是理解计算机背后的程序员,他们的爱好和审美决定了最终用户使用的产品。计算机世界里,黑客指的是专家级程序员。

黑客伦理:

  • 使用计算机以及所有有助于了解这个世界本质的事物都不应该受到任何限制,任何事情都应该亲手尝试
  • 所有的信息应该都是自由的
  • 不信任权威
  • 判断水平应该根据技术能力
  • 用计算机创造美和艺术
  • 让生活更美好

为什么书呆子不受欢迎

一般来说,对于那些高度困难的领域,只有身处其中的人,才能意识到成功需要不间断(未必是自觉的)付出。

书呆子不受欢迎的真正原因,在于他们脑子里想着其他的事情,注意力都放在读书或者观察世界上面,而不是让自己受欢迎上。就像是头顶着一杯水来踢球,一边踢球,一边保持让水不洒出来。

没什么比一个共同的敌人更能使得人们团结了。成年人知道孩子的行为是极端残酷的,但是,成年人不喜欢抓住这种令人不快的事实,不去埋头探寻,就不会发现具体的证据,就会以为这件事是抽象的。

黑客与画家

黑客的最高境界是创造规格,虽然看起来,最好的方式是先用一个样品来把规格实现了。

唯一有效的考核就是时间,想评价一个作家,需要 100 年,先等他的有影响的朋友都结束,再等追随者者都结束,然后才能客观评价,系统也是这样。

作者觉得应该在编写代码的过程慢慢调试,而不是像老师教导的想好了之后再动手。从其他行业来看,这就是个“打草稿”的过程。明白这一点对于软件设计有着重大意义,要求语言必须有动态扩展的能力。编程语言是帮助思考程序的,而不是表达已经想好的程序。

大学和实验室强迫黑客成为科学家,企业强迫他们成为工程师。

黑客自己不能忘记自己是要设计一款产品而不是完成某个功能。

大公司减少设计结果的标准差,,不仅将失败的可能性排除在外,也把高利润的可能排除了。这是大公司的获胜手段,只要做的不太烂,就能赢。

不爱一件事情,很难把他做的真正优秀。黑客更像创作者,而不是科学家。黑客通过观看优秀的程序学会编程。

绘画不是一个填入细节的过程,有时,原先的构想会是错误的,油画的绘制过程。黑客也应该这样工作,不要指望最开始就有一个完美的规格设计。过早优化是件危险的事情。

坚持一丝不苟,就能取得优秀的成果。多个画家共同创作一幅作品。每一个模块由一个人明确负责,模块与模块之间的接口经过精心设计。

黑客必须与画家一样,时刻考虑用户的人性需要,才能做出伟大的作品,必须学会换位思考。必须了解用户需要什么。举例子说明,几乎所有的最伟大的绘画作品都是画人的,因为人类总是对自身感兴趣。

判断一个人是够具备“换位思考”的能力,最好的方法就是看他如何向没有技术背景的人解释技术问题。

这个方法真棒!!

软件的部分功能就是解释本身,为了写出优秀软件,先假设用户一无所知。使用软件的最好能符合用户的直觉,别指望用户去读手册。源代码也应该可以自己解释自己。程序写出来是给人看的,附带能在机器上运行。对黑客也是有利的,因为我们也会读自己写的东西~

与人月神话里的提倡的自文档化异曲同工。

目前绘画比黑客酷,可是在达芬奇那个年代,绘画也是不酷的。当一种新的媒介刚出来的时候,几代人就把他的能量发挥到极致。目前编程就处在这个阶段。思路好赞!

良好的坏习惯

“黑”(hack)通常有两个意思,用作赞美和用作羞辱。日常生活中,用作羞辱通常更多,可能是因为丑陋的做法总是多余聪明的做法。特点是不符合常规。只有深入了解当前的技术,才能构想下一代技术。

互联网软件

互联网软件比桌面软件的强大之处在于:

  • 你控制的是服务器,对用户的硬件的要求小的多

  • 数据在你这里,你能复现绝大多数 bug

构思这种东西有一个特点,他会导致更多的构思。将一个构思束之高阁,意味着延迟所有在实现过程中激发的构思。

不要在半夜里发布代码,然后回家睡觉。

当你亲眼看到某人第一次使用你的软件,你就会知道软件的哪个部分最吸引他。

有部分的盗版用户甚至是好事,不管你的软件定价多少,有些用户永远不会购买,这样的用户使用盗版。对你反而有好处,你多了用户,扩大的影响力。定价要遵循“价格歧视”,针对不同的用户给出不同的报价,使得利润最大化,因为软件的边界成本接近于 0。

互联网软件的辛苦在于快速迭代的过程需要开发一直对产品的运行状态负责。程序员变成了系统管理员,但是工作职责没有明确界定,使得工作压力增加。而且竞争对手也在飞速迭代,争抢时间这件事情变成了意味你能做到,所以你必须做到。

比较竞争对手的标准应该是看对手的软件将来会有什么功能。

设计者的品味

存在着设计就意味着有更好的。妈妈说“品味是主观的”,并不是教给你什么是美学,她只是想阻止你的争吵。

好设计的特点:

  • 简单的设计:当你被迫把事情做的简单的时候,你就被迫真正面对真正的问题。

  • 永不过时的设计:如果解决方法是丑陋的,那就肯定存在更好的解决方法,只是还没有发现

  • 解决主要问题:答案可以不断改进,问题也是可以的

  • 艰苦:为什么最有名的画都是肖像画,因为人们太擅长观察脸了。

刚入门的新手总是不知不觉模仿他人,逐渐的他开始创造原创性作品。最后的大师会达到超脱自我的境界,能随心所欲的使用别人的成果,完全不担心丧失个人的特点。

一是大师的特点不担心被掩盖,二是把事情做对比原创更重要。

编程语言

编程语言之所以可能出现聚合,一个原因在于它的概率空间比较小,另一个原因在于它的突变不是随机的,语言的设计者总是有意识的借鉴其他语言的设计思想。

编程语言进化缓慢的原因是他并不是真正的技术,只是一种书写法。他就像是数学符号一样,是一种缓慢的渐进式变化,而不是真正技术的跳跃式发展。

不仅是编程语言,随着技术的发展,每一代人都在做上一代觉得很浪费的事情。

自上而下的编程方法在于把软件分成好几层,每一层都可以充当他上一层的开发语言。你的应用程序越是采用多层形式开发,他的可重用性就越好。

编程语言对于程序员来说不仅仅是技术,更是一种习惯性思维,非常难以改变。

对于发明编程语言来说,人们真正注意到你的时候,不是第一眼看到你在那里,而是发现过了这么久你还在那里。

评价一个语言的优劣不能简单的看最后的程序是否表达的很漂亮,还要看程序从有到无的那条完成路径是否很漂亮。

设计

真正优秀的设计师找到“用户需要的设计”,而不是“用户要求的设计”。一个领域的最佳作品都不可能由对用户言听计从的人做出来。

自己太缺少用户意识了。

而且设计的追求是无止境的,“画作永远没有完工的一天,你只是不再画下去了而已”。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:黑客与画家

文章字数:2.5k

本文作者:泽鹿

发布时间:2019-08-28, 16:45:23

最后更新:2019-08-28, 16:45:23

原始链接:http://panyifei.github.io/2019/08/28/读书笔记/黑客与画家/读笔/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏