作者:高巍 来源:互联网产品经理博客(http://hi.baidu.com/inetpm)
大概是01年,我因为侯捷先生(深入浅出MFC、C++对象模型等书的作者)的介绍,与C++语言的发明人Stroustrup通过几次email。成为Stroustrup先生的粉丝,更多是因为他的哲学理念和我非常一致。
在《The Design and Evolution of C++》(C++语言的设计与演化)中,Stroustrup写道:
我在文学方面更偏爱马丁.汉森、阿尔伯特.加缪以及乔治.奥威尔等的作品,这种文学风格方面的阅读偏好使得我更不情愿仅仅根据理论和逻辑作出决定。从此意义上说,这些散文家和作家,虽然从未见过计算机是什么,但是他们对于C++的贡献可以说和计算机科学家如David Gries,Don Kunth,Roger Needham一样大。
在《The C++ Programing Language》(C++程序设计语言)中,Stroustrup曾列出一个参考书目清单,所有的书都是计算机类,只有2本例外:乔治.奥威尔的《1984》和《动物庄园》。而关于C++命名的由来,Stroustrup也反复提到奥威尔的《1984》。
在Twitter被封的今天,我更加欣赏这位技术大师在人文和社会方面的洞察力。
C++之父Stroustrup曾有一个访谈录,颇有geek的恶搞精神,引人一笑,耐人寻味。摘录部分:
记者: 您在几年前你改变了软件设计世界的面貌,现在再回首往事您有什么感想?
Stroustrup: 事实上我在你到来之前的这些天里一直在考虑这件事,你还记得几乎所有的人都在写C程序那会儿吗?麻烦的是这些人写得太好了,而且那些个大学也都在努力的传授C编程技术。的确他们是十分的成功——我要特别的指出“成功”这个词——因为这种显著的C程序员的培养效率,这就是产生问题的原因。
记者: 这难道是个问题吗?
Stroustrup: 当然,你记得大家都在用Cobol语言写程序的时候吗?
记者: 哦,当然,当时我也一样。
Stroustrup: 在一开始的时候,这些人简直象半个上帝似的拿着高工资,享受着贵族一样的待遇。
记者: 唉,那些日子多么的让人怀念,是吧?
Stroustrup: 当然了。但是接着发生了什么?IBM觉得这样不舒服,就投资了数百万来培养程序员,直到程序员多得一毛钱就可以雇一打。
记者: 这就是为什么当时我撤出来了,工资在一年里就降到人们在说做个记者都比程序员强的地步。
Stroustrup: 对啦!那时侯相同的事情发生在了C程序员身上了。
记者: 这个我明白了,可是您要说的是……
Stroustrup: 有一天,我坐在办公室里就在想如何能把这件事挽回一些。我想知道如果有一种特别复杂而且难以学会的语言,是否就没有人可以又把程序员们搞到市场的泥潭里去呢?我用了从X10里了解到的东西,噢,就是X-Windows,真是一个该死的图形系统,只能运行在那些个SUN 3/60的机器里,哈!它具有所有我想要的特征:可笑而复杂的语法,含混的功能描述,还有伪装的OO结构,就算是在现在,还是没有人愿意用那些东西,如果你不想发疯的话,Motif才是唯一解决方案。
记者: 你是在开玩笑吗?
Stroustrup: 没有,事实上还有另外的一个问题,UNIX是用C写的,就是说任何一个C程序员都可以很容易的成为系统程序的开发者。还记得一个大型的主机系统应用的开发者通常能挣多少钱吗?
记者: 你肯定是知道我当时就是干这个的。
Stroustrup: 好吧,因此这个新的语言一定要通过隐藏所有的系统调用来和UNIX分离开来,这样可以使那些个就只是知道DOS的人也可以活得很体面。
记者: 我不大相信您说的这个……
Stroustrup: 而且到现在时间也够长的了,我相信有很多的人已经指出了C++是对时间的浪费,我要说的是,这个过程比我想象的要长的多了。
记者: 我不得不说着太可怕了!你还说这是用来提高程序员的工资,这太龌龊了!
Stroustrup: 龌龊?不是这样的,任何人都有选择的权利。我是并不想让事情发展成这个样儿的。不管怎么说,我基本上还是成功的。C++现在已经不行了不是?而且程序员现在还是能挣到高工资的
...记者: 那么你为什么认定你已经成功了呢?
Stroustrup: 还记得一般一个C程序项目要多长时间吗?一般是6个月。这对于一个要养活妻子孩子的程序员是不够的。如果是一样的项目,但是用C++来开发,会怎么样呢?我告诉你:要一两年才能做完!这不好吗?就是一个小小的编程语言选择的决定,语言程序员就不会轻易的下岗了不是?
记者: 果把这些东西发表了,我们可能在这个行业里无法立足了,你知道吗?
Stroustrup: 但是这是个世纪故事,我只是想让我的程序员伙伴们记住我为他们做了什么,你知道这些个日子里C++程序员可以挣多少钱吗?
记者: 我所听说的是一个顶尖的C++程序员一小时可以挣到70~80美圆。
Stroustrup: 知道了吧!而且我打赌他肯定可以挣那么多!!
C++之父Stroustrup揭下了技术神秘的面纱,原来那些不可一世的骄傲的程序员的老底如此啊,呵呵,当然是笑话。提起这个故事,是因为想说说技术和产品的关系。
技术质疑产品的专业性,认为产品的那些工作,人物角色、用户访谈、焦点小组、原型设计、法律事务交涉、销售推介和规划、运营培训和指导,“看上去很容易”,“显得”不如编程代码那么复杂,那么有“技术含量”。(很有意思的一点,在评价贡献的重要性上,一般更容易看到产品价值而忽视技术价值;在评价职位的专业性上,反过来更容易看到“技术含量”而忽视“产品含量”。)
而且,由于“没吃过猪肉,也见过猪跑”的心态,技术一般也是网络的重度使用者,觉得自己也用过玩过很多网站,理所当然也认为产品应该这么做那么做。
项羽见到秦始皇出巡,萌发“彼可取而代也”的想法,技术这时也有产品经理能做的工作自己也能做的想法。
而产品,如果了解一些技术,或者在网上读了几篇半懂不懂的博文或帖子,也容易对技术的专业性产生轻视。特别是,最近十年来技术本身的进步,IDE越来越傻瓜化、可视化,动态语言越来越脚本化、语法也越来越友好。稍有技术背景的产品经理,跟着网上的技术教程做一两个demo在原理上走通一遍程序也是不难的。
这时候,产品容易犯的错误就是,不是与技术沟通需要达到的目的(Purpose)和意图(Intension),而是直接提出解决方案(Solution),应该这么做那么做,技术也会有被冒犯的感觉。或者,产品认为,我自己在笔记本电脑上做个差不多能跑起来的原型只用了多久多久,为什么技术却声称需要那么长时间?
魔鬼往往隐藏在细节中,事情之所以这个样子,肯定有它的道理。
我做过开发,知道照着随便一本TCP/IP入门书上的例子做一个小的telnet的“toy program”,和开发一个在生产环境对海量用户提供telnet服务的工业级强度(Industrial Strength)的应用,这两者相差天壤的区别。所以,我常常告诉产品同学要理解技术,不要抱怨技术,当程序出现问题时面对运营人员和网友的投诉,产品还要毫不犹豫地替技术的兄弟们扛下。
技术之所以插手产品,更重要的是一个激励和体制上的原因。当然,这是老生长谈了,从我01年订阅《程序员》杂志起,感觉8年来“30岁还能不能做程序员”这个问题一直都是那么热,几乎是每年的年度调查题。
一般论坛上,“河南人、东北人”这种地域歧视贴,或者“要不要接受非处女”,几乎是月经贴。而在CSDN论坛上,“30岁还做程序员”、“那种语言好,那种Java框架好,那种JS库好”几乎也是月经贴。只要论坛人气跌了,版主就会拿出来炒一炒。
如果国内公司对技术的激励和体制不改变,那么产品和技术之间的矛盾就会天然存在。我考虑问题一直是从体制的层面出发,今天技术和产品之间的一些误会和矛盾,绝对不是个人的原因。
30岁还要不要做程序员?技术是否可以做一辈子?
这个问题如果始终还困扰程序员,困扰开发者,对自己的技术职业生涯感到困惑,那么这个矛盾现阶段只能靠产品经理的情商、沟通能力、团队兄弟们的友爱凝聚力等等方式来解决。这些当然也很重要,我也一直推崇“人情练达即产品”,但确实存在“情分”和“本分”的区别。如果制度流程上的分工、各自专业性没有一个契约精神的“本分”层面的尊重,完全靠“情分”来协调,那只能是大家都做了体制的牺牲品的悲哀。