软件工程阅读材料之Google’s Hybrid Approach to Research

  如何在工作中把计算机科学的研究, 工程, 数学, 实验方法结合起来?这样一个问题看起来并没有非常明确的答案。我们很多时候可能在做计算机工程的过程中会不知不觉地应用到工程学和数学的知识,但要想做好软件工程,领会其精髓把握个中方法是很有必要的。

  那么,世界级的机构又是如何在工作中把计算机科学的研究, 工程, 数学, 实验方法结合起来的呢?我们可以通过Alfred Spector, Peter Norvig 和 Slav Petrov所写的《Google’s Hybrid Approach to Research》一篇文章一探究竟。这篇文章介绍了谷歌的一种创新型研究方法——混合研究方法,描述了在谷歌是如何组织计算机科学研究的,其重点关注的是如何使研究和开发成为整体,并讨论所用的方法带来的效益和风险。

  "To organize the world's information and make it universally accessible and useful",为了实现谷歌的这一宗旨,它本身便要支持和要求计算机科学领域中几乎所有学科的创新。因此,这种复杂的多领域结合决定了我们不能按照传统的思路将研究与开发割裂开去,谷歌对创新的关注、谷歌的服务模型、庞大的用户群、人才团队以及计算机科学研究进化的特征造成了谷歌的“混合研究模型”。

  那么,谷歌对于“混合研究模型”的定义是什么呢?

  “We thus define our hybrid research model as one that  aims to generate scientific and engineering advances in fields of import to Google, that  does so in a way that tends to factorize longer projects (perhaps with very challenging goals) into discrete, achievable steps (each of which may be of commercial value), where  we maximally leverage our cloud computing models and large user base to support in vivo research, where  we allow for the maximal amount of organizational flexibility so that we can support both projects that require some room to grow unfettered by current constraints, as well as projects that require close integration with existing products, and where we emphasize knowledge dissemination using a flexible collection of different approaches.”

  目标是在对谷歌非常重要的领域产生科学和工程的成果;项目在实现以上目标时,按照某种方式,试图将较长期的项目(或许具有非常挑战性的目标),分解成分开的、可实现的步骤(其中每个步骤都可能有商业价值);在项目中我们最大限度地利用我们的云计算模型和庞大用户群来支持在线研究;在项目中我们还允许最大限度的组织灵活性,这样我们就能够支持两类项目:需要一些成长的空间不受当前条件制约的项目和需要与现有产品紧密结合的项目;项目中我们利用不同方法的灵活组合,加强知识的扩散。

  简而言之,“混合研究方法”由如下五部分组成:

  “1. An advanced project in a product-focused team that, by virtue of its creativity and newness, changes the state of the art and thereby produces new research results.”

   我们在做工程项目开发的时候总免不了遭遇很多的问题与挑战,而解决问题的重要方式就是通过研究问题产生的研究结果将其一一解决。换句话说,这种方式下研究工作和产
品开发是在一个团队同时进行的。这很大程度上已经淡化了研究与开发的界限。

  “2. A project in the research group that results in new products or services.”

  研究结果与开发产品不再是分离的两个部分,而是一个有机的整体,在项目开发的过程中,研究结果会催生新的产品,两个在相互反馈中不断改进彼此丰富。

  “3. A project in the research group that creates new concepts and technologies, which are then applied to existing products or services.”

  不仅仅是研究成果这种看得见摸得着的东西会被应用到产品开发中,研究过程所展现出来的某些优秀的理念和技术也将在开发出来的产品中得到很好的展现。

  “4. A joint research project between an engineering team and the research group which is then used by that engineering team.”

  开发团队与研究团队的有机协作,能有效提高产品的更新效率和创新提高,这更进一步密切了研究与开发的联系。

  “5. A research project in an engineering team that is transitioned to the research group (and eventually becomes (2), (3) or (4) above).”

  在有些特定的情况下,项目开发团队与研究团队能够相互转换,这使得“混合研究方法”的精髓得到了很好的展现,由于两者联系密切,相互了解,有时候相互转化能更好地解决单一团队无法解决的许多问题。

  我们姑且不讨论“混合研究方法”本身存在的风险问题,毕竟任何一种方法都不能做到尽善尽美,我们也很难界定其是否算是成功的。让我们回到最初的问题:如何在工作中把计算机科学的研究, 工程, 数学, 实验方法结合起来?以我们现在做的软工项目为例,借鉴谷歌的“混合研究方法”,我认为在学霸网站的开发过程中,我们应当充分利用工程学数学等不同领域多角度的研究方法对我们做出来的东西不断进行分析迭代,从问题中不断发掘解决方法,反复迭代地探索基础的研究思路,从M1到M2甚至到Mn的持续创新提高才能保持产品的生命力。

posted @ 2012-12-12 02:08  CodingCook  阅读(408)  评论(0编辑  收藏  举报