但在推进研发工作中,这个理念却让我很伤脑筋。有相当一部分人把它解读成:用简单的思维、简单的方法做事。宁可在事后做成一个纷乱的局面,互相扯皮,不好不坏,也不肯在事前思索一下。
事实上,做好技术管理一点也不简单,比如立项、开发、测试、运营,哪个流程也不简单,而且看上去有些流程都是小题大做。但是反过来想:正因为有了这些流程,所以每个人的工作就简单了,只要把自己的一块工作做好就行了。
我也说一下我对“简单”理念的理解:
1)依赖可靠的技术,而不依赖不可靠的技术;
“技术”都是不可靠的,“模型”都是错误的。这么说也许很奇怪,但任何一个技术或者模型都有局限性,比如经典文本检索的idf模型,相信所有了解idf的人都会说“idf很有用”,也很有限。从idf提出以来,无数研究者在基于统计的文本处理技术上做研究,基于idf-df模型的公式也越来越长,但这个模型在工业产品中占的权重越来越低。
什么比“模型”可靠呢?是数据。可以说,对“模型”的优化方向,就是尽量不用模型。这也是Google一直在鼓吹的一个观点。Google现在的Research Director、以前的Director of Search Quality,Dr. Peter Norvig,在web search/mining 和machine learning等场合多次做大同小异的演讲,强调基于大规模数据的统计计算的重要性。
2)充分利用丰裕资源,而减轻对稀缺资源的压力;
线上服务器的cpu是稀缺资源,离线服务器的cpu是丰裕资源,所以要尽量把大量重复的计算移到线下,把结果传给线上,用“检索”代替“计算”;
硬盘是丰裕资源,内存是稀缺资源,所以要充分利用硬盘和cache,减轻内存压力;
人脑是稀缺资源,服务器是丰裕资源,所以……懒惰些吧!只用人脑去解决一定要人脑解决的事。
3)设计容易控制的逻辑,而避免不易控制的逻辑。
“程序流程”是不易控制的,“数据表”是容易控制的,所以“数据依赖”优于“控制依赖”。
简单可依赖这个理念换个名词就是“可依赖战略”,可依赖、可重复、可推广的事物通常伴随着形式的简单。
4)“简单与复杂定律”是“简单可依赖”的推论:把事情变复杂很简单,把事情变简单很复杂。孙 子说“上兵伐谋,其次伐交,其次伐兵,其下攻城”。“伐谋”者,运筹帷幄而已,最多不过派个人动动嘴皮子,相比于指挥千军万马作战,的确简单了很多;而一 个谋略的制定,需要大量信息,反复判断,相比于手起一刀人头落地,这个决断过程又复杂了许多。用简单的思维方式和简单的方法做出复杂的系统,成本极高而又 完不成需求,认为这就是“简单可依赖”。却不知这样的欠账一笔一笔积攒起来,到必须还的时候,就不简单了。