撰文/伍杏玲
一边当着艺术家的Graham,一边又对程序员有着偏执的执着,已然成为一名合格的黑客。
那么黑客该如何开发出优秀的软件呢?为了兼顾生活与黑客理想,Graham认为应该分为几个阶段来谈。
拒绝当螺丝钉,黑客谋生亦谋爱好
首先,找一份养家糊口的“白天工作”,这些黑客在业余时间做自己喜欢的事。很多白手起家的技术创业者便是这样开始的。
Graham面试程序员时,最关心候选者在业务时间写了什么软件,他认为如果是真正的黑客,便会自主开发属于自己的项目。一个人如果对所从事的事业并不热爱,那他是不可能把事情做好的。
可你是否会察觉到,在大企业里,无论是多大的职位,始终会感觉自己只是一枚“螺丝钉”的角色?纵然很努力工作,公司本质上还是会平均化每个员工的贡献,我们不能说“我打算十倍努力地工作,老板给我的工资涨十倍吧!”
但创业可以。
在第一步的技术积累下,为了自由地做自己喜欢的事,黑客开始自主创业。
大部分人会觉得,创业是个压缩的过程,将一个人的所有工作年份被压缩成了短短几年,不再是在大公司低强度地工作四十年,而是以极限强度下工作四年。
正因创业的不确定性和艰难性,很多梦想创业的开发者会在开始行动前会担心:我不懂管理,如果已有的行业竞争将自己刚孵化的项目给淘汰掉该怎么办呢?
但Graham直言“这种压缩的回报尤其丰厚,工作效率越高,额外报酬就越高。”
他在设计第一个互联网软件Viaweb时没想太多:只花了不到一万元的启动基金来购买服务器和SSL、带宽费用,最后的开发费用比购买一把高级办公椅还要便宜。
因为Graham认为,创业只要做出用户喜欢的产品和保证开支小于收入就可以维持公司的运营。至于行业竞争,Graham说其实“微软公司更害怕你”,毕竟开发互联网产品不需要申请什么许可证,开发者有一台电脑,便可自由地在网上发布产品,如果用户喜欢使用你的产品,便是成功的第一步。
所以,如果你想自由做自己喜欢的软件时,可以尝试开始踏出创业的第一步。
“把发现Bug的任务交给用户去完成”
跟传统意义上要求的软件上线前需将Bug修改完成的理念不同的是,Graham给出一条发布规则:它运行不了,你就无法发布;一旦它能运行了,你就可以立刻发布。
Graham提倡“把发现Bug的任务交给用户去完成”,并重视用户的反馈。
在Viaweb创立时,客服人员和程序员的工位只隔9米,客服可以随时打断程序员的工作来提bug,假使遇到重大bug,就算正在开董事会,Graham也会立即停止会议去修改bug。
通过及时收集用户的反馈,和创业者自身全身心投入思考产品,来及时调整产品和发布新功能。
大公司一个新功能从计划到实现可能需要花上一年,而个人创业者要注重的是“快”:Viaweb很多重要的新功能是在Graham上班途中突然想到的,当天就做出来,然后快速发布上线。
对于代码负责人,Graham无论大小公司,应有且只有一个,因为“唯一的代码保护机制就是你的羞耻心。”
那么作为一名开发者,在日常开发中,在当前习以为常的编程语言下,你是否有想过:一百年后,我们将会使用怎样的语言?抑或说,怎样的编程语言方可流传百世?
一百年后,怎样的编程语言会继续流行?
很多人会不屑这样的假设:计算机行业发展如此迅速,你跟我说这个?
其实自1946年第一台通用计算机诞生起,计算机发展的历史已经超过70年,可编程语言的进化相对来说是缓慢的。
Graham认为,编程语言进化缓慢是因为它们不是真正的技术,而是“一种严格符合规则的描述”。不同于真正的技术(例如通讯技术)的跳跃式发展,“编程语言的进化速度更像数学符号的进化速度”。对于数学符号来说,很长时间内,均是缓慢的渐变式变化。

在Graham眼里,Java将会和Cobol语言一样,没有任何后续语言继承它的思想,进化之路已经走到了尽头。
哪一些编程语言的生命力将会持久呢?
“那些内核最小、最干净的编程语言才会存在于进化的竹竿上。”
从程序员角度来说,一百年后,我们最需要的编程语言是可以让人毫不费力地写出程序第一版的编程语言。
这种一百年后的编程语言需要符合什么样的条件呢?
开源是首要条件,二是需要传播的书籍或者电子文档来记录,还有编程语言所依附的系统。在上述的前提下,语言本身需要简洁、可编程性、一次性程序、拥有优秀的函数库、良好的效率、经得起用户的考虑,最后是再设计的能力。
那么写累了面向对象、面向过程、面向XX的程序员们,想尝试设计一款面向一百年后的编程语言吗?



你一定很用心在看!

