给你一把手枪

2004年,我在郑州一家公司做网站开发,ASP语言。那时候微软在主推ASP.NET,我的电脑有6个超大的Visual Studio的ISO安装包,但一直没有勇气去尝试。

网站建设的真谛

那时候的工作比较单调,市场人员负责打电话,问客户是否需要建设网站。如果有意向,就过去拜访,真正能谈成的就屈指可数了。虽然希望渺茫,却是那时候好多公司的一项重要业务。公司还卖域名、空间,反正就一台服务器,翻来覆去、代理来代理去,就这么几项。签合同后,从美工到我就开工了,美工负责页面设计和切图,我负责嵌套程序、添加资料。每个网站的终点,就是客户验收通过,至于能否回款是市场同事的工作了,反正不容易。

这里面自始至终存在一个问题:

自动建站系统

我的主管说,咱们不能这样做网站,应该做个自动化的程序,来生成网站。我那会儿ASP还没搞明白呢,他就给我画图,解释系统应该怎么搞。有好多晚上,在公司坐着,十分迷茫,不知道该怎么弄。只记得说,这套系统如果做出来了,就像一把手枪,因为我们觉得其他公司用的是刀。

终于机会来了,一家智能建站公司来我们公司推销了!推销员穿着笔挺的西服,坐在我电脑前,给老板演示他们的牛X系统,我站在身后认真地看着。等演示完,他准备离开电脑的时候,我十分紧张地盯着鼠标,希望他不要点击注销……

他没有点击注销,直接关闭了浏览器。天赐良机,他一走,我就赶快打开网页,心里扑通扑通跳个不停,搞定。我边看边用笔记录,那时候手机还少有拍照功能,再说我那会儿用的是NOKIA 1100。

有了这个系统的真容,加上以前的断断续续的规划,后来就推出了一个自动建站系统。主要是面对我们的企业客户,小企业客户,无非是公司简介、产品展示、留言板、组织结构、企业形象、新闻中心等等。

后来,这套系统没赚到钱,我们就商量着把代码传到了下载站,叫开源了。反正赚不着钱,大家就都别赚钱,我们认为这套系统特别适用于接私单的、初级水平的ASP程序员。

...

iPhone免打扰的这一年

如何开启自己的实验

在2012年,我意识到我有个问题。

我的iPhone让我心神不宁。我能够感到它在我的口袋里,呼喊我,像比尔博·巴金斯【注1】的铃声。它让我不能专心陪孩子,陪妻子。它让我在任何时候、任何地点分心。我只是没有意志力去忽略邮件、Twitter、Instagram和整个万维网。我的口袋里有太多无限了。

我想控制,但是我不想连同iPhone一起放弃。我热爱拥有Google地图、Uber和Find Friends,还有一个神奇的相机。

因此我决定进行一项试验。我关闭了Safari功能,删除了邮箱账户,卸载了我不使用的每一个app,我想尝试一周。

iPhone上app的精简截图

一个月过去了,然而第二月,我爱上了我新发现的自由。我在Medium写了一篇体验的文章,叫《分心的iPhone》。

有很多人读了这篇文章,它在Medium产生了80,000次阅读,Lifehacker转载了,点击超过70,000次。Gizmodo转载后,产生了150,000次阅读。很明显,其他人对这个话题感兴趣。(这不是因为我是一个让人感兴趣的作者。为了对比起见,我写的下一篇文章,关于僵尸的,点击次数小于500.) 的确,大量读者的多数——特别是Gizmodo上的——想讨论我真是一个白痴啊,“为什么他不买一个翻盖手机呢?!”

但是很多人是拥护的,当中有很多人实际上尝试了,甚至我的一些朋友也尝试了。

我妻子把她的iPhone设置成了免打扰,这是最大的胜利。六个月后告诉我,我是傻子。没错我受到了启发!(在那种环境下你不能真正幸灾乐祸的。不是“适合iPhone的、有远见的家伙”要做的事情,是吗?)

不管怎样,仍然有很多人问我:我还在坚持吗?一些人可能没有耐心读这个冗长的介绍了。针对快速浏览的人,下面是用大号字写的答案:

...

竞争编程与实际编程的不同

你在丛林里,有一把小刀,有人要求你去杀掉一只美洲狮。任何人都会问“美洲狮在丛林里到底在做什么?!”,除了程序员。不过,这不是你被训练为程序员要去做的事情。你在这里要解决问题,而不是对问题提出质疑。

数年的训练已经教会你了很多,你用小刀削尖木棍,砍断藤条来甩动一端的尖锐石头。或许你来自于一流大学,你已经学会了从周围植物和昆虫体内榨取必要成分,以增加武器的毒性。

你坚信,你有一种杀掉狮子的、有效的、有能力的方法,你开始为了完成任务而努力。或许你的木棍太短,或者你的毒液不起作用。没关系,你能够活着改善方法,并在明天再次试验。

随后有人找到了一种方法,收集丛林里的化学东西制作了轻度爆炸物。你的精加工梭镖的方法对于完成任务,远远不是最好的方法了。然而,它仍然是简单的方法,并继续在学校里教。每个猎狮人都要被教会如何从头建造他的工具。

这是“现实中”的编程。

在竞争编程中,你从同样的资源(小刀)开始,期望你用两分钟杀死狮子。

作为初学者,你会盯着狮子,什么也没做。

很快,你就明白,如果你杀了一只松鼠,说不定裁判认为它是狮子,就这么干吧。

一名更有经验的程序员,只是坚持刺狮子,希望狮子及时死掉。很快,你知道狮子身上有一些破坏免疫的固定部位,你知道甚至刺这些部位根本不用费力。有时候,狮子没有暴露这些部位,因此你真正擅长的是杀死松鼠。

那么,为了成为伟大的、有竞争力的程序员,你需要能够做两件事。

首先,你必须学会如何找到狮子的致命弱点并一击毙命。

其次,你必须学会如何让你的小刀更方便,你要在一分钟内做一个尖木棍,用剩下的一分钟把狮子刺死。

但是,你从来没有足够时间去制作炸药来对付狮子。


Balajiganapathi Senthilnathan 的观点

...