谁是大师?

前一篇糟改Android的文章,最后有一位兄弟提到Rob Pike、Robert Love都在Google,从而觉得Android有这样那样的问题,似乎有点“汗”。对这些技术作家,我过去也是高山仰止,现在也保留着敬意,不过让我们仔细想想他们真的做过什么大工程或者NB算法么?

至少从我个人来看,神人、超级牛人,这些名词和大多数我们熟知的名字基本不挨边。即便是最杰出的技术作家(并且亲自参与过优秀项目的)和微软的卡特勒、Anders、id software的Carmack之流在完成大工程上差距也非常大;在算法上他们可能同样赶不上极其聪明的研究生。关键是他们没有体现出快速的找到解决方案(算法上)或者是做出正确决断(工程上)的能力。

其实写这个文章我一脑门子汗,去否定大家当大师、当牛人的家伙总免不了哗众取宠的意味,幸亏这种事我以前干惯了。以前我就说过,看一个人是不是真牛要看他做过什么、做得怎么样;大跌眼镜这种事太平常了:谁是牛人容易先入为主,但产品、设计和代码不说假话。(亲自参与知名项目的技术作家基本上在代码和小设计上是过硬的,也往往可以称之为该方面的权威)

参与某几项工程的一部分、写了几本相当棒的书,这确实也需要很强的能力、责任心,也是很大的贡献。不过这样的人和那些超人相比还不是一码事,光从切身感受和视野上就差远了。感受这一点好理解,不在其位、工作性质也不一样,必然很多东西就体会不确切;视野这点,我个人觉得大多数写过书的最好的也不过是见得多、参与得多;问题是这些只是经验、只不过属于过去。

那些基本没写过书的,比如上面提到的那几位,除了没时间之外可能更多的是写不出来。为什么?因为他们的脑子里有更远更广更大的东西,他们自己也还没能看到边的,即便他们退休了,会有兴趣去写那些烂熟的东西么?这也是有些人为什么总能把产品提升到一个新的阶段(而不仅仅是不断累积应该有的进步)的原因。非常可惜的是,咱们和这些人基本没有交流的机会,我们既不知道他们的终点在哪儿、也不知道他们如何做出具体的决定 :(

不过众多当过作者的人中间Knuth是例外,是当之无愧的大师:LR算法和TeX等说明了他各方面的能力;其次他搞的本来就是教育和计算科学,这些方面做到他这个地步,也不是优秀开发人员和杰出技术作者能比拟的了。

我还要强调的是,一些熟悉的名字虽然难说是大师,但依然是“好程序员/开发人员”的标杆。因为我们大多数人不是天才,也没机会从头创造一个Awesome的产品;但是如果每个人都能做到他们这样,世界会好很多:至少他们做过、了解过的东西他们都能处理的很好。

另一方面,从相对空白的地方开始做些真正的选择,永远要比当一个优秀开发人员难得多;所以考虑不周总是难免的。一个人突然去承担比想象中更重的担子,这时候声誉可帮不上什么忙(除了在心理上的倒忙)。同时杰出的技术作家们(除了搞方法论布道的),如果也亲历某些够劲儿的项目、有丰富的经验,一般都会有非常好的基础素质,如果能向上突破也许能成为真正的大师。

谁是大师?这个问题重要吗?我过去说过,对于学习者来说,榜样是非常重要的一环,他决定了我们的方向和我们最终能达到的高度(事实上很多时候我们心里的偶像也就是我们的天花板了)。你可以认为我这篇文章是八卦,不过就我自己而言,在这个问题上相当的小心翼翼。

熟知某个项目的每个细节(甚至来龙去脉和决策理由)、精通如何写好程序,这对任何一个人都很重要;甚至真正的大师都要反过来学习这些内容(如果他在某方面是后来者的话)。但大师和杰出工匠的分界线却十分明显,就在于他是否能有一定的远见(如果不能具有天才的话,这是另外一种,尤其是算法类的)和(与一般人相比)处理更多相干问题的能力。

我们也许不可能成为大师,但我们可以学着像大师那样思考,这是我以前想表达但一直没表达清楚的话。这听起来有点难,而且实在的说,我也不知道如何做到;但我始终相信,从真正合适的良师身上,我们能学到更多。至于其他权威,就把他们当作提供切实有效信息的益友吧,那是一个对他们和我们都更有利的位置。

posted on 2010-12-08 07:34  怪怪  阅读(2410)  评论(23编辑  收藏  举报

导航