《黑客与画家》

我想只有真正热爱的人才会把Hacker和画家联系在一起。编程是一种艺术创作,而黑客是艺术家,他和画家作画、建筑师设计房子没有本质不同。而任何一种艺术,不管是否重要,如果想要在该领域出类拔萃,就必须全身心投入


今天(2019.1.15)重新翻阅这本书,想把这本书的书评完善。随手一翻,发现译者竟然是阮一峰,好熟悉的名字啊,就去上网搜索,于是乎就发现了新大陆,发现了一群像他一样,诗人一般的程序员。每个突出的程序员都不只是一个技术宅男,而是有思考、充满情怀的天才

看书之前应该好好了解这个作者Paul Graham,了解他的投资、创业哲学0


想要把握这个时代,就要理解计算机,而理解计算机的关键就在于理解计算机背后的人。正是这群人决定了我们所能看见的软件界面的审美

hacker一词从一开始就不是如今媒体和大众眼里只会侵入计算机的人,而是从事hacking,也就是以一种高度革新、独树一帜的风格和方式来解决一个计算机难题的人。hacker不仅是一流能力的象征,还包含了解决问题过程中产生的精神愉悦或享受。黑客行为必须包含好玩高智商探索精神,黑客追求的是这三种价值,而不是金钱或者权利。黑客不服从管教,具有叛逆精神,行为怪异和愤世嫉俗,但不是反社会,搞破坏的人

初高中心思都不在读书上,因为传统的教育体制让自己反感,以至于错过了一些自己本应该学习的东西,现在在大学,自己成了父母口中的“书呆子”,我觉得这样挺好的,让我意识到学校并非全部的人生,只是一个认为设计出来的让成年人能腾出手去做其他事的地方,我的心思绝不在这区区校园之内

大公司为了避免设计上的灾难,选择了减少设计结果的标准差,但是当排斥差异的时候,不仅将失败的可能性派出排除在外,也将获得高利润的可能性排除在外。真正竞争软件设计的战场是新兴领域的市场,这里没有大公司建立防御工事,只要大胆的设计,就有可能战胜大公司。这条准则让我想起了最近头条、快手等同时发布新的聊天软件想要进攻微信,这不就是犯了这条错误,选择和已经建立了巩固的市场、技术壁垒的大公司硬碰硬,结果肯定是头破血流

黑客为了让自己能做自己喜欢的事情,可以选择一份养家糊口的“白天工作”,然后在其余时间开发优美的软件。这种工作方式也是如今很多开源界的黑客所做的

黑客和很多创作者一样,靠动手实践来学习。但是黑客不同的是,他从一开始就是原创性工作,没有他人的成果可以依靠。第二种方法就是通过范例,就像富兰克林通过模仿让他人的文章,学会了写作,黑客应该通过观看优秀的程序(看源码)学会编程

不要期望着动手前有一个完美的规格设计,而是要在编程的过程中,不断修改设计,这样最终会有一个更好的设计。优秀的黑客应该对代码的美有狂热的追求,软件要比它使用的感觉更加优秀,就像乔布斯设计电脑,不仅对外观有极致的追求,对于内部的电路板也是极其严苛

普通黑客和优秀黑客的所有区别之中,最重要的因素可能是“换位思考”,能否从用户的角度思考问题,是否知道向没有技术背景的人解释技术问题

历史的常态就是,任何一个年代的人们,都会对一些荒谬的东西深信不疑,他们的信念还很坚定,只要有人稍微表示一点怀疑,就会惹来大麻烦。包括自己现在所坚持的一些原则和信念,对于未来的人来说,可能就是荒诞不经

大庭广众之下,你有没有什么观点不愿说出口?如果没有,可能说明自己是个随大流的人,没有自己的独立思考。不能说出口的话一定是正确的或者说正确与否会引起人们的思考,而这种话或思考会激怒一部人

永远质疑。几乎所有人都会说自己“心态开放,愿意接受新思想”,但是如果你是思想保守的人,你自己不会知道,也会认为自己思想开放。流行的本质就是自己看不见自己的样子。时间和空间是产生距离去观察流行和人们观念变化的唯二法则。当你想要清晰地思考,就必须远离人群,但这样受到的阻力会越来越大,因为你成长为了一个怀疑和地址社会错误潮流的人。当自己是潮流的一部分时,怎能看清潮流的方向呢?

黑客的本性是不服从管教自负的。他们很关注公民自由,公民自由不仅仅是社会制度的装饰品,也是国家富强的原因。一个拥有言论自由和行动自由的社会,往往能采纳最优方案。政府对公民自由限制不断上升,政府的力量会先增加后减少。这提醒我们,正是那些不服从管教的人,才是力量的源泉,这种不服从管教的精神应该始终保持活跃

未来互联网软件将不断迁移到服务器上,用户界面就是网页,用户不需要知道软件版本,只需要键盘、屏幕和浏览器就够了,只有用户密集互动的软件才把数据处理的部分放在桌面上。这和当前“大前端”的趋势不谋而合。未来数据都会保存在云端服务器上,所有用户使用相同版本的云端软件,这种软件和当今的桌面软件不同在于:前者是不同种类程序的集合,后者就是一个巨大的二进制文件,前者是一座城,后者是一栋楼。对于互联网软件的开发,可以同时使用多种编程语言,没有谁可以限制自己,因为整个硬件、整个服务器都掌握在自己手里。除此之外,这种互联网软件的发布也是随心所欲,连续性渐变的,没有版本的概念。软件BUG的排查也交给用户去完成,修复快,不容易产生复合型代码。函数性编程非常适合这种小幅的修改和测试,因为他不包含状态

如何制作用户喜欢的产品

  • 从制造简洁的产品着手,保证自己愿意使用
  • 密切听取用户的反馈,但要自己判断,不要盲从
  • 比较软件的标准应该是看对手的软件将来会有什么功能,而不是现在有什么功能
  • 不要害怕大公司,不要害怕竞争,大公司能做到黑客做不到的,黑客也能做到大公司做不到的

Hacker Ethic

  • Access to computers-and anything that might teach you something about the way the world works-should be unlimited and total.Always yield to the Hands-On Imperative!
  • All information should be free.
  • Mistrust Authority-Promote Decentralization.
  • Hackers should be judged by their hacking,not bogus criteria such as degrees,age,race,or position.
  • You can create and beauty on a computer.
  • Computers can change your life for the better.