财新传媒 财新传媒

阅读:0
听报道

 

比别人误解你的工作更糟的是你误解自己。你试图在相关领域寻找灵感。如果你觉得自己在计算机科学系,就会有一种自然的诱惑让你相信,hacking是理论计算科学的应用版。我在计算机科学系时候,总有一个不舒服的感受,在想我应该知道更多理论。如果有在期末考试后三个礼拜里,把它们全部忘光的话,就觉得太怠慢了。

 

现在我意识到错了。黑客需要了解的计算机理论,就像画家需要了解的颜料的化学性质那么多。你应该知道如何计算时间和空间复杂度、图灵完全性。你要写一个分析器或正则表达式时,你需要得记住状态机概念。实际上画家要记住比这更多有关颜料化学性质的理论。

 

我发现,最好灵感的来源,不是那些名字中含有“计算机”领域,而是一些由创作者构成的领域。画画相对于计算理论来说,就是更丰富的灵感来源。

 

比如,我在大学里,老师告诉我,上机前,应该先在纸上完整地编好一个程序。我发现自己没有这样编过程序,我喜欢坐在电脑前编程,而不是在一张纸前面。更坏的是,不是耐心地写出一个完整的程序并且相信它是正确的,我倾向于一下子写出一大堆杂乱无章的代码,然后逐渐成形。老师教导我,调试只是最后过程,用来查出拼写错误和疏忽之处。而按照我自己做事方式,编程就是由不断调试而完成。

 

很长一段时间里,我对此感到很不快。这种感觉就像在小学里,我居然没有掌握好握住铅笔的正确姿势。如果当时我认真对比画家和建筑师,那我可能就意识到我正在做的是:素描。而我所能说的就是,大学里我受到的教育方式就是错误的。你应该像作家、画家以及建筑师那样,搞清楚你正在编写的程序。

 

对软件设计来说,认识到这点有真实的影响。这意味着,程序语言首要是有可塑性。编程语言是思考程序,而不是既存的表达程序。它应该是铅笔,而不是钢笔。如果确实如在大学里所学的那样写程序,静态类型将是不错的主意。我们需要一门语言,可以让我们涂鸦、涂抹等等。而不是坐下来,膝盖与茶几平行,与一个严格的老大妈进行一场礼貌的交谈。

 

另一个问题就是:数学崇拜。科学界每个人心底都认为数学家比他们聪明。我认为数学家也相信这点。结果,科学家把他们的论文弄地尽可能地看起来数学化。在物理学之类领域,这不算什么问题,但是在自然科学领域,它就成了一个问题。

 

整整一页公式看起来很能吓倒人的(提示:要更吓人,还可以使用希腊字母作变量名称)。这就有一种强烈诱惑,让你去解决形式上的问题,而不是实际更重要的问题。

 

如果hackers认同其他创作者,就像作家和画家,他们就不会这样做,作家和画家对数学崇拜就不在意,他们觉得自己的工作与公式完全没有联系。我觉得hackers也是这样。

 

如果大学和研究所不让hackers做他们想做的事情,hackers另一个选择就是去公司了。不幸的是,大多数公司也不会让hackers做他们想做的事情。大学和研究所迫使hackers变成科学家,而公司迫使他们变成工程师。

 

我自己最近才发现这一点。当Yahoo买了Viaweb,他们问我想做什么,我就说只想hack。我到Yahoo干活后,发现对他们来说,hacking只是执行软件,而非设计软件。程序员被当作把产品经理的愿景(visions)翻译成代码的技术人员。

 

这似乎是大公司的惯例。大公司这么做是因为这可以减少结果的标准偏差。只有一小部分程序员能实际设计软件,对管理公司的人来说,要从中把他们挑出来是太困难了。因此大多数公司已经建立起制度,软件由一个委员会设计,hackers仅仅负责实现,而不是把软件未来交给一个才华横溢的hacker。

 

如果你想赚钱了,记住这一点,这就是创业公司能赢的原因。大公司想减少设计结果标准偏差,因为他们想避免出现灾难,但这样做虽然可以确保不出次品,同时也很难出优等品。这不是大公司的问题,因为他们不是靠生产伟大的产品成功,而是靠比其它大公司更少的失误而成功。

 

因此如果你能找准一条路,进入一场与一家足够大公司(它的软件是由产品经理们设计的)进行的设计大战,他们将绝对无法跟上你。当然,这样的机会不易发现。很难把大公司约出来进行一场设计大战,就像很难把一个在城墙里的人约出来进行肉搏战。例如,写一个比Microsoft Word更好的文字处理器很简单,但微软,待在操作系统的垄断城墙里,极可能根本都不会注意到你。

 

打设计战争地方是在新市场里,那里还没人设法建造防御工事。在那里,你可以通过使用大胆的方法,并且让同一批人设计软件和实现软件,从而去击败大公司。微软当初就是这样,苹果也这样,惠普也这样。我怀疑几乎所有的成功的创业公司都这样。

 

因此,创作伟大软件的一种方法就是自己创业。但这又有两个问题。一个是在创业时,你不得不做写软件之外的很多事。在Viaweb时,我要有1/4时间写程序就觉得很幸运。其它3/4时间我要做的事情,从乏味到可怕的,什么都有。这是什么感觉?我记得,我坐在牙医的椅子上,等待钻孔,感觉就像度假。

 

另一个问题是,赚钱软件和自己有兴趣写的那种软件之间没有多少重叠。编程语言我是很有兴趣写的,实际上微软第一个产品就是,但现在没有人愿意为编程语言付钱。如果你想赚钱,你被迫去解决那些每个人都觉得太讨厌而无法免费的问题。

 

所有的创作者都面临这个问题,即价格是由供求决定,有趣的事情并没有太多需求,而解决单个客户的简单问题的需求有很多。写小说还不如给垃圾箱写广告语。设计编程语言还不如学会,如何把一些公司的老数据库连接到他们Web服务器。

 

我认为,这个问题的答案,在软件领域几乎所有创作者都知道的概念:day jobs。这个词最早用于音乐家,他们在晚上表演。更一般地说,意味着你做一份赚钱的工作,同时做一份自己热爱的工作。(未完待续)

 

话题:



0

推荐

鲍有斌

鲍有斌

433篇文章 2年前更新

科技财经专栏作者

文章