世上没有“著名程序员”
我经常跟我的一个朋友一起吃午饭、闲聊。通常我会东一句西一句,说说音乐,说说正在开发的一些变态项目。他会告诉我一些他工作上的事或者他的旅行计划,他出售了一个公司,可以悠闲好一阵了。有一回吃完饭后,他对我说:“跟程序员聊天真是很轻松,不用谈论风险投资和协议报表之类的东西。”
风险投资和协议报表?废话,明天我要去处理一个x0xb0x,而今晚我正在修改一个新的和MulletDB集成的很酷的web服务器。 而这些人奇怪我为什么不谈谈风险投资。悲哀呀悲哀。
还是让我跟你讲讲这个很酷的新型web Server吧。 我研究出来如何将ZeroMQ事件投票系统和libtask协同例程库合并到一起,这样你可以在一个线程里使用 libtask来处理无数的TCP/UDP和ZeroMQ套接字通讯。
然后我就使用这个很酷的程序来开发了一个使用我的MongrelHTTP解析器的Web服务器,我修改了这个解析器,以让它使这个Server能在同一个端口同时处理HTTP请求和XMLSockets服务。下一步我将实现让这个Server把HTTP和XMLSocket JSON信息转发到任意一个ZeroMQ后端。这个软件让我很激动,我申请了utu.im域名来宣传它,希望能申请成功。
听起来很不错吧?完全不是这样。我可以编出像这样的程序,但没有人会因为我是个著名的程序员而注意到这些,世上根本没有著名程序员。就当我不存在。我只是个传说。
我在公司工作,像其他人一样,也知道那些获得风险投资的创业公司创始人的情况。人们清楚他们是什么党派的,如何起步的,如何获得投资的,获得了多少投资,资本总额是多少,他们是如何失败的,如何成为幸运儿的,他们卖了多少产品,他们为什么不愿卖掉公司,他们的下一个iPadapp将会是什么样的,他们是同性恋还是异性恋,他们的女友是什么样的,他们的男友是如何甩掉她们的。
可人们对开发出这个他们自己正在使用的Web框架的人却一无所知。他们从来没想过要见见这个家伙。人们从来不关心这个家伙是如何设计这个软件的。人们从来不介意当软件开发出来了,这个家伙也就可以消失了。研究这个家伙的生活是毫无意义的,因为他的全部生活都在软件里,人们愿意让他就这样静静的生活。
还有更出格的,人们甚至要求我们开发软件时不要使用BSD使用协议(或其他许可协议),他们不想在引用我们的程序时署上这个软件是我们开发的。还有些程序员根本不想在使用了我们的代码的应用程序的感谢名单里出现我们的名称。对于人们来说你就是一个小程序。你就是一个螺丝钉,一个普通的螺丝钉。一幅画可以是著名的,螺丝钉不能。没有人愿意看见你,或把你挂在墙上。人们通常是把你丢的沾满油污的工具箱里,直到有一天他们的橱柜松动时才会想起你。
让我们来做个实验。说出一个你每天都会用到的软件。也许这个软件是Rail的或Python的或其它语言开发的。现在,不要偷看,说出这个软件的开发团队的四个主要成员的名称。我做不到,对任何一个我用过的软件都做不到。那好吧,就当你能做到。你知道很多关于这个软件的开发者的资料,那你可否可以诚实的告诉我,你真的像了解这个软件一样了解给你开发这个软件的人吗。扪心自问,当你使用这些软件时你对制作这些软件的幕后人物又知道多少?
所谓著名的程序员事实上并不是因为他的编程技术,而是因为他创建了什么公司或非营利组织。他们的代码可不是像他们本人那样杰出,他们的杰出都是由非程序方面的荣誉构成的,这样才能让人们很容易的理解。
这就是我为什么坚信世上没有“著名程序员”的理由,而且出名对程序员的编程生涯没有任何好处。我以前就这么说过,现在我担任的是系统负责人的工作,我还是这么说。这样说,多少都有点让人丧气。 这个事情让我警醒,我所受雇的公司都需要我什么东西?他们唯一需要的就是我作为系统负责人的专长。
是的,我只是一个系统负责人。仍然是。
我跟其他人一样,仍要经过面试。无论我编写了多少代码,我仍然需要去解决那些愚蠢的低级错误。 不论你写了多少的Web Servers或Email框架或数据库服务器或聊天通信服务器或汇编器,我仍然需要向人们证明我能够编程。 不论我写的应用被人部署了多少份,我仍然需要向人们证明我还可以写出可信赖的软件。
成名对我这种职业没有任何的好处。实际上是让我更辛苦了,因为一些有古怪想法的人认为我出名了就不能再编程了。
如果时光能够重来,我真不愿意因为编程而成为名人。但是,我实际上再也抹不掉任何我获得的名声,所以我明白现在应该尽量的把这些名声当成儿戏为好。我应该多教育一些人去热爱编程,就像我当年那样。这样不错。去鼓励更多的怪才去成为书呆子。
也许只是我这种怪人的一种怪想法。十年或二十年之后,我想,程序员将会成为另外一种车间工人。程序员将不再关心其他程序员的作品,人们将会热衷于这种自闭,完全失去了创新和共享的动机。
所以现在你要满足于现在的社会地位,因为以后,程序员将永远的成为二等公民。