一个MS码工的鸡零狗碎(十一)

Posted: October 25, 2010 by lefteyefocus in 听聊斋

10/24/2010 星期日

雨大概是从半夜就开始下了,典型的西雅图雨天。

雨天抑制了人出门的欲望,于是我们六个难得地同时留在apartment里。

10点左右,也就是我们通常早餐的时间,我们聚到了一块儿。艾理和鲍波把壁炉的火点了起来,苏珊和Yuki在厨房准备早餐,我和汤米在看Dicovery的一个关于三文鱼的生命过程的纪录片,三文鱼从出生到洄游后生产下一代真是一个漫长和艰苦的过程,我和汤米同时为厨房里飘来的煎三文鱼的味道而内疚。

吃完了早餐,我们围坐在壁炉附近聊天。“我们在等下一个project,所以现在闲着,你们三个今天怎么也那么有空?” 我代表汤米和Yuki问苏珊,鲍波,和艾理。

鲍波和艾理还没张嘴,苏珊先说话了:“那我就向大家宣布一下吧,我明天就要给我manager发two week notice了。”

“你换组了?” Yuki问。

“不是换组。” 苏珊回答。

“那就是跳槽了?Google还是Amazon?” 汤米抢问到。

“也不是跳槽,下一步我还没有具体计划,我就是想先歇一阵子,这样我可以想一些事情。” 苏珊回答。

苏珊在MS做了也快六年了,我觉得在我们码工的身体里的那个生物钟和日出日落无关,而是跟Product lifecycle有关,在几个product cycle以后,生物钟就会发出讯号,该做点别的事了,就像三文鱼到时候就得洄游产仔一样。

“嗯,我也觉得今天在MS所做的工作,和其它行业的没什么不同,日复一日地做着基本相同的东西,枯燥而乏味。我们做这份工作而不是另一份工作的原因和目的到底是什么?我为什么要对这个工作如此投入?我为什么不是投入到到另一个工作中去?我生活的意义到底是什么?” 汤米说出这番话让我吃了一惊,我以为他是那种只会把多余的精力投入到在Pro Club里锻炼肌肉,而不会去想什么生命意义的那种人。

“汤米,工作从来就不代表生活的全部,它,可能不过是挣取生活必需品的一种手段?” 我不太肯定地回答汤米的问题。

“话虽然是这么说,但是工作本身的意义就是生活的意义的一大部分。当我进入这行时,我觉得我是要去做一件改变世界的事,今天我意识到,这行根本不在乎改不改变世界,或者怎么改变世界,它只在乎能不能挣钱,如果今天写软件不能挣钱的话,会有人继续做吗?” 苏珊把话接了过去。

“你们这一代的程序员和我们那一代的程序员的最大差别就在:我们是喜欢编程,It’s fun and it’s cool!它对于我们来讲就是娱乐,就是生活。为了享受这种娱乐和生活我们愿意往它上面投入精力,时间,还有钱,不过我们意外的发现,我们的这项娱乐有时候还为我们带来了钱;而你们这一代的程序员,其实我都不觉得该叫程序员,你们是在找一份能挣钱的工作,只是在能挣钱的工作中,你们恰好挑到了编程。” 艾理入行已经近二十年了,对他的“我们这一代”和“你们这一代”的划分方法我们早就习惯了。我想他说的话有一定道理,他起码有好几百万的身家,还不包括股票,但是他仍然单身,和我们合租,每天孜孜不倦地写代码。

不过艾理嘴里的“我们这一代”和“你们这一代”不完全是用年龄划分的,像我叔叔这样的码工,应该是属于我们这一代的,而麦可那样的,应该是艾理他们那一代的。

在麦可眼里,user experience就是bullshit,因为他写代码是为自己在写,他是通过代码来解释他的世界和构造他的世界。麦可认为所有伟大的软件都是程序员为自己写的,然后被别人发现它有利可图,才被利于去从市场上挣钱。如果写软件是为了别人写,尤其是为了大众写,程序员就失去了他的独立人格和独立思维,只能生产垃圾。即使那些完美地满足了大众需求的软件也是垃圾,因为大部分大众所需要的东西都是使得这个世界更快地变成一个垃圾场。

我曾对麦可说:“很多人会觉得你太arrogant的。” 麦可回答:“那又怎么样?现在的问题不是arrogant的程序员太多,而是大部分程序员got nothing to be arrogant。” 我的脸当时就红了,我就是那种got nothing to be arrogant的码工。

我在想,如果今天麦可在,不知道他会给出一番怎样的见解。

“我每天写12个小时以上的代码,还不算程序员吗?” 鲍波问。

“如果你的职业就是写代码,那么你算不算个程序员不是由你每天写多长时间,或者写了多少行代码所决定的。判断一个人是什么或者不是什么,不是看他的职业,而是看他的业余爱好。如果你平均每个星期写三篇以上的有关编程的技术博客,那勉强算是个程序员吧。” 艾理回答。艾理自己几乎每天都会更新他的MSDN Blog。

这个时候,Yuki说话了:“我们人类所生存的世界存在着严重的问题,我们需要重新构建一个线性的世界,computing和coding是现在可知的构建这个线性世界的最有力的手段。可悲的地方就在于代码的巨大力量被资本早早地盯上了,从而沦为资本的工具,人们早就忘记了代码的本来使命。”

“中产阶级的存在并不是一个偶然事件,他们是被选择来重构线性世界的人群,科学家和程序员应该从中产阶级里产生。在衣食无忧的前提下,他们才能专注于他们的使命。富人们不适合承担这项使命,因为与其说他们控制资本,不如说他们被资本所控。穷人也不适合做科学家和程序员,因为他们只会专注于怎么变得更富有,富人和穷人评价一个研究或者写一段代码的好坏都只在它于能不能转化成金钱。”

“汤米,左拉,我,还有苏珊,鲍波,艾理,我们六个是被选中的,我们衣食无忧,我们的父母健康,我们对这个世界没有什么过多索取,也不受这个世界的过多引诱。是做毫无创意的工作去挣取金钱,然后去工作之外去寻找生活的意义,还是做有意义的工作并让工作使得生活有意义起来,我们自己可以选择,不是吗?”

Yuki终于停了下来,胸口有些起伏。大家听完Yuki的话都沉默了,只听见雨继续在屋顶敲打着。

晚上的时候,Yuki去苏珊那儿了,汤米靠在我的门边跟我说:“左拉,我要是有个Yuki这样的女朋友,我就不会再和外面那些女孩们瞎晃荡了。”

听了这句话,我心里涌上来一种难以言喻的感觉,不知道是不是嫉妒,反正对我来讲它是一种全新的感觉,没有人能具体告诉我这种感觉应该被叫做什么。

大概看出我脸上的表情有些古怪,汤米赶紧说:“你别误会,我可不是想和你抢女朋友。不过说真的,她在组里那么些日子,我怎么就没发现她这么有意思?你是怎么发现的?”

“嗯,她确实与众不同。。。” 我把内心里的那种奇怪感觉尽量掩饰住。“她很聪明,而且不仅仅是在写代码上。她思考的时候,表达的时候,像是一个布道者,而且不是那种照本宣科的布道者。怎么说呢,她让她身边的人感觉到:She believes in something。” 我回答汤米的话。

是的,Yuki believes in something,这是很多人,包括我,所缺乏的。。。

Advertisements
Comments
  1. CTcoolL says:

    特别喜欢这篇 我也问问自己 到底如果不赚钱了 会不会还编程

  2. jiankentwo says:

    同意艾理。 coding for food 之后还 coding for fun 的程序员,是真正的程序员。

    有时在想,要是中奖发财了,就可以天天 coding for fun 了。

    虽然很看重 UX,但完全了解麦可的观点 — pro 和真正艺术家的区别不是水平,而是一个娱人,一个娱己。

    所以我尽量避免把自己其他爱好比如摄影和钱联系起来,甚至尽量避免投稿参赛,
    否则就很难避免投人所好,失去了让自己高兴的初衷。

    写博客也是这样 — 有人写给别人看,有人写给自己看。
    当然写给别人看的自己可能也很高兴,写给自己看的别人也很爱读。

    说起 coding for fun 和写 blog —

    有没有想过给 coder 写一个 blog reader?

    ====================================

    看 blog, right click Yuki, context menu 显示:
    Show details of Yuki (e.g. Name/Sex/Education/Hobby/Relation to 左拉,和在哪几篇 blog 里)
    What did Yuki say?
    What did Yuki do?

    比较牛一点的菜单:
    What’s gonna happen between Yuki and 左拉? (pro edition)

    ====================================

    有没有想过给 coder 写一个 blog writer?

    right click 一新的段落:
    Create a new thread
    Insert a joke

    type “Yuki 说:”, intellisense context menu:
    Insert something makes Yuki sound cool
    Insert something makes Yuki sound sensitive
    Insert something shows off Yuki’s knowledge of
    coding
    hacker culture
    Japanese culture

    • lefteyefocus says:

      很有意思的想法。我觉得这就是高爷爷(Donald E. Knuth)主张的Literate programming的一种细化和应用。

      高爷爷的Literate programming简单地讲就是把程序写的像文章一样,程序自己本身就是自解释的,根本就不需要额外的文档和注释。那么反过来,文章其实也可以写的像程序一样,应该很容易做搜索,统计,以及返回各种query的结果,并且通过逻辑可以自生成代码。

      说到高爷爷,想起我还有三篇《程序英雄传》的八卦还没有搬过来,一会儿搬一下。。。

      • jiankentwo says:

        哦,那个是你写的呀。以前看到过一些网站转贴好像。;-)

      • lefteyefocus says:

        嗯,本来计划写十个我心目中偶像programmer的,写到Dave Cutler的时候工作一忙,就丢下了。等兴趣来的时候再捡起来继续完成吧。。。

      • jiankentwo says:

        呵呵,你把我的想法拔得太高了 — 我也就寄希望于利用 tool 来对文章进行总体设计和重构… 高爷爷的想法那就… 云泥之别,云泥之别…

        不过想象一下在一 visual designer 里面哗地定义一 Yuki 实体类,哗哗哗添上性格,哗哗哗自动生成博客第 27 篇 Yuki 说的话的 stub…
        想怎么重构就怎么重构…
        开放型结尾动用 web 2.0…

      • lefteyefocus says:

        如果这个blog reader只是做简单或者稍微复杂点的key words搜索,这早就可以做到了,只是比现有的blog里自带的搜索稍微强大了一点。

        强大的是那种能够把你的英语或者汉语问句转化为程序可读的query,程序要能够分析返回的结果,而不仅仅是返回含若干关键字的段落。比如说你问“麦可是怎样的人?” 返回的结果不应该是所有含麦可的句子和段落,而是能确切反映麦可性格和特征的字句。

        至于blog writer,如果只是设定集中个性,每种个性又有几种描写,然后数据库里对应存储,然后randomly地被调用,这也早就可以做到了。但是真正写文章时,虽然心里有了个大致的框架,下一句往往时在这一句刚写完时,才知道会怎么写的。对应程序来讲,就要求动态生成,而不是调用预先存储的有限且随机的内容。

        这些就要求程序能对人类语言的正确理解,再更直接点,就是让机器能够按人类语言指令工作。人类语言这个时候就成为了程序语言。

        高爷爷主张Literate programming,就是因为他认为在人类的语言(文章)人可以读懂,那么其中含有的逻辑和信息计算机也就应该能懂的,程序既是个机器读的,也是给人读的。人写文章既可以给人读,也可以给机器读。。。

      • jiankentwo says:

        我希望有生之年能见证有一天,我随便 right click 一个 blogger 或虚拟小说人物,
        网络就能通过他/她写的所有 blog 或在小说里的一言一行把他/她的性格爱好分析出来。
        但我觉得这种人工智能的实现难度之大会排在机器翻译之后。

        blog writer 实现有高下之分 — 能替人写作不难,能模仿文风就不容易了。

        说笑而已,真会有人这么写作么。

      • jiankentwo says:

        一旦有了人为主观因素掺乎进来,计算机实现的难度就急剧加大。

        今天看到一个很有意思的应用: Google Suggest Venn Diagrams
        比如通过这个你可以了解人们怎么想 Microsoft, Google, Apple… 😉
        http://www.technomancy.org/google-suggest-venn/#start=Why+is+X+so&end0=Microsoft&end1=Apple&end2=Google

      • lefteyefocus says:

        可能人就是被局限在对主观和客观的划分上,所以AI搞了那么多年也没啥突破进展。

        其实,所有主观都是对客观的一种反映,但是什么样的客观造成什么样的主观反映,中间就像被一个神秘的hash function给转换了一下,人们要做的就是弄清这个hash function。

        从另一方面讲,所有客观都是靠主观来感知的,如果客观事物不能直接或者间接地让主管感知到,其实就等于不存在。所以客观只是个input,而主观则是algorithm,有什么output与其说是由input决定,更不如说是由algorithm决定。解决AI的关键可能就是要找出那最原始的algorithm,这个algorithm能够自我学习,并产生新的algorithms。。。

      • jiankentwo says:

        这个… 有点儿 matrix 了… 😉

  3. J. Ma says:

    为糊口而工作和为快乐而工作是个普适性的主题,不光使用于coder,也许使用于所有职业。那些职业本身就是自己爱好的人是值得羡慕的。对很多人来说,现实的压力下往往缺乏勇气去追求自己心中的最爱,或者发现缺乏一种途径将爱好兑换为现金只好舍弃理想(象北京人在纽约的王启明)。但我觉得更多的普通人面临的问题不是面对这种dilema无法选择或做错选择,而是发现可能并没有那么一件事是如此之喜欢要当作事业或者爱好来做的。Busy living, busy dying, 普通人,包括中产阶级往往也就是混口饭吃。

    • lefteyefocus says:

      这不仅仅是个是否工作就是你的爱好的问题,更在于你工作的目标是满足自己,还是满足别人。

      比如说,老曹写《红楼梦》是为了满足自己而不是满足读者,虽然有很多畅销书作家他们本来也爱好写作,他们的工作就是爱好,但是在取悦读者的前提下,就很难写出伟大的作品。

      一旦为了取悦别人,尤其是取悦大众,不但给创造增加了困难,而且很多时候还得将错就错,比如说:为了和以前的应用程序兼容,造成新的OS越来越庞大。

      另外,还在混口饭吃这个level上的,严格地讲不算中产阶级。中产阶级更是一种生活状态而不是收入多少,就像知识分子更是看其人生观和世界观,而不是看学位一样。。。

  4. J. Ma says:

    如果是爱好,往往是在追求快乐,满足自己。我同意你关于中产阶级和知识分子的判断标准,实际上我也是这么认为的,只是现实世界里,尤其在中国,真正够得上这种世界观/生活态度标准的还是少数。

    Anyway,期待更加精彩的下文。

  5. CTcoolL says:

    左大侠等你更新从期中考试前一直等到感恩节结束了

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s