上个月,有个以前的同事问我:“你在的时候,为什么不把原来的系统都重做了,我们明明有实力啊”。 我说:“我们也做了很多事情嘛,系统稳定性、安全性、增加冗余、理清各模块职责、API通讯机制的建立、内部分层的整理。” 他说:“对,但我还是想知道,你为什么不把系统重做了呢?” 于是我问:“我离职之后,后来似乎多投了不少人重做系统?结果怎么样呢?” 他说:“结果,结果就是做业务要同时操作三四套系统……” 就我所见,把原有系统“推倒重来”的喜好不只程序员有,使用者更有。拿我几年前的那份工作来说,刚入职老大们就来跟我讨论系统重做的打算:需要多少人,多少钱,多长时间,能把原有系统推翻重来。毕竟大家每天都忍受切肤之痛:速度慢、经常出错、不安全、客户抱怨、架构糟糕…… 所以都想拿出“敢叫日月换新天”的劲头,来个干脆的彻底解决。 这种心情可以理解,但在我任内“重做系统”一直没有被提上日程,整个技术团队所做的都是“改良”的工作,内容就像我上面说的:系统稳定性、安全性、增加冗余、理清各模块职责、API通讯机制的建立、内部分层的整理。这个选择我有充分把握,而且在我看来,如果断然“推倒重来”,我未必能比继任者做得更好,甚至可能更糟糕,因为“推倒重来”绝不是那么简单的事情。 (more…)
屠呦呦女士获得了诺贝尔奖,这是开心的事情。 首先要对屠女士说声“恭喜”,然后要对屠女士说声“感谢”。至于其它忙不迭凑热闹,往自己脸上贴金的跳梁小丑们,即便他们身居庙堂,我们只能视若不见了。 当然,围绕屠女士获奖这条消息,无论是挺中医的,还是反中医的,都要出来大作文章。这几天朋友圈的刷屏,充分证明了这一点。我的朋友霍炬问了个问题:举全国之力,筛遍中医典籍,最终从某个角落找到蛛丝马迹,以西方科学的实证思路找到了治疗疟疾的特效药,这到底是证明中医有用呢,还是中医没用呢? 我答了一句话,霍师傅于是说:“你看,就不能跟你这样的人讨论”。 那么,我说了什么? (more…)
人的一生,当然有很多的时间去自己摸索和探究,做出自己的选择;其他人的教诲,很多时候并不会干涉选择,反而会让人少走弯路,更快捷抵达自己的目标。下面,我列了自己印象深刻的教诲(或者说“建议”),既是对各位的感谢,也希望通过分享让更多人受益。 技术是你的安身立命之本 这是大学时候中文系的王老师对我说的。当时我基本不怎么上计算机的专业课,晚自习看原版教材,白天在图书馆泡着,外加去中文系听课。对从小只接受过自然科学教育的人来说,不受约束阅读文史哲的魅力实在太大了,越看越入迷,加之当时网络管束很松,很容易在网上和大家聊得热血沸腾——只是,我从没有想过自己毕业了要干什么。 结果,又一次和王老师聊天时,他跟我说:“技术才是你的安身立命之本,文史哲只能当兴趣”。虽然我当时不理解这句话的真正含义,但还是照做了,又拨出很多时间学习计算机专业知识。当然,最终的理解还是王老师帮忙完成的。有一次上大课,他说:“面对人间的不义,作为知识分子我们当然有责任上阵。但是,上阵是有多种方式的。你们是希望赤膊上阵呢,还是披挂上阵?” 就在那一瞬间,我明白了“技术是安身立命之本”的含义,并受用至今。 (more…)
人是社会的动物,有人的地方就有社交,社交有多种形式,流行的有社团、QQ群、博客、微博、播客等等。随着技术的发展,会出现越来越多的新社交形式。不过我认为,无论形式如何变化,写作——更准确来说,是面向公众的严肃写作——是适应未来潮流的,高质量的社交,理由列在下面。 首先,愿意写作的都是认真思考的人。 老话说“教学相长”,通常来说,判断一个人是否真正懂得一门知识,就看他能不能向其他人讲明白;看一个人是否读懂了一本书,就看他能不能把书的内容复述清楚。很多时候我们以为自己“懂了”,真正讲出来,写下来,才发现有太多地方不懂、不顺。讲述和写作的过程,就是反复咀嚼自己所理解的,并依照一定逻辑重新组织整理的过程。具体比较起来,写作又胜于讲述,因为写作面向的人群更广,“当场解释”的机会也更少。所以说,愿意写作的人通常都有认真思考的态度。而高质量的社交,离不开认真的态度。 (more…)
你知道GPS是怎么发明的吗? 马里兰州罗瑞尔市坐落着约翰·霍普金斯大学的应用物理实验室(APL)的自助餐厅,长期以来都是就职于实验室的物理学家、数学家、技术人员聚会的热门地点。在1957年10月7日的午餐时间,大家讨论得异常热烈,因为苏联刚刚发射了第一颗人造卫星。 两位年轻的物理学家威廉·吉尔和乔治·韦芬巴赫也参与了讨论。他们首先确认这不是苏联的把戏,因为确实收到了来自太空的音乐。继而他们忽然想到,可以利用多普勒效应来计算卫星的移动速度(简单说,多普勒效应就是指信号源或接收器在运动状态时,相对速度与波形频率的固定关系。如果你路过鸣笛的消防车或救护车,会觉得随着它们的远离,鸣笛的音调也下降了)。结果,吉尔和韦芬巴赫用了几个小时,就实现了收听、测量、跟踪的功能。 过了几周,一个无组织的科学家团队在此基础上补充细节,研究关于轨道卫星的理论,提出了改善建议。之后,APL负责人批准了款项。于是APL的科学家们有了一整套算法,能够精密地测算出卫星的运动轨迹。 到了1958年春天,APL的副主任弗兰克·麦克卢尔把两个家伙叫去办公室,神神秘秘地问:如果卫星运动时,可以用固定的地面接收器来计算卫星的方位,那么反过来,卫星固定,地面接收器运动,能够测算出接收器的位置吗?这个问题没有人想过,也没有人评估过。经过几天的紧张计算,吉尔和韦芬巴赫确认:“反向定位”是可行的。 2年后,美国实现了“反向定位”系统,最初用于为潜艇确认位置。1983年,大韩航空的班机因为导航故障误入苏联领空被击落之后,美国向民用领域开放了整套系统。这,就是今天我们熟悉的GPS。 (more…)
在我上大学的时候,除去普通的英语课程,专业课程里还有一门《计算机英语》。当时大家的普遍认为,普通的“英语”是过四六级用的,《计算机英语》才是专业真正需要的。 等到工作了,我发现很多人都持这样的观点:程序员应该学好英语。这样才能方便地查找资料,迅速地学习最新的知识。换句话说,“学好英语”在很多人看来,就是是“学好专业英语”——这项要求已经很高了,我曾经在《程序员要怎样学英语》里提到,不但要能看懂文档,还要知道“黑屏”是blank screen,“死机”是system halt,否则查找就会很费力。 但是今天我想强调的是,对程序员来说,学好“英语”而不是“专业英语”是非常重要的。只学好专业英语,看得了技术文档,但那一大堆专业术语和概念可能会像陨石一样,没来由地坠落下来,只能生吞活剥地硬背。如果学好英语,你才会有融会贯通的感觉,知道那些术语和概念原来是从地里长出来的,底下连着根茎。 (more…)
我刚刚工作的时候,面试官曾经跟我说:好好干两年,可以迅速从程序员成长为工程师。当时我觉得太诧异了,从很多招聘启示来看,“程序员”不就等于“工程师”吗,只是“工程师”更好听一些而已。等我工作久了,才知道“程序员”和“工程师”真的是不一样的——程序员只写程序,工程师写能在现实世界中创造价值的程序。 可惜,很多软件开发人员未必清楚两者的差别,甚至做了很久也只算程序员而不算严格意义上的工程师。所以我就自己的观察和经验,谈谈程序员和工程师的差别。 (more…)