由网格编译工具Incredibuilder想到管理

今天在给一个新进公司的员工介绍我们日常使用的软件工具的时候我这么说道:

Incredibuild是一个网格编译工具,他可以帮助你利用其他人的机器的闲暇CPU来帮你构建VC的工程,让你的编译速度巨量提高......比如说你一个人单独构建的时候需要18分钟,而如果20台机器(我们目前有20台工作机)一起帮你编译就可以让编译时间下降到6分钟......

说到这里我猛然觉得这个数据不合常理,为什么20个人没有帮到你20倍的速度呢

仔细想了一下到底是什么原因导致只有3倍的效率提升,觉得用一些管理上话题的可以作为这个问题的隐喻

要管理好一个团队做好一件事情,有以下几个因素需要重点考虑

  1. 沟通:incredibuild 的工作机接受到委托机的cpp文件编译后把编译好的obj和pch,idb之类的临时文件传送回去,他们之间的网络带宽(沟通手段)就是一个瓶颈,改善沟通手段或者减少不必要的沟通都可以提高系统整体运行效率,比如说把局域网换成千兆网,或者去掉DEBUG信息PDB文件(非常大)的传送都可以提高整体编译速度
  2. 个人能力:总作机有些机器是双核可以贡献更多的编译能力,有些是老机器可以提供的编译能力就比较少,所以,呵呵,这个好像不用说,提升个人能力也有可能提高编译速度(前提是他不要是只配了一个10兆网卡就好)
  3. 个人的积极性:中午的时候构建会比较快,因为大家都出去吃饭了,机器都能用比较高的CPU时钟参与编译工作,而平时每个人自己有其他事情没有能全心全意的参与到这个事情里面去,所以,如果你能有效提高所有人对团队目标的优先级,合作会更容易一些
  4. 协调人: Incredibuild 安装起来必须有一个Coordinator协调人,他可以选择参与或者不参与具体的编译工作,但是没有他的协调,每个工作机不可能知道现在到底差哪个文件该编译,或者需要把文件传送回哪里,他需要处理的信息量也很大也不能出差错,所以每个项目经理,或许应该好好思考你是不是站在这么一个“协调人”的角度在思考你能为团队提供什么

关于效率,软件工程不是一个1+1就大于1的事情,所有管理书籍和软件工程的巨著都反复提及,但是到底是什么样的效率才是应该有的效率呢,我想说,朋友,以精确和并行处理而出名电脑来调度协调都尚且如此(20倍的资源只提供3倍的效率提升)所以类似关于3个人3个月,6个人需要半年,而20个人永远无法完成的就不只是一个笑话,而你也不必为了你那没有看过《人月神话》的老板对你没有带领5个人带来5倍效率提升的事情暴怒而自责,当然,前提是你作好了你该做的部分

你可能感兴趣的:(builder)