黑客与画家 Hackers and Painters 1 & 2 Chapter

作者介绍

Paul Graham 有完整的创业哲学:

  1. 搭建原型
  2. 上线运营(不管 bug)
  3. 收集反馈
  4. 调整产品
  5. 成长壮大

他鼓励创业公司快速发布产品,因为这样可以尽早知道一个创意(产品)是否可行。其次,他认为一定要特别关注用户(而不是投资方,或是管理层)需要什么,这样才有办法将一个环项目转变成好项目。许多伟大的公司,一开始做的和后来的业务完全不同。需要倾听用户的声音,琢磨他们需要什么,然后去做。

译者序

"黑客" 的理解

"Hack" 这个词来自于麻省理工的学生团体,形容难题的解决方法。

  • 漂亮的解决方法 "cool hack", "neat hack"
  • 丑陋的解决方法 "ugly hack", "quick hack"
    "Hacker" - 解决难题的人,有着一流的能力,探索精神,并享受求解问题过程中产生的精神愉悦
"黑客" 价值观
  1. 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.
  2. All information should be free.
  3. Mistrust Authority - Promote Decentralization.
  4. Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.
  5. You can create art and beauty on a computer.
  6. Computers can change your life for the better.

前言


  • 时代的大趋势是计算机时代,表现之一:软件带来财富
  • 你选择什么语言,决定了你能说什么话。编程语言就是程序员的思维方式。
    编程语言对程序员的思想有巨大的影响。

为什么书呆子不受欢迎


"书呆子"的目标具有两重性。他们想让自己受欢迎,但是他们更愿意让自己聪明

"受欢迎"并不是课后时间随便做一做就能实现的,它需要动脑和时间。"受欢迎"就意味着融入群体。

书呆子没有认识到这一点,没有认识到"受欢迎"需要付出如此之多的努力。

书呆子不受欢迎的真正愿意,是他们脑子里想着别的事情,他们的注意力都放在读书或观察世界上面,而不是放在穿衣打扮,派对上面。(像是头顶一杯水去踢足球,努力不让水洒出来。其他人专心玩球,自然轻松将其击败,心里还奇怪为什么对方如此无能)

书呆子从小琢磨如果更聪明,心底里也是这样追求的,这是受父母的影响,书呆子被叫到追求正确答案,受欢迎的小孩被教导讨人喜欢。

仅有很少的聪明的人,能够分配出足够的心思,去关心如何让自己受欢迎。

书呆子受歧视和欺负的原因

如果让自己更受欢迎?个人魅力只是很小的一方面,应该更多地考虑如何结盟。秘诀就是不停地设法让自己与其他受欢迎的人变得关系更密切。没有什么比一个共同的敌人更能使得人们团结起来了。

因为书呆子不受欢迎,所以被当做一个可供欺负的安全目标。顶端的学生不去欺负书呆子,因为他们不需要靠这个垫高自己,大部分欺负来自次一级的学生,焦虑的中层

"老成" (tact)的词根与 "触觉"(tactile)相同,意为熟练地碰触,而不与 "缄默"(tacit)和 "不苟言笑"(taciturn)共享词根。老成的反义词是 "笨拙" (clumsy)。

对书呆子来说,意识到学校并非全部的人生很重要。

黑客与画家


黑客与画家这两种行业如此之像,他们都是创作者。

黑客与画家的共同之处,在于它们都是创作者。

黑客的最高境界是创造规格。做到这一点的最好方法就是先做出一个样品把规格实现了。

黑客真正想做的是设计优美的软件,考核这种工作是非常困难的。唯一有效的外部考核就是时间。经过岁月的洗礼,优美的东西生存发展的机会更大,丑陋的东西往往会被淘汰。

你需要知道如何计算 时间复杂度 time complexity空间复杂度 space complexity;如果要写一个解析器,可能还需要知道 状态机 state machine 的概念;除此之外,并不需要知道特别多的理论。

把整个程序想清楚的时间点,应该是编写代码的同时,而不是在编写代码之前。

  • 明白这一点对软件设计有重大影响,它意味着,编程语言首要的特性应该是允许 动态扩展 malleable。 编程语言使用来帮助思考程序的,而不是用来表达你已经想好的程序。

黑客与其他创作者 - 作者 / 画家 - 是一类人,不应该有对 "数学家的嫉妒 ",他们认为自己在从事与数学完全不相关的事情。

只有很少一部分黑客懂得如何正确设计软件。(如果某一天你想要去赚大钱,记住这一点,因为这是创业公司能够成功的原因之一。大公司为了避免设计上的灾难。选择了减少设计结果的标准差。但是当排斥差异的时候,不仅将失败的可能性排除在外,也将获得高利润的可能性排除在外。)

真正竞争软件设计的战场是新兴领域的市场,这里还没有人建立过防御工事。只要你能做出大胆的设计,由一个人或一批人同时负责设计和实现产品,你就能在这里战胜大公司。

黑客如何才能做自己喜欢的事情:找一份养家糊口的 白天工作 day job, 然后在其余时间开发优美的软件。

如何学习编程?从实践中学习,通过自己写程序。

定期地从头开始,而不要常年累月底在一个项目上不断工作,并且试图把所有的最新想法都以修订版的形式包括进去。

另一个学习途径是:通过范例。

  • 黑客可以通过观看优秀的程序学会编程,不是看他们的执行结果,而是看他们的源代码

学习绘画的创作过程,不能盼望现有一个完美的规格设计,再动手编程。应该预先承认过个设计师不完美的,在编程的时候,就可以根据需要当场修改规格,最终会有一个更好的结果。

过早优化 permature optimization 是一件危险的事情,应该对 过早设计 permature design 也抱有同样的担忧,不要太早决定一个程序应该怎么做。

坚持一丝不苟,就能取得优秀的成果。

优秀的软件也要求对美的狂热追求。

如果你查看优秀软件的内部,就会发现那些预料中那些没有人看见的部分也是优美的。我对代码的认真程度远远超过我对待其他事情。

黑客就像画家,工作起来是有心理周期的。为了做出优秀的工作,你必须把这种心理周期考虑在内。只有这样,你才能根据不同的事情找出不同的应对方法。

多人共同开发一个软件的正确模式。需要合作,但是不要 合 得过头。正确的合作方式是将项目分割成严格定义的模块,每一个模块有一个人明确负责。模块与模块之间的接口经过精心设计,如果可能的话,最好把文档说明写得像编程语言规范那样清晰。

时刻考虑到用户的人性需要。

必须能够站在用户的角度思考问题,也就是你必须学会 换位思考

你要做其他人需要的事情,而不是你自己想做的事情。从他人的角度思考问题正是成功的奥秘所在。大多数创作者都是为人类用户而创作。为了吸引用户,你必须理解用户需要什么。

普通黑客和优秀黑客的所有区别中,会不会 换位思考 可能是最重要的单个因素。

判断一个人是否具备 换位思考 的能力有一个好方法,那就是看他怎么向没有技术背景的人解释技术问题。

《计算机程序的结构与解释》 - 程序写出来是给人看的,附带能在机器上运行。

换位思考不亲是为了你的用户,也是为了你的读者。这对你是有利的,应为你也会读自己写的东西。

你可能感兴趣的:(黑客与画家 Hackers and Painters 1 & 2 Chapter)