天创培训:您身边的信息安全培训专家!
行业动态
硅谷创业之父:不想当艺术家的程序员不是好黑客

  有这样一位程序员:青少年开始学习编程,研究生是哈佛大学计算系的,主攻人工智能,博士顺理成章地在哈佛读完。毕业后在一家创业公司当程序员,三年后,和一位小伙伴编写出第一个互联网程序来技术创业。

  又三年后,这家小公司被大公司收购,虽然财富自由,但身为一个有(ren)想(xing)法的程序员,他不愿意受雇于大公司,又折腾去教年轻人创业了,就这样,不小心成为硅谷的创业之父。

  有这样一位艺术家:中学喜欢写小说,本科学哲学,博士期间旁听艺术,并在毕业后,自己报名设计学院的暑期班,还跑去欧洲学画,渴望成为一名画家。然后和很多不出名的艺术家一样,居住在小公寓里,继续追逐艺术的脚步。

  这两段看起来截然相反的人生轨迹,均是保罗·格雷厄姆(Paul Graham)真实的程序人生。

  从落魄艺术家逆袭为硅谷的创业之父,Graham是如何抓住命运的拐点?

  01  

  不会编程的作家不是好的投资人

  1995年,作为一名小程序员的Graham看到网景公司上市后,他看到互联网浪潮,相信不久将来网上购物会成为潮流,于是与黑客罗伯特·莫里斯(Robert Morris)开发出一款帮助个人用户在网上开店铺的软件Viaweb。

  这也是世界上第一个通过互联网使用的程序,在此之前,人们使用软件的方式是先下载安装,本地操作完成后再上传服务。

  程序员出身的Graham颇具商业头脑:Viaweb创办的目的便是希望被收购。创办三年后,这个目标完成了:1998年,雅虎以4900万美元收购了Viaweb。

  他俩庆祝这起收购的方式颇为艺术:莫里斯曾说过,如果Viaweb能卖100万美元,他就去打耳洞,于是Viaweb被收购的那天,Graham拉着莫里斯去打耳洞!

  被雅虎收购后,Graham成为一名雅虎程序员。但一向“战斗”惯了的Graham不习惯大公司的安逸,一年半后,他从雅虎辞职,开始在个人网站上撰写技术和创业的文章,广受好评。

  2005年3月,他给哈佛大学的学生做创业演讲时,看到很多有想法和能力的学生,他回想如果没有天使投资人,就没有Viaweb。于是他找到老战友莫里斯,重新创业风险投资公司Y Combinator,成为创业公司的孵化器。

  对,YC就是陆奇从百度出来后选择加入的公司,目前陆奇是YC的全球研究院院长。

  截止2018年,YC已经协助过1900多家初创公司,这些公司的总估值超1000亿美元,其中有15家估值超过10亿美元的独角兽公司。

  而曾经“左手程式,右手诗”的Graham成为一代硅谷的创业之父,成就自己的不凡人生。

  那么作为一名普通开发者,如何成长为优秀的程序员呢?Graham以自身为例,深入地从以下几个方面谈了谈自己的看法:

  02  

  优秀的程序员是黑客

  很多人看到“黑客”二字,会想到很多电影里塑造的黑客印象:高智商的黑客在网络世界里来去自如,随意入侵政府保密的系统,破坏中枢系统,散播病毒,破坏网络世界的和平。

  Graham对大众的这种认识纠正道,“黑客是指优秀的程序员。”他认为在所有行业中,黑客与画家最相像,拥有以下特征:

  黑客应具有创造力

  在实际工作里,很多程序员只会CRUD,这是“工程师”,而黑客则是“建筑师”,两者的区别是建筑师决定做什么,工程师想出怎么做。

  “如果黑客只是一个负责实现领导意志的技术工人,职责就是根据规格说明书写出代码,那么他其实与一个挖水沟的工人一样,从这头挖到那头。如果黑客是一个创作者,他从事的就不是机械性的工作,他必须具备灵感。”

  Graham在编写Viaweb时思考:为什么不能让用户直接通过浏览器操作服务器呢?就不用再麻烦地操作安装上传了!

  这才有了第一个互联网程序。

  在细节上,黑客对代码的优美有极致的追求

  在一幅画里,主角是人物,对于衬托物绿叶,很多画家觉得没人会仔细看,就偷懒随意画两笔。可画家达·芬奇绝不是这样的,他对作品每一部分的认真程度完全不取决于会不会有人仔细看这部分,例如对绿叶的处理也是一丝不苟的,从画上能清晰看到每片叶子。

  同样的,优秀的程序员写代码时应对美有一定的追求,他人在查看你写的代码时,应该有美的享受而不是直皱眉头。Graham在编程时,假如看到代码前面的缩进乱七八糟,或者看到丑的变量名,都会把他逼疯。

  网上有个段子:优秀的程序员都是处女座的。

  所以优秀的程序员不单有创造力,还应追求代码之美。这两点在现实中却很难做到,因为多数企业并不允许,他们认为“黑客”的工作就是用软件实现功能而已,而不是设计软件。“程序员被当做技工,职责是将产品经理的‘构想’翻译成代码。”

  那么黑客该如何开发出优秀的软件呢?为了兼顾生活与黑客理想,Graham认为应该分为几个阶段来谈:

  03  

  拒绝当螺丝钉,黑客谋生亦谋爱好

  首先,找一份养家糊口的“白天工作”,这些黑客在业余时间做自己喜欢的事。很多白手起家的技术创业者便是这样开始的。

  Graham面试程序员时,主要的关注就是问候选者在业务时间写了什么软件,他认为如果一个人不热爱一件事,是不可能把它做得真正优秀的,如果是真正的黑客,便会自主开发属于自己的项目。

  可无论是多大的职位,你是否察觉到,自己在大企业公司时,始终只是一枚“螺丝钉”的角色?纵然自己很努力工作,公司本质上还是会将每个员工的贡献做平均,我们不能说“我打算十倍努力地工作,老板给我的工资涨十倍吧!”

  但创业可以。

  在第一步的技术积累下,为了自由地做自己喜欢的事,黑客开始自主创业。可创业的真相很残忍,需要有良好的心理准备:这是个压缩的过程,将一个人的所有工作年份被压缩成了短短几年,不再是在大公司低强度地工作四十年,而是以极限强度工作四年。

  在高技术领域中,Graham直言“这种压缩的回报尤其丰厚,工作效率越高,额外报酬就越高。”

  很多梦想创业的开发者却会在开始行动前会担心:我不懂管理,害怕已有的行业竞争将自己刚孵化的项目给淘汰掉,这怎么能说创业就创业呢?

  Graham创业第一个互联网软件Viaweb时没想太多:当时他们只花了不到一万元的启动基金来购买服务器和SSL、带宽费用,开发一个互联网软件的费用比购买一把高级办公椅还要便宜。

  因为Graham认为,实际上他也是这么做得:创业只要做出用户喜欢的产品和保证开支小于收入就可以维持公司的运营。至于行业竞争,Graham说其实“微软公司更害怕你”,毕竟开发互联网产品不需要申请什么许可证,开发者有一台电脑,便可自由地在网上发布产品,如果用户喜欢使用你的产品,便是成功的第一步。

  所以,如果你想自由做自己喜欢的软件时,可以尝试开始踏出创业的第一步。

  04  

  “把发现Bug的任务交给用户去完成”

  无论是创业还是业余鼓捣,如何做出一款优秀的软件是黑客的首要难题。Graham给出一条公式:搭建软件的原型、上线运营、收集反馈、调整产品、成长。

  跟教科书上要求的软件上线前需将Bug修改完成的理念不同的是,在瞬息万变的互联网时代,Graham给出一条发布规则:它运行不了,你就无法发布;一旦它能运行了,你就可以立刻发布。 

  Graham提倡“把发现Bug的任务交给用户去完成”,并重视用户的反馈。与大公司缓慢提Bug和修改的流程不同的是:在Viaweb创立时,客服人员和程序员的工位只隔9米,客服可以随时打断程序员的工作来提Bug,如果遇到重大的Bug,就算Graham在开董事会,也会马上暂停会议去修改Bug。 

  通过及时收集用户的反馈,和创业者自身全身心投入思考产品,来及时调整产品和发布新功能。

  大公司一个新功能从计划到实现可能需要花上一年,而个人创业者要“快”:Viaweb很多重要的新功能是在Graham上班途中突然想到的,当天就做出来,然后快速发布上线。

  对于代码负责人,Graham无论大小公司,应有且只有一个,因为“唯一的代码保护机制就是你的羞耻心。”

  那么作为一名开发者,在日常开发中,在当前习以为常的编程语言下,你是否有想过:一百年后,我们将会使用怎样的语言?抑或说,怎样的编程语言方可流传百世?

  05  

  一百年后,怎样的编程语言会继续流行?

  很多人会不屑这样的假设:计算机行业发展如此迅速,你跟我说这个?

  其实自1946年第一台通用计算机诞生起,计算机发展的历史已经超过70年,可编程语言的进化相对来说是缓慢的。

  Graham认为,编程语言进化缓慢是因为它们不是真正的技术,而是“一种严格符合规则的描述”。不同于真正的技术(例如通讯技术)的跳跃式发展,“编程语言的进化速度更像数学符号的进化速度”。对于数学符号来说,很长时间内,均是缓慢的渐变式变化。

  在Graham眼里,Java将会和Cobol语言一样,没有任何后续语言继承它的思想,进化之路已经走到了尽头。

  哪一些编程语言的生命力将会持久呢?

  “那些内核最小、最干净的编程语言才会存在于进化的竹竿上。”

  从程序员角度来说,一百年后,我们最需要的编程语言是可以让人毫不费力地写出程序第一版的编程语言。

  这种一百年后的编程语言需要符合什么样的条件呢?

  Graham说,开源是首要条件,二是需要传播的书籍或者电子文档来记录,还有编程语言所依附的系统。在上述的前提下,语言本身需要简洁、可编程性、一次性程序、拥有优秀的函数库、良好的效率、经得起用户的考虑,最后是再设计的能力。

  那么写累了面向对象、面向过程、面向XX的程序员们,想尝试设计一款面向一百年后的编程语言吗?