提到著名的 Lochead-Martin 公司, 大家都会想到 F16 F22. 而这些世界知名的飞机,都是出自于这个公司一个很小的高级研究部门, Skunk Works(中文叫臭鼬工厂).  在英语中, skunkworks 是一个词, 用来形容高度灵活, 高度自治, 从事高级项目的小组.

如同莎士比亚说的, 成功的公司/团队都是一样的. 当年施乐的Polo Alto 实验室, 美国AT&T的贝尔实验室, 曼哈顿计划. 都是专业人员高度自治的(相对)小团队. 他们成功的关键是什么呢, 下面是臭鼬工厂的著名的Kelly 14 原则. 通过这个或许能窥斑见豹: (http://www.lockheedmartin.com/aeronautics/skunkworks/14rules.html)

  1. The Skunk Works manager must be delegated practically complete control of his program in all aspects. He should report to a division president or higher. [项目经理应该有项目的全部管理权. 他应该向部门总管或者以上的领导负责. 高度自治, 扁平责任链, 避免小官僚干扰]

  2. Strong but small project offices must be provided both by the military and industry. [小而强的团队是军方或者工业制胜的关键]

  3. The number of people having any connection with the project must be restricted in an almost vicious manner. Use a small number of good people (10% to 25% compared to the so-called normal systems). [与项目有关的人的总数应该严格控制. 使用少而牛的人(与传统相比, 只要10%-25%的人)]

  4. A very simple drawing and drawing release system with great flexibility for making changes must be provided. [原型极其重要]

  5. There must be a minimum number of reports required, but important work must be recorded thoroughly.[只走重要流程]

  6. There must be a monthly cost review covering not only what has been spent and committed but also projected costs to the conclusion of the program. Don’t have the books ninety days late and don’t surprise the customer with sudden overruns. [每月的成本计算和估算都要做, 以给客户最小惊奇 ]

  7. The contractor must be delegated and must assume more than normal responsibility to get good vendor bids for subcontract on the project. Commercial bid procedures are very often better than military ones. [模块化负责, 而且引入竞争招标]

  8. The inspection system as currently used by the Skunk Works, which has been approved by both the Air Force and Navy, meets the intent of existing military requirements and should be used on new projects. Push more basic inspection responsibility back to subcontractors and vendors. Don’t duplicate so much inspection. [测试这个事情到细化到最低层次]

  9. The contractor must be delegated the authority to test his final product in flight. He can and must test it in the initial stages. If he doesn’t, he rapidly loses his competency to design other vehicles. [各个模块都要有自己单元测试的权利 而且从一开始就要做测试]

  10. The specifications applying to the hardware must be agreed to well in advance of contracting. The Skunk Works practice of having a specification section stating clearly which important military specification items will not knowingly be complied with and reasons therefore is highly recommended.[如果有某些不能满足的需求 就提前说明]

  11. Funding a program must be timely so that the contractor doesn’t have to keep running to the bank to support government projects. [一次给足钱]

  12. There must be mutual trust between the military project organization and the contractor with very close cooperation and liaison on a day-to-day basis. This cuts down misunderstanding and correspondence to an absolute minimum. [互相信任 日常接触]

  13. Access by outsiders to the project and its personnel must be strictly controlled by appropriate security measures.[注意机密]

  14. Because only a few people will be used in engineering and most other areas, ways must be provided to reward good performance by pay not based on the number of personnel supervised.[奖励 激励]

有人肯定觉得这个东西地球人都知道, 不要再次强调, 其实不然, 比如说Google, 就再次强调了.

Google 的12条开发程序的准则

原文:

  1. All developers work out of a single source depot; shared infrastructure!

  2. A developer can fix bugs anywhere in the source tree.

  3. Building a product takes 3 commands (“get, config, make”)

  4. Uniform coding style guidelines across company

  5. Code reviews mandatory for all checkins

  6. Pervasive unit testing, written by developers

  7. Unit tests run continuously, email sent on failure

  8. Powerful tools, shared company-wide

  9. Rapid project cycles; developers change projects often; 20% time

  10. Peer-driven review process; flat management structure

  11. Transparency into projects, code, process, ideas, etc.

  12. Dozens of offices around world => hire best people regardless of location

粗译文:

1:所有程序员基于一个代码库工作,所以整个架构是共享的。

2:有了第一条,程序员可以修改任何一颗代码树上的 bug。

3:自动编译

4:统一的代码格式。

5:对所有的check in 强制要求代码评审

6:程序员写单元测试成一种习惯

7:单元测试始终被运行,遇到问题发封邮件给你

8:强大的工具,要在全公司分享

9:快速的项目开发周期;开发人员经常变更项目;20%时间.

10: 同伎评审,扁平管理

11:项目,代码,过程,点子等等都是透明的

12:全世界都有很多办公室,用最棒的人,不管他们在哪里

我们认真比照这两个列表, 就会发现, 一个做互联网, 一个做战斗机, 道理都是相通的.

或许看完这个你可能会觉得踌躇满志, 觉得搞小团队做高级项目的所有的道理都了然于心了. 其实这些做到是很难的, 不相信的童鞋可以买一本研读, 看看那些创始人如何做错了很多事情然后在一件关键的事情上做对了成功了的, 他们又是怎么慢慢意识到这些原则的.